10+31=100小组项目第二周总结报告
10+31=100小组项目第二周总结报告
项目进展
• 在图书馆及网上查找了用java语言编程设计项目的相关书籍资料,基本了解了一个项目由设计到实现的基本过程。
- Java面向对象程序设计(第2版)北京邮电大学出版社:张桂珠 刘丽 陈爱国编写;
- Java程序设计实例教程[M]. 北京:冶金工业出版社:毕广吉编写;
- Java面向对象程序设计[M]. 北京:清华大学出版社:王保罗编写;
• 结合书上的实例及相关代码,在总结前面同学成果的基础上,搭建好了项目的基本框架,定义了两个大类,即:MainClass
和ControlSnake
,设计思路清晰,已实现的代码片段如下:
package resource;
import java.awt.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class MainClass extends JFrame {
ControlSnake control;
Toolkit kit;
Dimension dimen;
public static void main(String[] args) {
new MainClass("my snake");
}
public MainClass(String s) {
super(s);
control = new ControlSnake();
control.setFocusable(true);
kit = Toolkit.getDefaultToolkit();
dimen = kit.getScreenSize();
add(control);
setLayout(new BorderLayout());
setLocation(dimen.width / 3, dimen.height / 3);// dimen.width/3,dimen.height/3
setSize(FWIDTH, FHEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public static final int FWIDTH = 315;
public static final int FHEIGHT = 380;//限定游戏中贪吃蛇的活动范围
}
//控制贪吃蛇行进的代码
public ControlSnake() {
snakeBody = 1;
str = "上下左右方向键控制 P键暂停...";
str1 = "现在的长度为:" + snakeBody;
key = true;
flag = 1;
speed = 700;
rand = new Random();
list = new ArrayList<Point>();
listBody = new ArrayList<Point>();
x = 5;
y = 5;
list.add(new Point(x, y));
listBody.add(list.get(0));
dx = 10;
dy = 0;
fx = rand.nextInt(30) * 10 + 5;// 2
fy = rand.nextInt(30) * 10 + 5;// 2
setBackground(Color.WHITE);
setSize(new Dimension(318, 380));
final Timer time = new Timer(speed, this);
time.start();
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == 37) {
dx = -10;
dy = 0;
} else if (e.getKeyCode() == 38) {
dx = 0;
dy = -10;
} else if (e.getKeyCode() == 39) {
dx = 10;
dy = 0;
} else if (e.getKeyCode() == 40) {
dx = 0;
dy = 10;
} else if (e.getKeyCode() == 80) {
if (flag % 2 == 1) {
time.stop();
}
if (flag % 2 == 0) {
time.start();
}
flag++;
}
}
});
}
程序的其余功能如:实现计算出现在蛇身的长度、如何让玩家重新开始等,有待实现,只需完善以下自定义函数的功能即可;如:paint(Graphics g)
,actionPerformed(ActionEvent e)
等;
•代码编写中主要用到的API如下:
setBackground(Color.WHITE)
time.start()
getKeyCode()
setSize(new Dimension( , ))
rand.nextInt( )
add()
...
•对需要用到的API进行功能、使用方法的查询,如图:
•将相关代码片段用IDEA进行了PUSH,截图如下:
成员贡献
• 20145210 姚思羽:主要进行了代码的编写、框架的架构;
• 20145231 熊梓宏:主要进行博客的编写、代码托管、代码功能的完善;
• 两人共同完成:学习并调用新的API,对相关代码进行了理解总结,查找并学习了相关资料。
改进计划
本周基本实现了贪吃蛇项目的框架构建,在未来几周里,我们将完善代码,使代码完整可运行,且实现游戏界面友好,体现趣味性,并将完成代码测试,同时充分实践之前几次实验中的代码重构、及单元测试,体会他们带来的好处,同时,我们遵守了TDD的编码节奏,从伪代码着手,在完成初步的产品代码后,会及时跟进测试代码,不断完善我们的项目。