2024年5月16日发(作者:佳能打印机驱动下载官网)
ELECTRONICS WORLD
・
探索与观察
基于Java多线程的弹球游戏程序
福建船政交通职业学院信息与智慧交通学院 林恒建
Java程序设计语言提供了用户使用的多任务并发执行的能
力的支持。处在可执行状态中的应用程序称为进程。线程是比
进程更小的执行单元,一个进程可以分为若干个线程,形成多
条执行路线,完成多项操作。弹球游戏程序应用Java多线程,完
成不同颜色、不同运行速度、不同大小的弹球,每个弹球的运
动由一个各自独立的线程控制。在多线程教学中,为了能够更好
地实现教学目标以及教学工作的开展。通过弹球游戏图形化编
程,降低编程难度,减少挫折感、激发学生的学习积极性。
1 引言
弹球游戏程序应用Java语言提供的多线程支持,在程序
中完成多种弹球的实现。通过形象的图形化编程,降低编程
难度,减少挫折感、激发学生的学习积极性,并且能更好地
实现教学目标的设计以及教学工作的开展。
2 弹球游戏的实现
弹球游戏的实现的主要功能:
左上9球:从左上方弹出9个颜色随机、大小速度相同、间隔
时间90-590ms的小球;
右上单球:从右上方弹出1个颜色、大小、速度随机的小球;
左下7彩球:从左下方弹出7个大小、速度、间隔时间相同的7
彩小球;
右下9球:从右下方弹出9个颜色、大小、速度、间隔时间相
同的小球;
梦幻9球:
产生9个颜色、发球位置、大小、速度随机的
小球;
昨夜星辰:产生9个发球位置、大小、速度随机的白色小球;
其他说明:弹球线程数量为运动小球数量,当线程数量超过
200,建议不要再增加弹球数量,窗口标题显示运动小球数量,小
球弹出后,大约1min自动消失。
多线程弹球的实现:
class Ball extends Thread {
private Color color;
private int xsize = 10;//弹球大小
private int ysize= 10;
private int x = 0;//弹球位置
private int y = 0;
private int dx = 2;//弹球移动步长
private int dy = 2;
private Graphics g;
// 设置标题要用到
private Bounce b;
•
18
•
public Ball(Bounce b, Color co) {
color = co;
this.b = b;
g = phics();
}
//画出弹球
public void drawD() {
or(color);
Mode(kground());
g.fillOval(x, y, xsize, YSIZE);
}
public void draw() {
or(color);
g.fillOval(x, y, xsize, ysize);
Mode(kground());
}
//按步长移动弹球,在窗体边界回弹
public void move() {
g.fillOval(x, y, xsize, ysize);
x += dx;
y += dy;
if (x < 0) {
x = 0;
dx = -dx;
}
// 只在每次事件发生时重新计算窗体内画布
canvasWidth,canvasHeight
// 让运动更流畅。
if (x + XSIZE >= canvasWidth) {
x = canvasWidth - xsize;
dx = -dx;
}
if (y < 0) {
y = 0;
dy = -dy;
}
if (y + YSIZE >= canvasHeight) {
y = canvasHeight - ysize;
dy = -dy;
}
g.fillOval(x, y, xsize, ysize);
}
的宽和高
ELECTRONICS WORLD
・
探索与观察
public void run() {
threadCounter++;//计算线程数量
//根据线程数是否超过200,显示不同的标题。
if (threadCounter > 200) {
} else {
le("梦幻七彩弹球--线程数量:" + threadCounter+ " 线程数量已超过200,不要再增加弹球数量。");
le("梦幻七彩弹球--线程数量:" + threadCounter);
}
draw();
for (int i = 1; i <= 3500; i++) {
move();
try {
(15);
} catch (InterruptedException e) {
}
}
Mode(kground());
g.fillOval(x, y, xsize, ysize);
//当一个线程运行结束,减少线程数,并在标题中动态显示。
threadCounter--;
if (threadCounter > 200) {
} else {
le("梦幻七彩弹球--线程数量:" + threadCounter + " 线程数量已超过200,不要再增加弹球数量。");
le("梦幻七彩弹球--线程数量:" + threadCounter);
}
if (threadCounter == 0)
le("梦幻七彩弹球");
e();
}
随机设置弹球颜色
c = new Color((float) (), (float) (),
(float) ());
b = new Ball(this, c);
随机设置弹球大小,球的直径:size = (int) (100 * () + 1);
ze(size);ze(size);
随机发球位置, -Size(球的直径)确保球不会部分落在右、下边界外。
((int) ((canvasWidth - size) * ()));
((int) ((canvasHeight - size) * ()));
}
设置x,y,dx,dy, xsize, ysize代码省略。
3 结论
弹球程序应用Java语言提供的多线程支持,在程序中完成多种弹球的实现。特别是对线程数进行计算和显示,让学生感受线程数对程序
运行速度的影响,大部分计算机在线程数超过200个时会出现卡顿,通过形象的图形化编程,降低编程难度,减少挫折感、激发学生的学习
积极性,并且能加深对图形编程、可视化编程的理解,实现教学目标的设计以及教学工作的开展。
作者简介:林恒建(1965—),男,福建福州人,学士,讲师,研究方向:图形编程。
•
19
•
发布者:admin,转转请注明出处:http://www.yc00.com/num/1715790504a2672106.html
评论列表(0条)