- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
练习96 抓不住的方块.doc
练习96 抓不住的方块
本例知识点 一句话讲解 新学知识 Graphics类 制作方块 使用java.awt.Event类 响应鼠标动作 已学知识 Color类 设置方块的颜色 使用int类 记录光标的位置 一、练习具体要求
本练习制作抓不住的方块的实例。如图96-1所示,程序执行后,创建一个含有方块的面板,用户可以通过鼠标抓取方块,但是,无论用户怎样努力,方块总是朝着与鼠标运动相反的方向运动,这就是抓不住的方块。
二、程序及注释
(1)编程思路:首先,本练习因为要制作抓不住的方块的实例,所以首先要制作界面中的方块,先通过Graphics类的对象函数g.setColor(Color.red)设置方块的颜色为红色,然后通过语句g.drawRect(0, 0, size().width - 1, size().height - 1)和g.drawRect(mx, my, (size().width/10) - 1, (size().height/10) - 1)绘制出两个矩形,这样就完成了方块的制作。然后,为了实现“抓不住方块”的效果,所以要响应鼠标事件,通过函数public boolean mouseDown(java.awt.Event evt, int x, int y响应按下鼠标的动作,通过光标位置的判断来避免鼠标抓到界面中的方块。
(2)程序实现及注释:
//MouseTrack.java
import java.awt.Graphics;
import java.lang.Math;
import java.awt.Color;
public class MouseTrack extends java.applet.Applet {
//变量声明
int mx, my;
int onaroll;
//初始化小程序
public void init() {
onaroll = 0;
resize(500, 500);
setBackground(Color.black);
}
//画屏函数
public void paint(Graphics g) {
g.setColor(Color.red);
g.drawRect(0, 0, size().width - 1, size().height - 1);
mx = (int)(Math.random()*1000) % (size().width - (size().width/10));
my = (int)(Math.random()*1000) % (size().height - (size().height/10));
g.drawRect(mx, my, (size().width/10) - 1, (size().height/10) - 1);
}
//响应按下鼠标
public boolean mouseDown(java.awt.Event evt, int x, int y) {
requestFocus();
if((mx x x mx+size().width/10-1) (my y y my+size().height/10-1)) {
if(onaroll 0) {
switch(onaroll%4) {
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
break;
}
onaroll++;
if(onaroll 5)
getAppletContext().showStatus(Youre on your way to THE HALL OF FAME:
+ onaroll + Hits!);
else
getAppletContext().showStatus(YOURE ON A ROLL: + onaroll + Hits!);
}
else {
getAppletContext().showStatus(HIT IT AGAIN! AGAIN!);
onaroll = 1;
}
}
else {
getAppletContext().showStatus(You hit nothing at ( + x + , + y + ), exactly);
onaroll = 0;
}
repaint();
return true;
文档评论(0)