一、学习Java视频,尝试做BallGame小游戏,实验笔记如下:
1.准备工作:创建项目Mypro01,创建与src文件夹同级的以images命名的文件夹,在其内存入图片:ball.png、desk.png
2.实验过程:
版本1:实验目的:显示窗口;
代码:1.先导入两个包;
import java.awt.*;
import javax.swing.*;
2. 窗口加载模块;LanchFrame;
public class BallGame extends JFrame{
void launchFrame(){
setSize(100,100);
setLocation(100,100);
setVisible(true);
}
public static void main(String args []){
//main方法是程序的入口
System.out.println("welcome java");
BallGame game=new BallGame();
game.launchFrame();;
}
}
运行结果如图:
版本2:实验目的:加载两个图片到窗口上;
代码:1.引入image里两张素材图;
Image ball=Toolkit.getDefaultToolkit().getImage("image/ball.png");//路径
Image desk=Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
2.配置窗口;
//画窗口的配置方法paint
public void paint(Graphics g){
System.out.println("画了一次窗口");//方法执行一次显示一次
g.drawImage(desk,0,0,null);
g.drawImage(ball,100,100,null);
}
运行问题:在直接替换ball.png后运行窗口出现图片加载失败的情况,百度搜索未发现合适的解决方法,后关闭IDEA并重新下载ball.png作为元素即解决;但此时ball.png元素size太大,后面解决此问题。
运行结果如图:
版本3:实验目的:使小球图片水平动起来并实现边界检测,实现动画;
代码:1.实现窗口的不断重画;
//窗口重画
while (true) {
repaint();
try {
Thread.sleep(40);//40ms,1s=1000ms,大约1s画20次窗口;
} catch (Exception e) {
e.printStackTrace();
}
}
}
while(true)部分在输入过程中报错(Unexpected token),检查后发现①输入全角符号,已更改;②该部分输入位置错误,应在launchFrame方法内输入,已更改;错误更正完毕;
2.用变量代替小球(坐标);
double x=100;//小球的横坐标;
double y=100;//纵坐标;
......
x=x+1;//每秒调用25次,调用一次小球横坐标+1;连续调用即实现实现人眼中动画效果;
3.实现边界检测:小球运动时不会超出桌子边界;(由于找不到合适直径的png小球图片,运行结果有点不合适0.0)
前面添加一个布尔变量;
Boolean right=true;
......
if(right){
x=x+10;
}else{
x=x-10;
}
if(x>900-60-50){//40为桌边到运行窗口的距离,30为范例中白色小球的直径;
right=false;
}
if(x<60){
right=true;
}
x=x+1;//调用1次横坐标+1;
}
运行问题:边界数据要不断调整
运行结果:可以实现边界检测,小球动画运行成功;
版本4:实验目的:使小球沿任意角度运行,实现动画;
代码:1.实现窗口的不断重画;删掉小球水平运动及其边界检测代码;
double degree=3.14/3;//弧度即60度;
x = x+ 10*Math.cos(degree);
y = y+ 10*Math.sin(degree);
运行问题:①小球无法按照预定路径运动;
解决方法:①main方法中类名输入错误,将BallGame game=new BallGame();改为
BallGame2 game=new BallGame2();即可
运行结果:小球按照60度路径运动但无法检测边界;
2.实现小球边界检测并回弹效果;
//上下边界检测;
if(y>500-40-20-15||y<40+25){
degree=-degree;//关于X轴对称;
}
//左右边界检测;
if(x>856-60||x<50){
degree=3.14-degree;//关于Y轴对称;
}
运行问题:无法准确分析出边框坐标,导致小球在边界处有误差;
运行结果:边界可成功检测,但无法测出准确数据;
二、基本知识今天没看,下午背教资简答
浙公网安备 33010602011771号