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

项目进展

• 继续查看相关的书籍和资料:

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

• 基本完成了项目的产品代码,代码如下:


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/3setSize(FWIDTH, FHEIGHT);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setResizable(false);setVisible(true);}public static final int FWIDTH = 315;public static final int FHEIGHT = 380;//限定游戏中贪吃蛇的活动范围
}

package resource;import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.Timer;
import java.util.Random;@SuppressWarnings("serial")
public class ControlSnake extends JPanel implements ActionListener {Random rand;ArrayList<Point> list, listBody;String str, str1;static boolean key;int x, y, dx, dy, fx, fy, flag;int snakeBody;int speed;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;// 2fy = rand.nextInt(30) * 10 + 5;// 2setBackground(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++;}}});}public void paint(Graphics g) {g.setColor(Color.WHITE);g.fillRect(0, 0, 400, 400);g.setColor(Color.DARK_GRAY);g.drawLine(3, 3, 305, 3);g.drawLine(3, 3, 3, 305);g.drawLine(305, 3, 305, 305);g.drawLine(3, 305, 305, 305);g.setColor(Color.PINK);for (int i = 0; i < listBody.size(); i++) {g.fillRect(listBody.get(i).x, listBody.get(i).y, 9, 9);}g.fillRect(x, y, 9, 9);g.setColor(Color.ORANGE);g.fillRect(fx, fy, 9, 9);g.setColor(Color.DARK_GRAY);str1 = "现在的长度为:" + snakeBody;g.drawString(str, 10, 320);g.drawString(str1, 10, 335);}public void actionPerformed(ActionEvent e) {x += dx;y += dy;if (makeOut() == false) {JOptionPane.showMessageDialog(null, "重新开始......");speed = 700;snakeBody = 1;x = 5;y = 5;list.clear();list.add(new Point(x, y));listBody.clear();listBody.add(list.get(0));dx = 10;dy = 0;}addPoint(x, y);if (x == fx && y == fy) {speed = (int) (speed * 0.8);// 速度增加参数if (speed < 200) {speed = 100;}fx = rand.nextInt(30) * 10 + 5;// 2fy = rand.nextInt(30) * 10 + 5;// 2snakeBody++;// 2} // 2repaint();}public void addPoint(int xx, int yy) {// 动态的记录最新发生的50步以内的移动过的坐标// 并画出最新的snakeBodyif (list.size() < 100) {// 蛇身长度最长为100list.add(new Point(xx, yy));} else {list.remove(0);list.add(new Point(xx, yy));}if (snakeBody == 1) {listBody.remove(0);listBody.add(0, list.get(list.size() - 1));} else {listBody.clear();if (list.size() < snakeBody) {for (int i = list.size() - 1; i > 0; i--) {listBody.add(list.get(i));}} else {for (int i = list.size() - 1; listBody.size() < snakeBody; i--) {listBody.add(list.get(i));}}}}public boolean makeOut() {if ((x < 3 || y < 3) || (x > 305 || y > 305)) {return false;}for (int i = 0; i < listBody.size() - 1; i++) {for (int j = i + 1; j < listBody.size(); j++) {if (listBody.get(i).equals(listBody.get(j))) {return false;}}}return true;}
}

•代码编写中主要用到的API如下:

setBackground(Color.WHITE)

time.start()

getKeyCode()

setSize(new Dimension( , ))

rand.nextInt( )

add()...

•将相关代码片段用IDEA进行了PUSH,截图如下:

成员贡献

• 20145210 姚思羽:继续进行代码的编写、框架的架构;

• 20145231 熊梓宏:继续进行博客的编写、代码托管、代码功能的完善;

• 两人共同完成:学习并调用新的API,对相关代码进行了理解总结,查找并学习了相关资料。

改进计划

本周在两人的共同努力下,我们完成了这个小项目的产品代码部分的编写,有了初步的运行结果,接下来的几周里,我们还将不断完善代码,利用测试代码改进我们的项目。

转载于:https://www.cnblogs.com/1031ysysxzhdbb/p/5540557.html

