




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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、码的值就可以了。贪吃蛇游戏的制作:这里我用到的是netbeansIDE6.9.1这个软件制作的:1、首先点击/文件/,创建一个新的项目,名称叫snake;2、在这个项目下创建一个新的包,取名叫snake;3、最后就是需要在这个包里面创建3个类,这3个类分别为:Greedsnake、Node、SnakeModel.(1Greensnake.javaimport java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;/* author :1袏掱惢1public class GreedSnake impl
4、ements KeyListener JFrame mainFrame;Canvas paintCanvas;JLabel labelScore;SnakeModel snakeModel = null;public static final int canvasWidth = 1400;public static final int canvasHeigth = 1500;public static final int nodeWidth = 20;public static final int nodeHeigth = 20;public GreedSnake( mainFrame = n
5、ew JFrame("GreedSnake"Container cp = mainFrame.getContentPane(;labelScore = new JLabel("Score:"cp.add(labelScore, BorderLayout.NORTH;/paintCanvas = new Canvas(;paintCanvas.setSize(canvasWidth + 1, canvasHeigth + 1;paintCanvas.addKeyListener(this;cp.add(paintCanvas, BorderLayout.C
6、ENTER;/JPanel panelButtom = new JPanel(;panelButtom.setLayout(new BorderLayout(;JLabel labelHelp;labelHelp = new JLabel("PageUp,PageDown for speed:", JLabel.CENTER;panelButtom.add(labelHelp, BorderLayout.NORTH;labelHelp = new JLabel("Enter or R or S for start:", JLabel.CENTER;pan
7、elButtom.add(labelHelp, BorderLayout.CENTER;labelHelp = new JLabel("SPACE or P for pause", JLabel.CENTER;panelButtom.add(labelHelp, BorderLayout.SOUTH;cp.add(panelButtom, BorderLayout.SOUTH;mainFrame.addKeyListener(this;mainFrame.pack(;mainFrame.setResizable(false;mainFrame.setDefaultClose
8、Operation(JFrame.EXIT_ON_CLOSE;mainFrame.setV isible(true;begin(;public void keyTyped(KeyEvent e public void keyPressed(KeyEvent e int keyCode = e.getKeyCode(;if (snakeModel.running switch (keyCode case KeyEvent.VK_UP:snakeModel.changeDirection(SnakeModel.UP;break;case KeyEvent.VK_DOWN:snakeModel.ch
9、angeDirection(SnakeModel.DOWN;break;case KeyEvent.VK_LEFT:snakeModel.changeDirection(SnakeModel.LEFT;break;case KeyEvent.VK_RIGHT:snakeModel.changeDirection(SnakeModel.RIGHT;break;case KeyEvent.VK_PAGE_UP:snakeModel.speedUp(;break;case KeyEvent.VK_PAGE_DOWN:snakeModel.speedDown(;break;case KeyEvent.
10、VK_SPACE:case KeyEvent.VK_P:snakeModel.changePauseState(;break;public void keyReleased(KeyEvent e void repaint( Graphics g = paintCanvas.getGraphics(;/绘制背景g.setColor(Color.GREEN;g.fillRect(0, 0, canvasWidth, canvasHeigth;/画蛇g.setColor(Color.BLACK;LinkedList na = snakeModel.nodeArray;Iterator it = na
11、.iterator(;while (it.hasNext( Node n = (Node it.next(;drawNode(g, n;/画食物g.setColor(Color.RED;Node n = snakeModel.food;drawNode(g, n;void begin( if (snakeModel = null snakeModel = new SnakeModel(this, canvasWidth / nodeWidth, canvasHeigth / nodeHeigth;(new Thread(snakeModel.start(;/ (new Thread(snake
12、Model.start(;void drawNode(Graphics g, Node n g.fillRect(n.x * nodeWidth, n.y * nodeHeigth, nodeWidth - 1, nodeHeigth - 1;public static void main(String args GreedSnake gs = new GreedSnake(;(2Node.java/* author :1袏掱惢1*/public class Node int x;int y;public Node(int x, int y this.x = x;this.y = y;(3Sn
13、akeModel.javaimport java.util.*;import java.util.logging.Level;import java.util.logging.Logger;/* author :1袏掱惢1 */public class SnakeModel implements Runnable GreedSnake gs;boolean matrix; /界面数据保存在此数组LinkedList nodeArray = new LinkedList(;Node food;int maxX;int maxY;boolean running = false;int timeIn
14、terval = 200;double speedChangeRate = 0.1;boolean paused = false;/游戏状态int direction = 2;/初始方向public 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(GreedSnake gs, int maxX, int maxY this.gs = gs; this.maxX
15、= 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 < maxX; i+ matrixi = new booleanmaxY; Arrays.fill(matrixi, false; / / / / / /初始化 蛇 int initArrayLength = maxX > 20 ? 10 : maxX / 2; for (int i
16、 = 0; i < initArrayLength; i+ int x = maxX / 2 + i; int y = maxY / 2; nodeArray.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 Random r = new Random(; x = r.nextInt(maxX; y =
17、r.nextInt(maxY; while (matrixxy; 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 &am
18、p;& y < maxY if (matrixxy /吃到食物 或者 碰到蛇身 if (x = food.x && y = food.y /吃到食物 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 nodeArray.removeLast(; matrixn.xn.y = false; return true; return false; public void changeDirection(int newDirection if (direction % 2 != newDirection % 2 direction = newDirection; public void speedUp( timeInterval = (int (timeInterval * (1 - speedChangeRate; public void speedDown( timeInterval = (int (timeInterval * (1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育技术从传统到创新的跨越
- 教心理支持办公室工作人员的有效方式探讨
- 西北师范大学《事故调查课程设计》2023-2024学年第一学期期末试卷
- 阳泉师范高等专科学校《世界通史合》2023-2024学年第一学期期末试卷
- 四川省宜宾市兴文县2024年九上化学期末质量跟踪监视模拟试题含解析
- 共享出行信用评价体系在2025年的信用评级模型优化报告
- 湖南省常德市鼎城区2025届九年级化学第一学期期末调研试题含解析
- 宝鸡三和职业学院《医学分子生物学与遗传学》2023-2024学年第一学期期末试卷
- 2025届广东省清远市阳山县数学七年级第一学期期末复习检测试题含解析
- 油船防爆登记管理办法
- 银行 舆情培训 课件
- 小儿重症专科进修汇报
- 2025广西中医药大学赛恩斯新医药学院教师招聘考试试题
- 京东居家客服面试题及答案
- 制造业中数字孪生技术的市场推广策略研究
- JJF(赣) 028-2024 气相分子吸收光谱仪校准规范
- (王瑞元版本)运动生理学-课件-2-第二章-骨骼肌机能
- 2023年广东省高中生物学业水平合格性考试试卷真题(含答案详解)
- 孩子上学劳动合同协议
- 胎膜早破的护理查房
- 强奸赔偿和解协议书
评论
0/150
提交评论