资源简介
利用Java实现的贪吃蛇游戏设计,包含关卡、速度、分数等信息,有障碍物;符合贪吃蛇游戏的所有设计理念,贪吃蛇吃到食物,身体会自增等等。
代码片段和文件信息
package mysnake;
import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import mysnake.snackWin;
class Node {
private int x y;
public Node() {}
public Node(int a int b) {x = a; y = b;}
public Node(Node tmp) {x = tmp.getX(); y = tmp.getY();}
int getX() {return x;}
int getY() {return y;}
void setX(int a) {x = a;}
void setY(int b) {y = b;}
}
public class Snack {
static final int GameLocX = 40 GameLocY = 40 GameWidth = 700 GameHeight = 500 Size = 10;
static final int DIR[][] = {{0 -1} {0 1} {-1 0} {1 0}};
private List lt = new ArrayList();
private int curDir;
public Snack() {
curDir = 3;
lt.add(new Node(40 40)); //设置贪吃蛇的初始位置
}
int length() {return lt.size();} //蛇的长度
int getDir() {return curDir;}
void draw(Graphics g) //画蛇
{
g.setColor(Color.BLACK);
for(int i = 0; i < lt.size(); i++) {
g.fillRect(lt.get(i).getX() lt.get(i).getY() 20 20); //设置蛇的初始位置和大小
}
}
boolean Dead() { //判定死亡
for(int i = 1; i < lt.size(); i++) {
if(lt.get(0).getX() == lt.get(i).getX() && lt.get(0).getY() == lt.get(i).getY()) //自己碰到自己
return true;
}
if(lt.get(0).getX()GameWidth+GameLocX-20||lt.get(0).getY()>GameHeight+GameLocY-20||lt.get(0).getY() return true;
int mark = 0;
if(lt.get(0).getX()>160 && lt.get(0).getX()<640)
{
if(lt.get(0).getY()>120 && lt.get(0).getY()<200)
mark++;
if(lt.get(0).getY()>380 && lt.get(0).getY()<460)
mark++;
}
if(mark > 0)
return true;
return false;
}
Node headMove() //贪吃蛇移动
{
int tx = lt.get(0).getX() + snackWin.Size * DIR[curDir][0];
int ty = lt.get(0).getY() + snackWin.Size * DIR[curDir][1];
if(tx > snackWin.GameLocX + snackWin.GameWidth - snackWin.Size) tx = snackWin.GameLocX;
if(tx < snackWin.GameLocX) tx = snackWin.GameWidth + snackWin.GameLocX - snackWin.Size;
if(ty > snackWin.GameLocY + snackWin.GameHeight - snackWin.Size) ty = snackWin.GameLocY;
if(ty < snackWin.GameLocY) ty = snackWin.GameHeight + snackWin.GameLocY - snackWin.Size;
Node tmp = new Node(tx ty);
return tmp;
}
void move()
{
Node head = headMove() newNode = new Node();
boolean eat = false; //初始化没吃到
if(Math.abs(head.getX() - snackWin.rx) <=10 && Math.abs(head.getY() - snackWin.ry) <= 10) {
eat = true; //吃到食物
newNode = new Node(lt.get(lt.size() - 1));
while(true)
{
int mark = 0;
int rxx = (int) (Math.random() * (700) + 40);
int ryy = (int) (Math.random() * (500) + 40);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 301 2017-07-04 00:16 Snake\.classpath
文件 381 2017-07-04 00:16 Snake\.project
文件 598 2017-07-04 00:16 Snake\.settings\org.eclipse.jdt.core.prefs
文件 849 2017-07-10 14:08 Snake\bin\mysnake\Node.class
文件 3552 2017-07-10 14:08 Snake\bin\mysnake\Snack.class
文件 872 2017-07-06 18:07 Snake\bin\mysnake\snackmain.class
文件 1191 2017-07-10 14:09 Snake\bin\mysnake\snackWin$snackThread.class
文件 5177 2017-07-10 14:09 Snake\bin\mysnake\snackWin.class
文件 3891 2017-07-10 14:08 Snake\src\mysnake\Snack.java
文件 535 2017-07-04 13:35 Snake\src\mysnake\snackmain.java
文件 6041 2017-07-10 14:09 Snake\src\mysnake\snackWin.java
目录 0 2017-07-06 18:07 Snake\bin\mysnake
目录 0 2017-07-04 11:11 Snake\src\mysnake
目录 0 2017-07-04 00:16 Snake\.settings
目录 0 2017-07-06 18:07 Snake\bin
目录 0 2017-07-04 00:17 Snake\src
目录 0 2017-07-04 00:16 Snake
----------- --------- ---------- ----- ----
23388 17
- 上一篇:java Servlet投票实例
- 下一篇:基于jsp的bbs论坛 非常详细
相关资源
- 基于jsp的bbs论坛 非常详细
- java Servlet投票实例
- 操作系统作业 (pv,作业管理,等5个
- 基于C/S架构考试系统(Java)
- java access 仓库管理系统 源码
- 一元多项式相加 java实现
- java软件工程师简历模板——应届生
- DES(CFB) JAVA
- java读取局域网共享机器文件
- [免费]java学习 存储过程
- pl/0词法分析器和语法分析器(java)
- 回归算法Java程序
- java sql2008的图书馆管理系统
- Java综合程序设计——计算器(实现运
- java实现的svn统计修改代码行数完整源
- 合肥工业大学java实验及作业大全
- 《kettle中调用java类》示例代码
- 即时通讯系统JAVA源码
- java图状数据结构转换为树状数据结构
- Java记事本【源代码 实验报告】
- 通过java将word文档转换成html页面
- java swing 做的 汽车租赁系统
- java实现小型函数画图板(附源代码、
- 《韩顺平30.16GJava视频教程完整版》
- java简单的购物车实例程序
- java 人事管理系统 课程设计
- 基于java的类PGP文件加密传输系统
- java 二叉排序树与平衡二叉树的实现
- java数据库连接(所有的数据库都支持
- java 简易签到表
评论
共有 条评论