10+31=100小组项目第三周总结报告相关推荐

  1. 10+31=100小组项目第五周总结报告

    项目进度 本周我们将之前未理解的代码,重新进行了理解消化,并且将完整代码加入了注释,代码如下: package resource;import java.util.*; import java.awt ...

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

    10+31=100小组项目第二周总结报告 项目进展 • 在图书馆及网上查找了用java语言编程设计项目的相关书籍资料,基本了解了一个项目由设计到实现的基本过程. Java面向对象程序设计(第2版)北京 ...

  3. 10+31=100小组项目总结报告

    项目实现情况 我们小组按照之前的进度规划,每周基本都能完成我们小组的目标: 第一周确定了项目内容,并完成了项目的总体规划: 第二周在图书馆及网上查找了用java语言编程设计项目的相关书籍资料,基本了解 ...

  4. 10+31=100小组项目第四周总结报告

    项目进度 代码已经编写完成,对于代码也基本立即掌握的差不多了,只有一小部分仍然存在问题,还有待解决. public void addPoint(int xx, int yy) {// 动态的记录最新发 ...

  5. 小组项目第三周:后端数据——模拟炒股系统

    小组项目第三周:后端数据--模拟炒股系统   个人工作   本周实现了一个额外功能:模拟炒股系统.   每个论坛用户拥有一个模拟炒股用户,可以实现买入.卖出委托,由程序后台实时获取股票价格,判断委托是 ...

  6. 10+31=100团队项目简介

    项目名称 贪吃蛇小游戏 项目内容 我们的想用java语言设计一款小游戏,初步想法是设计一个贪吃蛇小游戏,实现食物无规律移动,蛇吃到食物后蛇身加长,同时蛇身可以随意进行拐弯 项目目标 食物无规律移动 蛇 ...

  7. 5233杨光--第三周实验报告

    信息的表示和处理 一.数字表示 1. 无符号数:编码基于传统的二进制表示法表示大于或等于零的数字. 2. 补码:编码是表示有符号整数的最常见方法,可以是正或者是负的数字. 3. 浮点数:编码是表示实数 ...

  8. 2017-2018-1 20155228 《信息安全系统设计基础》第三周学习总结

    2017-2018-1 20155228 <信息安全系统设计基础>第三周学习总结 教材学习内容总结 十六进制表示法 一个字节由8位组成.在二进制表示法中,它的值域是0000000-1111 ...

  9. Interview:算法岗位面试—10.31下午上海某银行总部公司(二面,四大行之一)之项目简介、比赛介绍、某个比赛的过程

    Interview:算法岗位面试-10.31下午上海某银行总部公司(二面,四大行之一)之项目简介.比赛介绍.某个比赛的过程 导读:明天还有事,更多详细内容后期再更新哈 目录 项目简介.比赛介绍.某个比 ...

最新文章

  1. signature=89b7a6bcfac55abae5ac369dafee29f4,Capecitabine
  2. linux 中ans 用法,JSON简介以及用法汇总
  3. Paddle.js PaddleClas 实战 ——『寻物大作战』AI 小游戏
  4. 《3D数学基础》实践1 向量类代码分析
  5. java中什么表示打印_在java中打印对象时会发生什么
  6. txt如何单独单独选择一列_散列| 单独链接以解决冲突
  7. emoji .png_根据我对3.5GB聊天记录的分析,Emoji开发人员使用最多
  8. 信息学奥赛一本通(2038:【例5.5】最大数位置)
  9. 如何使用Bootstrap Modal和jQuery AJAX创建登录功能
  10. centos8安装mysql_Linux宝塔面板安装
  11. AI时代,运维和测试岗位如何开启第二春?
  12. 学习使用autotools
  13. Android Q分区存储权限变更及适配
  14. 你一定要上网,看到这段文字,做一…
  15. hypot函数、fmod函数
  16. 当域名被微信封了怎么办?
  17. Citrix Receiver卸载方法
  18. 【毕业设计】大数据二手房数据分析可视化系统 - python
  19. Matlab 动态输入变量和嵌套函数、匿名函数
  20. 再一次打破局限:“华为云会议”和“畅连”到底连接了什么

热门文章

  1. java schedule参数_【摘抄】关于Java schedule job Timer的schedule方法详解 | 学步园
  2. 宝塔定时任务执行php源码任务_ThinkPHP框架实现定时执行任务的两种方法分析
  3. 基于MapReduce的HBase开发(续)
  4. 企业资产管理,这么用事半功倍!
  5. Python--进程与线程
  6. CH32V103R-R1开发板试用笔记
  7. Android 重写返回键
  8. 微信小程序云开发之新闻博客社区项目debug后的项目代码
  9. Snapde一个全新的CSV超大文件编辑软件
  10. VB窗体width、height、scalewidth、scaleheith属性(全网最容易理解)