如何用Java语言写一个贪吃蛇游戏

如题所述

    设计游戏,首先就要设计界面。首先看一下我设计的一个界面。界面分为左边的游戏区与右边的控制区。游戏区包含“得分信息”和贪吃蛇的游戏区,右边控制区有“开始”“暂停”“停止”按钮,等级选择单选框以及游戏排行榜。

    所以我们需要定义swing组件,并在类初始化时初始化这些组件,添加组件。因为后面设计游戏的时候,我们要确切知道游戏区的大小,所以这里设置游戏区固定大小值。本来想用布局来更好的管理,但作者对布局也掌握不够,所以就先设置固定大小吧。

    定义我们的游戏。贪吃蛇游戏其实就是包含很多细小网格,然后蛇在网格中移动。蛇由一连串的网格组成,为了视觉效果,蛇身用蓝色标记,食物用红色标记,背景白色。如第一张图片所示。所以,我们需要定义二维数组,保存网格信息,保存蛇身和食物的位置信息等。初始化时,还需要添加键盘事件控制上下左右移动。

    食物的位置信息是二维的,所以我简单定义了一个类用来保存二维信息。

    接着就是实现游戏的功能了。开始,暂停,停止按钮添加事件控制游戏开始。等级按钮定义游戏难度等。

    开始游戏后,我们定义一个定时器。蛇身按照指定的方向移动,方向是通过初始化时添加的键盘事件,键盘的上下左右按钮来控制。蛇身是连续的位置信息,保存到队列中,所以蛇身的移动就是队首增加一个位置,队尾减少位置,然后重新绘画游戏区就可以了。

    在蛇身移动时进一步做吃掉食物、撞墙、撞到自己的处理。这是游戏的主要逻辑。

    最后,游戏结束我们弹出一个对话框提示是否保存游戏得分。我们制作了排行榜信息,只保留前10名的游戏得分。首先定义了一个实现Comparable接口的游戏得分类,按得分高,时间最早来排序。

    游戏结束时保存得分信息,看是否进入到排行榜中。而之前在初始化排行榜组件时就会加载游戏排行榜信息。

    通过保存和读取排行榜信息,我们也熟悉一下文件读取操作,还有集合、排序算法的功能。

温馨提示:内容为网友见解,仅供参考
无其他回答

求"贪吃蛇"小游戏JAVA源代码一份
weix=(int)(food[shu]*0.1)*60;weiy=(int)(food[shu]%10)*40;repaint(); \/\/重绘下一个食物 add(snake[shu]); \/\/增加蛇节数和位置 snake[shu].setBounds(snake[shu-1].getBounds());} thread.sleep(100); \/\/睡眠100ms } catch(Exception e){} } else if(fangxiang==1)\/\/向左...

谁帮我写个java贪吃蛇游戏全面的包括得分等功能!谢谢!希望大家帮帮忙...
private String help = "游戏说明:\\n1 :方向键控制蛇移动的方向."+ "\\n2 :按开始键开始游戏."+ "\\n3 :按暂停键可以暂停游戏,再按暂停键能继续玩游戏."+ "\\n4 :黄色为普通食物,吃一个得100分."+ "\\n5 :青色为穿身宝物,吃一个得100分,该宝物允许玩家穿过一次蛇身"+ "\\n6 :红色...

如何用java实现一个贪吃蛇小游戏?
1、设计游戏,首先就要设计界面。首先看一下我设计的一个界面。界面分为左边的游戏区与右边的控制区。游戏区包含“得分信息”和贪吃蛇的游戏区,右边控制区有“开始”“暂停”“停止”按钮,等级选择单选框以及游戏排行榜。2、所以我们需要定义swing组件,并在类初始化时初始化这些组件,添加组件。因为后面...

求JAVA贪吃蛇代码 要能运行有注解的!
import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;public class GreedSnake implements KeyListener{ JFrame mainFrame;Canvas paintCanvas;JLabel labelScore;SnakeModel snakeModel = null;public static final int canvasWidth = 200;public static final int canva...

求贪吃蛇java程序代码(要能运行的,有完整注释的)
* 创建一个随机数的生成器,这个是java.util.Random类 * 与java.lang.Math类中的random()方法有不一样的地方,彼方法返回一个0-1之间的随机数 * *\/ Random random=new Random(); int foodx=random.nextInt(maxX); int foody=random.nextInt(maxY); Node food=new Node(foodx,foody); return food; }...

用Java逻辑思维,前十章做一个小游戏。可以在MyEclipse8.5运行的...
贪吃蛇游戏!package com.hbsi;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;\/\/Main Class public class GreedSnake extends KeyAdapter{ JFrame mainFrame;Canvas paintCanvas;JLabel labelScore;\/\/计分牌 SnakeModel snakeModel=null;\/\/ 蛇 public static ...

帮忙给个java小游戏源程序
\/***贪食蛇游戏,注释简单点啦 而且很多功能没有完善了***\/import java.awt.*;import java.awt.event.*;import javax.swing.*;class Snake extends JFrame implements ActionListener, KeyListener, Runnable { JMenuBar bar; JMenu menu1; JMenu menu2; JMenu menu3; JMenu menu4; JMenuItem menuitem1;...

我想求一个Java编写的贪吃蛇游戏,要有注释和流程图最好
用MVC方式实现的贪吃蛇游戏,共有4个类。运行GreedSnake运行即可。主要是观察者模式的使用,我已经添加了很多注释了。1、\/* * 程序名称:贪食蛇 * 原作者:BigF * 修改者:algo * 说明:我以前也用C写过这个程序,现在看到BigF用Java写的这个,发现虽然作者自称是Java的初学者, * 但是明显编写程序的素养不错,程序结...

Java 编写贪吃蛇游戏的大体思路是什么?
\\x0d\\x0a原理:\\x0d\\x0a把蛇身体的每一块看成一个对象(对象存储该块的坐标和相关信息),作为节点存储在线性链表中,再设置一个变量标志蛇的方向(通过按键可以改变)。一般人都是让每一个节点等于他指向的下一个节点,并让头节点改变位置来实现转弯和移动,这个算法复杂度太高(O(n)),实际上只要做两步操作,...

java贪吃蛇游戏程序 问题 急!!!
太简单了,我都写在自己手机上了。都不看书的,全部自己思考。他这代码也太烂了。\/\/ 蛇是用一个二维的int数组表示 \/\/snake[i][0] 表示横轴 snake[i][1]表示纵轴 public int[][] snake = new int[91][2];public int SnakeNum; \/\/蛇长度 public final int SnakeSize; \/\/大概是蛇的...

相似回答