ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:31.24KB ,
资源ID:16989028      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16989028.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(贪吃蛇java代码Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

贪吃蛇java代码Word文件下载.docx

1、2005-6-13 time:15:57:16* lastmodified:* history:public class greedsnake public static void main(string args) snakemodel model = new snakemodel(20,30); snakecontrol control = new snakecontrol(model); snakeview view = new snakeview(model,control); /添加一个观察者,让view成为model的观察者 model.addobserver(view); (ne

2、w thread(model).start(); -2、/snakecontrol.javaimport java.awt.event.keyevent;import java.awt.event.keylistener;* mvc中的controler,负责接收用户的操作,并把用户操作通知modelpublic class snakecontrol implements keylistenersnakemodel model;public snakecontrol(snakemodel model)this.model = model;public void keypressed(keyev

3、ent e) int keycode = e.getkeycode();if (model.running) / 运行状态下,处理的按键switch (keycode) case keyevent.vk_up:model.changedirection(snakemodel.up);break;case keyevent.vk_down:model.changedirection(snakemodel.down);case keyevent.vk_left:model.changedirection(snakemodel.left);case keyevent.vk_right:model.c

4、hangedirection(snakemodel.right);case keyevent.vk_add:case keyevent.vk_page_up:model.speedup();case keyevent.vk_subtract:case keyevent.vk_page_down:model.speeddown();case keyevent.vk_space:case keyevent.vk_p:model.changepausestate();default:/ 任何情况下处理的按键,按键导致重新启动游戏if (keycode = keyevent.vk_r |keycode

5、 = keyevent.vk_s |keycode = keyevent.vk_enter) model.reset();public void keyreleased(keyevent e) public void keytyped(keyevent e) 3、* 游戏的model类,负责所有游戏相关数据及运行58:33/snakemodel.javaimport javax.swing.*;import java.util.arrays;import java.util.linkedlist;import java.util.observable;import java.util.rand

6、om;class snakemodel extends observable implements runnable boolean matrix; / 指示位置上有没蛇体或食物linkedlist nodearray = new linkedlist();/ 蛇体node food;int maxx;int maxy;int direction = 2;/ 蛇运行的方向boolean running = false;/ 运行状态int timeinterval = 200; / 时间间隔,毫秒double speedchangerate = 0.75;/ 每次得速度变化率boolean pa

7、used = false; / 暂停标志int score = 0;/ 得分int countmove = 0;/ 吃到食物前移动的次数/ up and down should be even/ right and left should be oddpublic static final int up = 2;public static final int down = 4;public static final int left = 1;public static final int right = 3;public snakemodel( int maxx, int maxy) this

8、.maxx = maxx;this.maxy = maxy;reset();public void reset()direction = snakemodel.up;timeinterval = 200;paused = false;score = 0;countmove = 0;/ initial matirx, 全部清0matrix = new booleanmaxx;for (int i = 0; i 20 ? 10 : maxx / 2;nodearray.clear(); initarraylength;int x = maxx / 2 + i;/maxx被初始化为20int y =

9、 maxy / 2;/maxy被初始化为30/nodearrayx,y: 10,15-11,15-12,1520,15/默认的运行方向向上,所以游戏一开始nodearray就变为:/ 10,14-10,15-11,15-12,1519,15nodearray.addlast(new node(x, y);matrixxy = true;/ 创建食物food = createfood();matrixfood.xfood.y = true;public void changedirection(int newdirection) / 改变的方向不能与原来方向同向或反向if (direction

10、% 2 != newdirection % 2) direction = newdirection; * 运行一次 * return */public boolean moveon() node n = (node) nodearray.getfirst();int x = n.x;int y = n.y;/ 根据方向增减坐标值switch (direction) case up:y-;case down:y+;case left:x-;case right:x+;/ 如果新坐标落在有效范围内,则进行处理if (0 = x & x maxx) & (0 = y & y 0 ? scoreget

11、 : 10;/ 创建新的食物/ 设置食物所在位置return true; else / 吃到蛇体自身,失败return false; else / 如果新坐标的点上没有东西(蛇体),移动蛇体nodearray.addfirst(new node(x, y);n = (node) nodearray.removelast();matrixn.xn.y = false;countmove+; / 触到边线,失败public void run() running = true;while (running) try thread.sleep(timeinterval); catch (excepti

12、on e) if (!paused) if (moveon() setchanged(); / model通知view数据已经更新notifyobservers(); else joptionpane.showmessagedialog(null,you failed,game overjoptionpane.information_message);running = false;private node createfood() int x = 0;int y = 0;/ 随机获取一个有效区域内的与蛇体和食物不重叠的位置do random r = new random();x = r.ne

13、xtint(maxx);y = r.nextint(maxy); while (matrixxy);return new node(x, y);public void speedup() timeinterval *= speedchangerate;public void speeddown() timeinterval /= speedchangerate;public void changepausestate() paused = !paused;public string tostring() string result = ; nodearray.size();node n = (

14、node) nodearray.get(i);result += + n.x + , + n.y + return result;class node int x;int y;node(int x, int y) this.x = x;this.y = y;-4、/snakeview.javaimport java.awt.*;import java.util.iterator;import java.util.observer;* mvc模式中得viewer,只负责对数据的显示,而不用理会游戏的控制逻辑public class snakeview implements observer sn

15、akecontrol control = null;snakemodel model = null;jframe mainframe;canvas paintcanvas;jlabel labelscore;public static final int canvaswidth = 200;public static final int canvasheight = 300;public static final int nodewidth = 10;public static final int nodeheight = 10;public snakeview(snakemodel model, snakecontrol control) this.control = control;mainframe = new jframe(greedsnake);container cp = mainframe.getcontentpane();/ 创建顶部的分数显示labelscore = new jlabel(score:cp.add(labelscore, borderlayout.north);/ 创建中间的游戏显示区域paintcanvas = new canvas();paintcanvas.setsize(canvaswidt

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1