之前在網上看到很多人在在找貪吃蛇原始碼,難道今天比較閒就動手寫了乙個小專案現在分享給大家。
遊戲原始碼獲取方式1:遊戲原始碼
要點:
1. 圖形的繪製
2. 貪吃蛇的移動
3. 食物的隨機分布
4. 碰撞檢測
5. 死亡檢測
一 圖形的繪製
圖形繪製使用的是imageicon裡的painticon()
方法,該方法接收三個引數:
第乙個引數是要繪製的地方,第二個引數是畫筆物件,第三個是要繪製圖形位置的x座標,第四個是要繪製圖形的y座標主要**如下:
public void paint(graphics g) else if (direction.equals("d")) else if (direction.equals("l")) else if (direction.equals("u"))
//畫出蛇的身體
for(int i=1
;i snake.body
.painticon(this, g, snake.snakex[i], snake.snakey[i]);
}//提示文字
if(!isstarted)
//遊戲結束提示
if(isdead)
//paint score
//顯示分數
color color = g.getcolor();
g.setcolor(color.white);
font font=new font("隸書", font.bold, 20);
g.setfont(font);
score=(len-3)*5
; g.drawstring("分數:"+score, 680, 30);
g.setcolor(color);
snake.imgfood
.painticon(this, g, food.foodx, food.foody);
}
二 貪吃蛇的移動:if(isstarted && !isdead)
//移動蛇的頭部
if(direction.equals("r"))else
if (direction.equals("d")) else
if (direction.equals("l")) else
if (direction.equals("u"))
三 食物的隨機分布食物是貪吃蛇遊戲中第二重要的,它的位置要隨機分布而不是固定的位置,這就要用到random函式了,該函式可以產生隨機數。初始化食物類的時候會對其座標進行隨機分配,當貪吃蛇將食物吃下之後會呼叫getrandomxy()方法再獲取乙個隨機位置主要**如下:
public
food()
public
void
getrandomxy()
四 碰撞檢測如何知曉貪吃蛇可以吃食物!就必須進行碰撞檢測,當貪吃蛇的頭與食物接觸,食物重新繪製,原理很簡單,雖然碰撞檢測有很多種,比如矩形碰撞,畫素檢測等。但是對於貪吃蛇這種小遊戲矩形碰撞已經足夠了。首先要用到rectangle類把貪吃蛇的頭包裝成乙個矩形,然後食物也包裝成乙個矩形,當兩個矩形有接觸時,碰撞!
rectangle類的初始化方法需要四個引數。
被包裝物體左上角x座標值
被包裝物體左上角y座標值
物體寬度
物體長度
主要**如下:
貪吃蛇包裝:
public rectangle getrect()
食物包裝:
public rectangle getrect()
碰撞檢測:
private
void
checkfood()
}
五 死亡檢測死亡檢測比較簡單,只要判斷蛇頭的座標是否大於邊界或小於邊界。當頭與身體的座標重合之後也可以判斷為死亡最主要**如下:
if(snake.snakex[0]==snake.snakex[i]&&snake.snakey[0]==snake.snakey[i])
if(snake.snakex[0]<=0||snake.snakex[0]>=775||snake.snakey[0]<=0||snake.snakey[0]>=725)
java swing 實現貪吃蛇小遊戲
if i 1 radomg jpanel.getgraphics radomg.setcolor color.red 建立乙個蛇執行緒 drawsnak snakt new drawsnak snakt.start snakg jpanel.getgraphics snakg.setcolor co...
貪吃蛇小遊戲
1 doctype html 2 html 3 head 4 title snake title 5head 6 body style text align center margih 100px background color aaaaaa 7 canvas id canv width 400 ...
C 貪吃蛇小遊戲
自學了幾天c 嘗試寫了乙個貪吃蛇小遊戲,比較詳細地做了注釋,實現 1 貪吃蛇基本功能 2 長按加速 3 計分板 xaml 及介面 namespace 貪吃蛇 新食物生成 public void newfoodgenerate 計時器每乙個計時週期內的時間處理程式 void timer tick ob...