项目进度

本周我们将之前未理解的代码,重新进行了理解消化,并且将完整代码加入了注释,代码如下:

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;}
}
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;//限定游戏中贪吃蛇的活动范围
}

成员贡献

20145231 熊梓宏: 代码注释,博客编写;

20145210 姚思羽:代码完善;

两人共同完成:代码理解。

项目总结

至此,我们的项目已全部完成,在此次做项目的过程中,我们学习到了很多javaAPI的使用,掌握了很多类的用法,看到了java语言的强大用途,加强了想要学好Java的决心。对于我们的项目,虽然是在前人的基础上完成的,但是我依然觉得,我们能够理解代码、完善代码,这是对我们的努力的肯定。通过这次的项目,我们学会了严谨的思考问题,考虑问题更加全面周到,是一次不错的体验。

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

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

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

    10+31=100小组项目第二周总结报告 项目进展 • 继续查看相关的书籍和资料: Java面向对象程序设计(第2版)北京邮电大学出版社:张桂珠 刘丽 陈爱国编写: Java程序设计实例教程[M]. ...

  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. 10+31=100团队项目简介

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

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

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

  7. 第五周实验报告(任务二)《长方体的体积和表面积》

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:长方体的表面积 ...

  8. java实验报告五_2019JAVA第五周实验报告

    Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.9.24 评分等级 实验三 String类的应用 一.实验目的 掌握类String类的使用: 学会使用JDK ...

  9. 小组项目第四、五周:后端数据——模拟炒股系统(2)

    小组项目第四.五周:后端数据--模拟炒股系统(2)   个人工作   这两周将模拟炒股功能添加到Django框架中.   在stockforum项目内,添加名为mockexchange的应用,主页后/ ...

最新文章

  1. RAID 与 LVM 磁盘阵列技术
  2. python删除所有core文件_python – 从pandas.core.series.Series中删除前导零
  3. 找呀志_ContentResolver操作ContentProvider数据
  4. 数据库备份DBS 新增Region支持:华北2、华东2和华南1
  5. 大学物理上册详细笔记_干货满满!快来pick自哈军工以来的学霸笔记!
  6. NHibernate源码分析开篇
  7. sql server2008如果表中已经有很多条记录,再添加一个非空字段
  8. 用FileOutputStream将内容写入到文本
  9. [转]SQL Server 2005报表服务入门(一)
  10. Ubuntu编译并安装voip服务器软件Asterisk
  11. PowerPCB转Protel 99的详细教程
  12. 微软Win8Server2012各版本安装密匙序列号
  13. android 连接蓝牙耳机 的判断代码,如何验证Android上是否连接了蓝牙耳机?
  14. 安卓数据传递和数据回传简单注册和宠物装备购买
  15. Android百大框架排行榜
  16. 第四次面试----华数电力科技有限公司
  17. Xilinx XC7K70T-2FBG484I 可编程罗辑芯片
  18. pythonocc 等步长平分周长的分割曲线
  19. wifi信号放大器除了易拉罐,还有免费wifi软件
  20. Jetpack Compose ScrollableTabRow 如何调整最小宽度

热门文章

  1. DirectX的历程
  2. 【技术分享】PHP常用的数组函数
  3. (操作系统)生产者消费者问题
  4. matlab flops 替代,matlab flops
  5. linux系统制作裸设备,在unix下和linux下创建裸设备总结
  6. uniappIOS本地打包提示未添加***模块,及添加后启动报错
  7. 计算机网络什么叫流量控制,计算机网络(十一)-数据链路层-流量控制
  8. XJTU_ 西安交通大学2020大学计算机作业-第九周
  9. 评论:当Google Android 进入中国
  10. C语言练习题:企业发放的奖金根据利润提成。利润 I 低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成