10+31=100小组项目第二周总结报告

10+31=100小组项目第二周总结报告

项目进展

• 在图书馆及网上查找了用java语言编程设计项目的相关书籍资料,基本了解了一个项目由设计到实现的基本过程。

  • Java面向对象程序设计(第2版)北京邮电大学出版社:张桂珠 刘丽 陈爱国编写;
  • Java程序设计实例教程[M]. 北京:冶金工业出版社:毕广吉编写;
  • Java面向对象程序设计[M]. 北京:清华大学出版社:王保罗编写;

• 结合书上的实例及相关代码,在总结前面同学成果的基础上,搭建好了项目的基本框架,定义了两个大类,即:MainClassControlSnake,设计思路清晰,已实现的代码片段如下:


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的编码节奏,从伪代码着手,在完成初步的产品代码后,会及时跟进测试代码,不断完善我们的项目。

posted @ 2016-05-22 22:17  10+31=100  阅读(121)  评论(0编辑  收藏  举报