版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、贪吃蛇游戏的制作里面还有一些代码还没有完善,比如说:没有开始的控制,当玩家一进去游戏就自 动开始了,并且当玩家同时点击方向键的上键和左键游戏就会中断,这些仅仅是我在测试的时候发现的,也许还有更多的错误,见谅!我会在最近更新的,然后上传到我的 百度账号里面的。当然,这个游戏里面的界面的大小和颜色也许不是你所喜欢的,但是你可以修改的,具体的修改方法如下:1、修改界面的大小在 GreenSnake类中,public static final int canvasWidth = 1400;public static final int canvasHeigth = 1500;在上面的代码中修改后面的值
2、就可以了。2、修改界面的颜色也是在 GreenSnake类中,g.setColor(Color.GREEN;修改color后面颜色就可以了,(这里说明一下:你可以将color后面的逗号去掉,然后重新输入一个,后面就自动会弹出很多的颜色,你可以在里面选择一个自己喜欢的颜色3、修改蛇的食物的颜色也是在 GreenSnake类中,g.setColor(Color.RED;方法和修改界面的颜色一样4、修改蛇身的大小也是在 GreenSnake类中,public static final int nodeWidth = 20;public static final int nodeHeigth = 20
3、;修改以上代码的值就可以了。贪吃蛇游戏的制作:这里我用到的是netbeanslDE6.9.1这个软件制作的:1、首先点击/文件/,创建一个新的项目,名称叫snake;2、在这个项目下创建一个新的包,取名叫snake;3、 最后就是需要在这个包里面创建3个类,这3个类分别为:GreedsnakeNode、SnakeModel.(1Gree nsn ake.javaimport java.awt.*;import java.awt.eve nt.*;import java.util.*;import javax.swi ng.*;/* author :1 袏掱惢 1public class Gre
4、edS nake impleme nts KeyListe ner JFrame mainF rame;Canvas pain tCa nvas;JLabel labelScore;Sn akeModel sn akeModel = null;public static final int can vasWidth = 1400;public static final int canvasHeigth = 1500;public static final int no deWidth = 20;public static final int nodeHeigth = 20;public Gre
5、edS nake( mainF rame = new JFrame(GreedS nake;Container cp = mainF rame.getCo nten tPa ne(;labelScore = new JLabel(Score:;cp.add(labelScore, BorderLayout.NORTH;/pain tCa nvas = new Canv as(;pa in tCa nv as.setSize(ca nv asWidth + 1, canv asHeigth + 1;pai ntCa nv as.addKeyListe ner(this;cp.add(pa in
6、tCa nv as, BorderLayout.CENTER;/JPa nel pan elButtom = new JPa nel(;panelButtom.setLayout(new BorderLayout(;JLabel labelHelp;labelHelp = new JLabel(PageUp,PageDow n for speed:, JLabel.CENTER; pan elButtom.add(labelHelp, BorderLayout.NORTH;labelHelp = new JLabel(Enter or R or S for start:, JLabel.CEN
7、TER;pan elButtom.add(labelHelp, BorderLayout.CENTER;labelHelp = new JLabel(SPACE or P for pause, JLabel.CENTER;pan elButtom.add(labelHelp, BorderLayout.SOUTH;cp.add(pa nelButtom, BorderLayout.SOUTH;mai nF rame.addKeyListe ner(this;mainF rame.pack(;mainF rame.setResizable(false;main Frame.setDefaultC
8、loseOperatio n( JFrame.EXIT_ON_CLOSE;mai nF rame.setV isible(true;begi n(;public void keyTyped(KeyEve nt e public void keyPressed(KeyEve nt e int keyCode = e.getKeyCode(;if (sn akeModel.r unning switch (keyCode case KeyEve nt.VK_UP:sn akeModel.cha ngeDirectio n(S nakeModel.UP;break;case KeyEve nt.VK
9、_DOWN:sn akeModel.cha ngeDirectio n(Sn akeModel.DOWN;break;case KeyEve nt.VK_LEFT:sn akeModel.cha ngeDirectio n(Sn akeMode L LEFT;break;case KeyEve nt.VK_RIGHT:sn akeModel.cha ngeDirectio n(S nakeModel.RIGHT;break;case KeyEve nt.VK_PAGE_UP:sn akeModel.speedUp(;break;case KeyEve nt.VK_PAGE_DOWN:sn ak
10、eModel.speedDow n(;break;case KeyEve nt.VK_SPACE:case KeyEve nt.VK_P:sn akeModel.cha ngePauseState(;break;public void keyReleased(KeyEve nt e void repa int( Graphics g = pain tCa nv as.getGraphics(;绘制背景g.setColor(Color.GREEN;g.fillRect(O, 0, canvasWidth, canvasHeigth;/画蛇g.setColor(Color.BLACK;Lin ke
11、dList na = sn akeModel. no deArray;Iterator it = n a.iterator(;while (it.hasNext( Node n = (Node it .n ext(;drawNode n;/画食物g.setColor(Color.RED;Node n = sn akeModel.food;drawNode n;void beg in( if (sn akeModel = null sn akeModel = new Sn akeModel(this, canv asWidth / no deWidth, canv asHeigth / no d
12、eHeigth;(new Thread(s nakeModel.start(;/ (new Thread(s nakeModel.start(;void drawNode(Graphics g, Node n g.fillRect( n.x * nodeWidth, n.y * nodeHeigth, no deWidth - 1, nodeHeigth - 1;public static void main( Stri ng args GreedS nake gs = new GreedS nake(;(2Node.java/* author :1 袏掱惢 1*/public class N
13、ode int x;int y;public Node(i nt x, int y this.x = x;this.y = y;(3S nakeModel.javaimport java.util.*;import java.util.loggi ng.Level;import java.util.loggi ng.Logger;/*author :1 袏掱惢 1 */public class Sn akeModel impleme nts Runn able GreedS nake gs;boolea n matrix; /界面数据保存在此数组Lin kedList no deArray =
14、 new Lin kedList(;Node food;int maxX;int maxY;boolea n running = false;int timeI nterval = 200;double speedCha ngeRate = 0.1;boolea n paused = false;游 戏状态int directio n = 2;/ 初始方向public static final int UP = 2;public static final int DOWN = 4;public static final int LEFT = 1;public static final int
15、RIGHT = 3;public Sn akeModel(GreedS nake gs, int maxX, int maxY this.gs = gs; this.maxX = maxX; this.maxY = maxY; matrix = new booleanmaxX; for (int i = 0; i maxX; i+ for (int j = 0; j maxY; j+ matrixij = false; for (int i = 0; i 20 ? 10 : maxX / 2; for (int i = 0; i ini tArrayLe ngth; i+ int x = ma
16、xX / 2 + i; int y = maxY / 2; no deArray.addLast( new Node(x, y; matrixxy = true;/ 蛇身处设为 true; / 最初的食物 food = createFood(; matrixfood.xfood.y = true; / 食物处设置为 true private Node createFood( int x = 0; int y = 0; do Ran dom r = new Ran dom(; x = r.n ext In t(maxX; y = r.n extl nt(maxY; while (matrixxy
17、; return new Node(x, y; boolean moveOn( Node n = (Node nodeArray.getFirst(; int x = n.x; int y = n.y; switch (direction case UP: y-; break; case DOWN: y+; break; case LEFT: x-; break; case RIGHT: x+; break; if (0 = x & x maxX & (0 = y & y maxY if (matrixxy /吃至U食物 或者碰到蛇身if (x = food.x & y = food.y /吃
18、到食物 nodeArray.addFirst(food; 在蛇的头部增加一个节点 food = createFood(; matrixfood.xfood.y = true; return true; else return false; else nodeArray.addFirst(new Node(x, y; matrixxy = true; n = (Node no deArray.removeLast(; matrix n.x n.y = false; return true; return false; public void cha ngeDirect ion (i nt n ewDirectio n if (directio n % 2 != n ewDirect ion % 2 direct ion = n ewDirect ion; public void speedUp( time In terval = (int (time In terval * (1 - speedCha ngeRate; public void speedDow n( time In terval = (int (time In terval * (1 + speedCh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《直线与圆的位置关系》教案(新人教B必修)
- 《环境系统分析》教案
- 码头港口钢结构施工承包合同
- 市政工程招投标代理合同
- 城市环保挖掘机租赁合同
- 玻璃生产设备租赁合同
- 矿山开发室外施工合同
- 城市综合体混凝土施工协议
- 房地产公司律师聘用合同
- 成都市餐饮店铺租赁合同模板
- 三界天人表格-
- 化学奥赛复习 专题11电子效应
- 内分泌系统和营养代谢性疾病总论PPT课件
- (完整版)建筑工程设计文件编制深度规定(2016)
- 全新版大学英语综合教程1Unit3课件.ppt
- 抓斗式挖泥船疏浚施工方案(共7页)
- 国家标准-》印制电路板设计规范
- 哈尔滨医科大学附属第一医院ppt课件
- 半导体简答题
- 某水库新建码头初步设计
- 理论力学试题题目含参考答案
评论
0/150
提交评论