JAVA课程设计——团队博客


1. 团队名称、团队成员介绍(需要有照片)

  1. 团队名称:“小羊吃蓝莓”小游戏
  2. 团队成员介绍:
成员 班级 学号
廖怡洁 网络1513 201521123067
黄晓杨 网络1513 201521123071

2. 项目git地址

https://git.oschina.net/yjliao/javakechengsheji.git

3. 项目git提交记录截图(要体现出每个人的提交记录、提交说明),老师将点击进去重点考核。

4. 项目功能架构图与主要功能流程图

项目功能架构图

主要功能流程图

5. 项目运行截图

  1. 5.1 游戏主界面

  1. 5.2 游戏规则界面

  1. 5.3 游戏历史记录界面

  1. 5.4 游戏运行界面

6. 项目关键代码(不能太多)

  1. public void actionPerformed(ActionEvent e) {
  2. if(e.getSource() == exit){
  3. System.exit(0); //退出的监听事件
  4. }
  5. if(e.getSource() == begin){
  6. SheepFrame s=new SheepFrame();//点“开始”后,出现一个新界面,作为游戏界面
  7. s.setFrame();
  8. }
  9. if(e.getSource() == record){
  10. TxtFrame t = new TxtFrame();
  11. }
  12. if(e.getSource() == rule){
  13. RuleFrame r = new RuleFrame(); //点击“规则”后,出现一个新界面
  14. r.setFrame();
  15. }
  16. }
  17. class TxtFrame extends JFrame {
  18. TextArea text = new TextArea();
  19. public TxtFrame() {
  20. super("历史记录");
  21. add(text);
  22. readFile();
  23. }
  24. public void readFile() {
  25. try {
  26. File file = new File(fileName);
  27. FileReader readIn = new FileReader(file);
  28. char[] content = readIn.read();
  29. readIn.close();
  30. text.setText(new String(content));
  31. }
  32. catch (IOException e) {
  33. System.out.println("Error Opening file");
  34. }
  35. }
  36. }
  37. public void init() {
  38. for (int i = 0; i < 3; i++) {
  39. int x = rand.nextInt(30) + 2;//随机产生横坐标
  40. int y = rand.nextInt(30) + 2;//随机产生纵坐标
  41. if (i == 0) {
  42. this.food1 = new Coordinate(x * 20, y * 20, SheepFrame.S_STOP);
  43. } else if (i == 1) {
  44. this.food2 = new Coordinate(x * 20, y * 20, SheepFrame.S_STOP);
  45. } else {
  46. this.food3 = new Coordinate(x * 20, y * 20, SheepFrame.S_STOP);
  47. }
  48. }
  49. }
  50. public int calculateScore() {// 计算分数并将分数存进文件
  51. if (count < 10) score += 10;
  52. else if (count < 20) score += 15;
  53. else score += 20;
  54. try {
  55. FileWriter fw=new FileWriter(filepath,true);
  56. PrintWriter pw=new PrintWriter(fw);
  57. pw.println(score);
  58. } catch (IOException e) {
  59. e.printStackTrace();
  60. }
  61. return score;
  62. }
  63. public void ChangeLevel(int num) { // 改变等级
  64. level = num / 100;
  65. if (oldlevel != level) {
  66. speed -= (level * 5);
  67. oldlevel = level;
  68. }
  69. }
  70. public void moveAll(){ // 移动整只小羊
  71. Iterator<Coordinate> Sheep = all.iterator();
  72. int step = sheep.nextstep;
  73. while (Sheep.hasNext()) {
  74. Coordinate newsheep = Sheep.next();
  75. switch (newsheep.nextstep) {
  76. case SheepFrame.S_UP: newsheep.y -= 20; break;
  77. case SheepFrame.S_DOWN: newsheep.y += 20; break;
  78. case SheepFrame.S_LEFT: newsheep.x -= 20; break;
  79. case SheepFrame.S_RIGHT: newsheep.x += 20; break;
  80. }
  81. tmp = newsheep.nextstep;
  82. newsheep.nextstep = step;
  83. step = tmp;
  84. }
  85. }
  86. public boolean checkEatFood(Coordinate node) { // 判断是否吃到食物
  87. if ((node.x == food1.x) && (node.y == food1.y)) {
  88. int x = rand.nextInt(30) + 2;
  89. int y = rand.nextInt(30) + 2;
  90. this.food1 = new Coordinate(x * 20, y * 20, SheepFrame.S_STOP);
  91. count++;
  92. return true;
  93. }
  94. if ((node.x == food2.x) && (node.y == food2.y)) {
  95. int x = rand.nextInt(30) + 2;
  96. int y = rand.nextInt(30) + 2;
  97. this.food2 = new Coordinate(x * 20, y * 20, SheepFrame.S_STOP);
  98. count++;
  99. return true;
  100. }
  101. if ((node.x == food3.x) && (node.y == food3.y)) {
  102. int x = rand.nextInt(30) + 2;
  103. int y = rand.nextInt(30) + 2;
  104. this.food3 = new Coordinate(x * 20, y * 20, SheepFrame.S_STOP);
  105. count++;
  106. return true;
  107. }
  108. return false;
  109. }
  110. public boolean checkEatBody(Coordinate head) {//判断是否咬到自己
  111. Iterator<Coordinate> Sheep = all.iterator();
  112. while (Sheep.hasNext()) {
  113. Coordinate newsheep = Sheep.next();
  114. if (head.x == newsheep.x && head.y == newsheep.y)
  115. return true;
  116. }
  117. return false;
  118. }
  119. public boolean checkGround(Coordinate head) {//判断是否撞墙
  120. for (int x = 0; x < 35; x++)
  121. if (head.x == x * 20 && (head.y == 0 || head.y == 34 * 20))
  122. return true;
  123. for (int y = 0; y < 35; y++)
  124. if ((head.x == 0 || head.x == 35 * 20) && head.y == y * 20)
  125. return true;
  126. return false;
  127. }

