資源簡介
利用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?????????????g.fillRect(lt.get(i).getX()?lt.get(i).getY()?20?20);?//設置蛇的初始位置和大小
????????}
????}
????boolean?Dead()?{?//判定死亡
????????for(int?i?=?1;?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?????????if(ty?>?snackWin.GameLocY?+?snackWin.GameHeight?-?snackWin.Size)?ty?=?snackWin.GameLocY;
????????if(ty?????????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論壇 非常詳細
評論
共有 條評論