Arkanoid
简介
你好!这是我第二篇blog,主要关于做Arkanoid的流程和难点,下面作简短介绍。
项目地址
https://gitee.com/brunozzz/arkanoid
游戏界面及特性
该游戏已完成 生命值、积分、随机掉落debuff道具、阶段性加快等特性,restart键仍有bug尚未解决。
关键介绍
关于小熊已经写好的代码就不介绍了,主要还是从自己遇到的难点入手。
首先是关于小球和窗口碰撞函数,由于碰撞函数过长,截取其中较为代表性的来介绍:
/**
* Method: Check Collision
* -----------------------
* 检查小球是否和墙相撞,如果相撞,改变小球运动方向
*/
public void checkCollision() {
// 小球碰到上下两侧的墙,竖直反弹
if (hitBottomWall()) {
if (hp > 0) {
hp--;
remove(ball);
remove(livesCount);
livesCount = new GLabel("HP:" + hp);
livesCount.setFont(font); //更改字体
add(livesCount, 300, 30);
makeBall();
waitForClick();
} else if (hp == 0) {
over = false;
add(new GLabel("GAME OVER", 270, 400));
}
此处函数有点乱,主要是写了小球击中窗口底部后的动作、生命值和游戏结束方面。
/**
* Method: Hit Bottom Wall
* -----------------------
* 判断小球是否击中了底部边界
*/
boolean hitBottomWall() {
return ball