7. 尚待改进或者新的想法

我们感觉整个游戏的完整度还是挺高的,改进的话我们会考虑增加一个排行榜的功能,使玩家可以方便快捷地看到最佳记录和最差分数,并且使界面以及小羊和蓝莓的形象更加精致些。

8. 团队成员任务分配,团队成员课程设计博客链接(以表格形式呈现),标明组长。

成员 任务分配 博客链接
廖怡洁(组长) 游戏算法编程 链接地址
黄晓杨 游戏界面设计 链接地址

JAVA课程设计——团队博客的更多相关文章

  1. java课程设计团队博客

    java课程设计 本组主题:Calculator(简易计算器) 功能要求:基本实现计算器的功能,可运行加.减.乘.除.求倒数.求平方根.求百分号运算.正负数运算等 一.团队介绍 团队名称:熬夜做不出随 ...

  2. java课程设计团队博客《基于学院的搜索引擎》

    JAVA课程设计 基于学院网站的搜索引擎 对学院网站用爬虫进行抓取.建索(需要中文分词).排序(可选).搜索.数据摘要高亮.分页显示.Web界面. 一.团队介绍 学号 班级 姓名 简介 2016211 ...

  3. Java课程设计---团队博客

    课设题目:购物车系统 题目要求: 1.先建立一个文本文件,定义出自己想要的商品.//也可用数据库以商品编号:商品名称:商品品牌:价格作为文件的内容,中间要求用分号或者分割 2.编写程序,定义一个商品类 ...

  4. JAVA课程设计个人博客 学生成绩管理 201521123023 戴建钊

    1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 我主要负责实现随机生成10万个学生及其姓名.学号 ...

  5. JAVA课程设计个人博客 学生成绩管理 201521123001 张陈东芳

    1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 我主要负责实现学生信息的添加功能.学生成绩的录入 ...

  6. JAVA课程设计个人博客 学生成绩管理 201521145048 林健

    1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 本人主要负责支持用户登录.验证操作,显示设计界面 ...

  7. JAVA课程设计个人博客 学生基本信息管理 201521123117 李心宇

    1. 团队课程设计博客链接 http://www.cnblogs.com/ll321/p/7067598.html 2.个人负责模块或任务说明 ①主要有三个界面的设计,包括:登录界面,功能选择界面还有 ...

  8. JAVA课程设计个人博客 学生成绩管理 201521123014 黄绍桦

    1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 本人主要负责DAO模式.添加和修改学生的信息功能 ...

  9. JAVA课程设计——团队(&个人)博客

    JAVA课程设计--团队(&个人)博客 1. 团队名称.团队成员介绍(需要有照片) 团队名称:是独立小分队啦 团队成员介绍:包梦榕 网络1513 201521123068 2. 项目git地址 ...

随机推荐

  1. CSS选择器 - 性能的探究及提升

    [本博客为原创:http://www.cnblogs.com/HeavenBin/]  前言: 在工作中编写CSS样式表时随着选择器层数的增加总会看到选择器又丑又长的情况,利用工作之余研究从其命名再到 ...

  2. React Native热更新(iOS)-Pushy

    React Native的出现,使的开发iOS代码出现了更便捷的方式.由于RN是使用脚本语言编写的,实现了"解释执行"的方式,而这种执行方式的修改只需替换脚步即可,不需要重新发布程 ...

  3. 学习笔记TF049:TensorFlow 模型存储加载、队列线程、加载数据、自定义操作

    生成检查点文件(chekpoint file),扩展名.ckpt,tf.train.Saver对象调用Saver.save()生成.包含权重和其他程序定义变量,不包含图结构.另一程序使用,需要重新创建 ...

  4. 绑定微信以及获取openId

    由于公司最近在做一个微信公众号的项目,需要获取用户openId,我再一次踏入了微信的坑! 先在这里告诫后来的同志,如果一样要开始做有关微信的东西,最好是有前辈,或者直接看完文档,不懂或者纳闷的地方直接 ...

  5. .NET Core 2.0迁移技巧之MemoryCache问题修复

    对于传统的.NET Framework项目而言,System.Runtime.Caching命名空间是常用的工具了,其中MemoryCache类则常被用于实现内存缓存. .NET Core 2.0暂时 ...

  6. GC选择之CMS 并发标记清除

    CMS收集器 Concurrent Markup Sweep 并发标记清除 使用了标记-清除算法 与标记-压缩相比,并发阶段会降低吞吐量 算法作用在老年代以及永久区(新生代使用ParNew) -XX: ...

  7. SQL 创建存储过程,让主键自增

    1.  首先创建存储过程: 2.  然后分别创建序列,生成基金公司编号.基金代码.活期账号.理财账号.基金账户.合同号.要求如下: 基金公司编号,字母K+5位数字. 基金代码,字母V+6位数字. 活期 ...

  8. MSF初体验 - kali linux 入侵XP系统

    最近做某安全竞赛平台的比赛,真正开始接触Metasploit这一渗透神器,同时也是装逼神器(2333-.),下面记录一下初步使用Metasploit的过程.首先在百度百科摘录了一段关于Metasplo ...

  9. Java入门——学会使用API

    API是什么? API(Application Programming Interface)就是别人写的代码使用说明书. 下面是中文版API的使用具体截图. 1.左上角有个显示(图中"隐藏& ...

  10. c++中find函数的用法

    find函数主要实现的是在容器内查找指定的元素,并且这个元素必须是基本数据类型的.查找成功返回一个指向指定元素的迭代器,即元素在容器中的下标,查找失败返回end迭代器. 头文件 #include &l ...