常州大学本科生毕业设计(论文)
游戏音乐算法流程图
背景音乐播放控制的算法流程如图5-4所示: 开始 背景音乐播放控制线程 否 是否处在 是否接受到 暂停状态 恢复信息 是 否 是 播放背景音乐 接受到停止信息
结束
图5-4 背景音乐播放控制流程图
第 20 页 共41页
20
5.4
常州大学本科生毕业设计(论文)
6详细设计
6.1主界面设计
由于这个程序的界面并不是很复杂,所以用到的控件也不多,主要核心内容还是后台的代码设计。根据数组元素值,来显示图片。
①色彩上:总结人们的视觉习惯和色彩对眼睛的健康影响,决定对于画布采用黑色背景,神秘而大方;左边的控制区中墙体采用类似砖头的颜色的图片,配合左边纯黑的背景,是的空间显得更大更有立体感。
②功能上:背景就是窗体,右侧是一个groupbox[18]控件,用来显示生命值和得分情况, 游戏主界面截图,如图6-1所示:
图6-1开始界面
游戏主界面的程序,代码如下:
public class Packman extends JApplet implements KeyListener, ActionListener{ private Ticker t;//定义了一个ticker的对象t
private Image offScreenImage;//定义了一个图片对象offScreenImage //定义吃豆者
private Player player; //定义四个敌人
private Enemy Red, Cyan, Pink, Orange; private int health, Scores; //健康值与分数 private boolean gameover; //游戏是否结束
第 21 页 共41页
21
常州大学本科生毕业设计(论文)
private boolean gameStarted; //游戏是否开始 private int alarmTime;//敌人失去反抗的时间 private boolean alarm;//是否失去反抗能力 private boolean UP_TYPED, DOWN_TYPED, LEFT_TYPED, RIGHT_TYPED;//是否能够向上,向下,向左,向右 private Image[] WALL; //定义墙 private AudioClip[] SOUND;//定义音乐 private Wall[] wall;//定义墙的数组 private Gold[] gold; //定义豆子的数组 private int gameFlow;
private boolean levelComplete;//是否升级
g.setColor(Color.white);//设置颜色为白色 g.drawString(\生命: \ g.drawString(\积分: \ if(!gameStarted){//游戏没开始
g.setColor(Color.cyan);//绘制开始这几个字的颜色 g.drawString(\ 按空格开始\ 153, 273);
}
if(gameover && gameFlow > 100){ g.setColor(Color.red); g.drawString(\游戏结束\ 179, 238); } }
public void keyPressed(KeyEvent e)//定义一个键盘输入 if(e.getKeyCode() == KeyEvent.VK_SPACE){ SOUND[6].play(); gameStarted = true; //点击“空格”,游戏开始 }
if(e.getKeyCode() == KeyEvent.VK_UP){
player.ChangeDirection(0); //点击方向键,执行相应的操作 UP_TYPED = true;
DOWN_TYPED = false; LEFT_TYPED = false;
RIGHT_TYPED = false;
第 22 页 共41页
22
常州大学本科生毕业设计(论文)
}
if(e.getKeyCode() == KeyEvent.VK_DOWN){ player.ChangeDirection(1); UP_TYPED = false; DOWN_TYPED = true; LEFT_TYPED = false; RIGHT_TYPED = false; }
if(e.getKeyCode() == KeyEvent.VK_LEFT ){ player.ChangeDirection(2); UP_TYPED = false; DOWN_TYPED = false; LEFT_TYPED = true; RIGHT_TYPED = false; }
if(e.getKeyCode() == KeyEvent.VK_RIGHT){ player.ChangeDirection(3); UP_TYPED = false; DOWN_TYPED = false;
LEFT_TYPED = false; RIGHT_TYPED = true; } }
public void keyReleased(KeyEvent e){} public void keyTyped(KeyEvent e){} public void update(Graphics g) { Graphics offScreenGraphics; if (offScreenImage == null) {
offScreenImage = createImage(545, 482); //返回创建一幅用于双缓冲的、可在屏幕外绘制的图像。
//如果组件是不可显示的,则返回值可能为 null。 }
offScreenGraphics = offScreenImage.getGraphics();
offScreenGraphics.setColor(Color.white); offScreenGraphics.fillRect(0, 0, 545, 482);
第 23 页 共41页
23
相关推荐: