1 /*****************2 * 构建窗口类3 * 菜单choice(控制):1、开始 2、继续 3、结束4 * 菜单pattern(模式):1、easy 2、love型 3、arrow箭头型 4、随机模式5 * 菜单speed(速度):1、100 2、1000 3、50006 * 菜单help(帮助):1、abstract(游戏规则介绍)2、editor(制作者)7 * 红色栏:1、Number of remaining lives(剩余生命个数)2、step:生命演化步数8 * 表格栏 30*309 */

10

11 packagegame_life_self;12

13 importjava.awt.BorderLayout;14 importjava.awt.Color;15 importjava.awt.GridLayout;16 importjava.awt.event.ActionEvent;17 importjava.awt.event.ActionListener;18 importjava.util.regex.Pattern;19

20 importjavax.swing.JFrame;21 importjavax.swing.JMenu;22 importjavax.swing.JMenuBar;23 importjavax.swing.JMenuItem;24 importjavax.swing.JOptionPane;25 importjavax.swing.JPanel;26 importjavax.swing.JLabel;27 importjava.awt.FlowLayout;28

29 public classset_frame {30 JFrame iFrame;31 //游戏迭代速度

32 static int speed = 1000;33 //剩余生命个数

34 static int life = 0;35 //演化步数

36 static int step_one = 0;37 myThread thread = null;38 staticstart_frame start_frame;39 //显示细胞状态面板

40 staticJPanel[][] jPanel;41 //模式一(love)

42 static int pattern = 1;43 //显示生命个数面板

44 staticJPanel panel_1;45 staticJLabel number;46 staticJLabel step;47 static boolean end = true;48 public set_frame (int row ,intcol) {49 //建立窗口

50 iFrame = new JFrame("the game of life");51 //初始化边界

52 jPanel = newJPanel[row][col];53 iFrame.getContentPane().setLayout(new BorderLayout(0, 0));54

55 JPanel panel = newJPanel();56 iFrame.getContentPane().add(panel, BorderLayout.NORTH);57 panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));58

59 number = new JLabel("Number of remaining lives: "+life+" ");60 panel.add(number);61

62 step = new JLabel("step: "+step_one);63 panel.add(step);64

65 panel.setBackground(Color.red);66 panel_1 = newJPanel();67 iFrame.getContentPane().add(panel_1, BorderLayout.CENTER);68 panel_1.setLayout(new GridLayout(30, 30, 2, 2));69 //初始化所有界面为白色

70 for(int i=0;i

80 //设置图形界面大小

81 iFrame.setLocation(450, 180);82 iFrame.setSize(500, 500);83

84 JMenuBar menuBar = newJMenuBar();85 iFrame.setJMenuBar(menuBar);86

87 JMenu choice = new JMenu("choice");88 menuBar.add(choice);89

90 JMenuItem start = new JMenuItem("start");91 choice.add(start);92 start.addActionListener(newstart());93

94 JMenuItem continue_one = new JMenuItem("continue");95 choice.add(continue_one);96 continue_one.addActionListener(newcontinue_one());97

98

99 JMenuItem stop = new JMenuItem("stop");100 choice.add(stop);101 stop.addActionListener(newstop());102

103 JMenu pattern = new JMenu("pattern");104 menuBar.add(pattern);105

106 JMenuItem easy = new JMenuItem("easy");107 pattern.add(easy);108 easy.addActionListener(neweasy());109

110 JMenuItem love = new JMenuItem("love");111 pattern.add(love);112 love.addActionListener(newlove());113

114 JMenuItem arrow = new JMenuItem("arrow");115 pattern.add(arrow);116 arrow.addActionListener(newarrow());117

118 JMenuItem random = new JMenuItem("random");119 pattern.add(random);120 random.addActionListener(newrandom());121

122

123 JMenu speed = new JMenu("speed");124 menuBar.add(speed);125

126 JMenuItem speed_fast = new JMenuItem("100");127 speed.add(speed_fast);128 speed_fast.addActionListener(newspeed_fast());129

130 JMenuItem speed_middle = new JMenuItem("1000");131 speed.add(speed_middle);132 speed_middle.addActionListener(newspeed_middle());133

134 JMenuItem speed_low = new JMenuItem("5000");135 speed.add(speed_low);136 speed_low.addActionListener(newspeed_low());137

138 JMenu help = new JMenu("help");139 menuBar.add(help);140

141 JMenuItem rule = new JMenuItem("abstract");142 help.add(rule);143 rule.addActionListener(newrule());144

145 JMenuItem editor = new JMenuItem("editor");146 help.add(editor);147 editor.addActionListener(neweditor());148

149 iFrame.setVisible(true);150

151 }152

153 class myThread extendsThread{154 publicmyThread() {155 }156 public voidrun(){157 while(end)158 {159 life = 0;160 start_frame.judge.judge();161 try{162 sleep(speed);163 } catch(InterruptedException e) {164 //TODO Auto-generated catch block

165 e.printStackTrace();166 }167

168 for (int m = 1; m < start_frame.state_one.length - 1; m++)169 {170 for (int n = 1; n < start_frame.state_one[m].length - 1; n++)171 {172 if (start_frame.state_one[m][n]==true) {173 life ++;174 }175 }176 }177 step_one++;178 number.setText("Number of remaining lives: "+life+" ");179 step.setText("step: "+step_one);180

181 start_frame.set_color.paint();182

183 if (life==0) {184 end = false;185 JOptionPane.showMessageDialog(null, "生命演化结束:\n"

186 + " 所用步数为"+step_one);187 }188

189 }190 }191 }192

193 //控制游戏的开始

194 class start implementsActionListener195 {196 @Override197 public voidactionPerformed(ActionEvent e) {198 //TODO Auto-generated method stub199 //初始化逻辑地图

200 if (pattern==1) {201 start_frame.init_data.init_one();202 }else if (pattern==2) {203 start_frame.init_data.init_two();204 }else if (pattern==3) {205

206 start_frame.init_data.init_three();207 }else{208 start_frame.init_data.init_zero();209 }210 //更新地图颜色

211 start_frame.set_color.paint();212 //初始化步数和剩余生命个数

213 life = 0;214 step_one = 0;215 end = true;216 //控制线程的开断

217 if (thread != null)218 thread.stop();219 thread = newmyThread();220 thread.start();221 }222 }223 //控制游戏的继续

224 class continue_one implementsActionListener225 {226

227 @Override228 public voidactionPerformed(ActionEvent e) {229 //TODO Auto-generated method stub

230 if(thread!=null)231 thread.stop();232 thread = newmyThread();233 thread.start();234 }235

236 }237 //控制游戏的停止

238 class stop implementsActionListener239 {240 @Override241 public voidactionPerformed(ActionEvent e) {242 //TODO Auto-generated method stub243 //控制线程的开断

244 if (thread != null)245 thread.stop();246 thread = null;247 }248

249 }250 //设置生命迭代速度(快速)

251 class speed_fast implementsActionListener252 {253 @Override254 public voidactionPerformed(ActionEvent e) {255 //TODO Auto-generated method stub

256 speed = 100;257 }258 }259 //设置生命迭代速度(中速)

260 class speed_middle implementsActionListener261 {262 @Override263 public voidactionPerformed(ActionEvent e) {264 //TODO Auto-generated method stub

265 speed = 1000;266 }267 }268 //设置生命迭代速度(慢速)

269 class speed_low implementsActionListener270 {271 @Override272 public voidactionPerformed(ActionEvent e) {273 //TODO Auto-generated method stub

274 speed = 5000;275 }276 }277 //游戏规则介绍

278 class rule implementsActionListener279 {280 @Override281 public voidactionPerformed(ActionEvent e) {282 //TODO Auto-generated method stub

283 JOptionPane.showMessageDialog(null, " The rules of the life game \n"

284 + "Each cell's life and death follows the following principles: \n"

285 + " One: If a cell has three living cells (a total of eight cells around a cell), then the living cells (i.e. if the cells had to die, then born into, if for a living, original is unchanged). \n"

286 + " Two: If two cells live around a cell, the cell's life and death status remains unchanged.)\n"

287 + " Three: In other cases, the cell is dead (that is, if the cell had previously lived, it would have died and if it had been dead, it would remain the same)\n"+"\n");288 }289 }290 //程序编者

291 class editor implementsActionListener292 {293

294 @Override295 public voidactionPerformed(ActionEvent e) {296 //TODO Auto-generated method stub

297 JOptionPane.showMessageDialog(null, "this game's editor:\n"

298 + " The software 1501 class(软件1501班) LiuHui(刘辉) \n");299 }300 }301 //模式中 love型

302 class love implementsActionListener303 {304 @Override305 public voidactionPerformed(ActionEvent e) {306 //TODO Auto-generated method stub

307 pattern = 1;308 }309

310 }311 //模式中 箭头型

312 class arrow implementsActionListener313 {314

315 @Override316 public voidactionPerformed(ActionEvent e) {317 //TODO Auto-generated method stub

318 pattern = 2;319 }320

321 }322 //随机模式

323 class random implementsActionListener324 {325

326 @Override327 public voidactionPerformed(ActionEvent e) {328 //TODO Auto-generated method stub

329 pattern = 3;330 }331

332 }333 //随机模式

334 class easy implementsActionListener335 {336

337 @Override338 public voidactionPerformed(ActionEvent e) {339 //TODO Auto-generated method stub

340 pattern = 0;341 }342

343 }344 }

java生命游戏_实用---生命游戏 Java相关推荐

  1. java语言开发手机游戏_手机上的JAVA游戏和JAVA软件,是电脑上的JAVA语言编写的吗?他们之间有什么联系...

    手机上的JAVA游戏和JAVA软件,是电脑上的JAVA语言编写的吗?他们之间有什么联系以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起 ...

  2. 用java写2468游戏_自己写游戏——东渡教你用Java编写2048完整代码

    原标题:自己写游戏--东渡教你用Java编写2048完整代码 2048作为一款益智类的小游戏,相信很多人都玩过,小编今天就教教大家怎么用Java代码给它完美重现,下面是用eclipse开发的2048完 ...

  3. 龙之翼java游戏_龙之翼游戏下载-龙之翼最新版下载v1.0.3-一听下载站

    龙之翼是一款经典的角色扮演类魔幻游戏,游戏中的画面特别的清晰,精彩纷呈的打斗场面,带给你更好的体验,游戏中登录后,还会获得很多惊喜,让你能够拥有更强的实力,炫酷的造型,独特的兵器,热血沸腾的打斗场景都 ...

  4. 龙之翼java游戏_龙之翼游戏下载

    龙之翼是一款中国古典题材类型的仙侠游戏,这款游戏中的画面极其的优美,超多的关卡副本可供玩家体验多种强力的武器装备可供玩家获取使用,每一种装备都有独特效果,配合你选择的职业快速提升战斗力,成为仙界第一斗 ...

  5. 如何用java写防沉迷系统_腾讯游戏防沉迷年龄提高到16岁

    今年3月,腾讯推出并测试了儿童锁功能,未满13周岁未成年用户需要家长充分知情并亲自"解锁"才可以登录游戏.昨天腾讯宣布将依托健康系统开始一项新尝试:在未来一款新游戏上启动" ...

  6. java lambda函数_最常用的 Java 8 中的 Lambda 函数(项目中实用笔记)

    最常用的 Java 8 中的 Lambda 函数(项目中实用笔记) 简介 Java 8 中的新特性,虽然现在都出到了Java14版本,不过在日常的开发过程中,8的版本是足够使用了,再说现在的8以上的版 ...

  7. java 判断类型_如何快速入门Java编程学习(干货)

    一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...

  8. 孙鑫java基础视频教程_孙鑫老师JAVA无难事视频教程 最适合java入门学习打基础的课程 附源码讲义 12课...

    课程介绍 由孙鑫老师亲自授课录制.内容涵盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟,学员通过本套光盘的学习,能够快速掌握Java编程语言,成为Java高手. 由孙鑫老师亲自授课录制.内容涵盖 ...

  9. 做Java头发少_这35个Java代码优化细节,你用了吗

    链接:https://www.jianshu.com/p/6e472304b5ac 前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有 ...

最新文章

  1. Altium Desiger18 打印 丝印简单的方法
  2. 单片机小白学步系列(二)爱上单片机的一万个理由
  3. 动态代理proxy与CGLib的区别
  4. python小城市创业好项目_小城市创业好项目有哪些?
  5. python中代码块使用缩进来表示对吗_Python 为什么使用缩进来划分代码块?
  6. Linux VMware 快照不准,VmWare Workstation 关于Linux 虚拟机快照或克隆后 识别不到网卡问题...
  7. python 内置函数_python的内置函数、方法
  8. git 更换密码后,pull代码 fatal: Authentication failed for '
  9. 跨页面访问ViewState
  10. Leetcode 516.最长回文子序列
  11. python中的json模块
  12. python np数组中括号里面‘:n‘与‘n:‘什么意思
  13. SJCcopula matlab,时变copula的matlab程序
  14. 计算机里另存桌面不见了,保存文件时桌面选项消失不见怎么办
  15. zookeeper因内存不足造成的CPU占用率高
  16. 360压缩加密压缩文件
  17. iPhone游戏开发纵谈
  18. Word2010如何从正文开始设置页码
  19. 从修复 testerhome(rubychina)网站的一个 bug 学习 rubyrails on ruby
  20. 使用Android Studio 查看内存泄漏

热门文章

  1. 操作必须使用一个可更新的查询。
  2. 一篇文章让你认识PHP中的面向对象思想
  3. 智能/傻瓜交换机、光纤交换机、普通交换机的区别
  4. 基于java的api接口测试,人生转折!
  5. 机场精细化管理_【青海机场公司召开“强化‘三基’固根本 精益管理促发展”主题交流会议】...
  6. TITAN Haptics推出捆绑了Immersion许可的下一代触觉马达
  7. flutter 自定义进度条progress
  8. java 通联支付接口_通联支付接口.rar
  9. 英国HAWKER叉车蓄电池48V360AH/3PzS360 林德叉车R14电池霍克电瓶
  10. 人工智能基础 | 机器学习介绍(一)