資源簡介
適合java初學者學習用、本文件采用內部類、只有一個文件,代碼實現了關卡、分數等 附有詳細注釋,解壓后導入eclipse即可打開(最好是1.8的jdk,過低版本可能會報錯)。

代碼片段和文件信息
package?貪吃蛇;
import?java.awt.Color;
import?java.awt.Font;
import?java.awt.Graphics;
import?java.awt.Point;
import?java.awt.Toolkit;
import?java.awt.event.KeyAdapter;
import?java.awt.event.KeyEvent;
import?java.util.linkedList;
import?java.util.Random;
import?javax.swing.Jframe;
import?javax.swing.JOptionPane;
import?javax.swing.JPanel;
public?class?DisplayPanel?extends?Jframe?{
public?static?final?int?ROWS?=?30; //定義行數。
public?static?final?int?COLS?=?30; //定義列數。
public?static?final?int?BLOCK_SIZE?=?15; //定義格子長寬。
public?double?fenshu?=?0; //定義分數。
public?double?dengji?=?1; //定義等級。
public?int?i?ii?=?1; //定義各種中間參數,用于計算分數和關切等級。
public?boolean?judge?=?true; //定義布爾類型、判斷蛇是否死亡、即生命值。
public?Random?rand?=?new?Random(); //創建一個隨機數對象。
public?Snake?snake?=?new?Snake(); //創建一個蛇對象。
public?Food?food?=?new?Food(); //創建食物對象。
public?Poisonousfood?pfood?=?new?Poisonousfood(); //創建毒物對象。
public?DisplayPanel()?{
this.addKeyListener(new?key());
this.settitle(“學習用貪吃蛇“);
this.add(new?Activepanel());
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(456?479);
this.setVisible(true);
this.setResizable(false);
int?width?=?Toolkit.getDefaultToolkit().getScreenSize().width; //劇中顯示方法。
int?height?=?Toolkit.getDefaultToolkit().getScreenSize().height;
this.setBounds((width?-?456)?/?2?(height?-?479)?/?2?456?479);
}
public?class?Activepanel?extends?JPanel?{ //游戲顯示面板類。
public?Activepanel()?{
new?Thread(new?qd()).start(); //啟動線程。
}
public?void?paintComponent(Graphics?g)?{ //畫布??用于畫網格、分數、關卡、蛇、食物、毒物。
super.paintComponent(g);
setBackground(Color.WHITE);
g.setColor(Color.GRAY); //畫分數和關卡。
g.setFont(new?Font(“宋體“?Font.BOLD?100));
String?fs?=?String.valueOf(fenshu);
g.drawString(fs?120?150);
String?dj?=?“第“?+?String.valueOf(i)?+?“關“;
g.drawString(dj?90?265);
g.setColor(Color.BLACK); //畫網格。
for?(int?i?=?1;?i? g.drawLine(0?i?*?BLOCK_SIZE?COLS?*?BLOCK_SIZE?BLOCK_SIZE?*?i);
}
for?(int?i?=?1;?i? g.drawLine(i?*?BLOCK_SIZE?0?BLOCK_SIZE?*?i?ROWS?*?BLOCK_SIZE);
}
pfood.drawme(g); //畫毒物。
food.drawme(g); //畫食物
snake.drawme(g); //畫蛇。
}
public?class?qd?implements?Runnable?{ //線程
public?void?run()?{
while?(judge)?{
judge?=?snake.death(); //每次刷新調用蛇死亡的方法,判斷蛇是否死亡。
if?(fenshu?>?10)?{ //計算分數、設定10分為一關。
dengji?=?Math.ceil(fenshu?/?10);
}
i?=?(int)?dengji;
if?(i?!=?ii)?{ //判斷關卡是否變動、變動著刷新,進入下一關。
ii?=?i;
snake.initial();
food.Refresh();
pfood.Refresh(snake?food);
}
repaint();
try?{
Thread.sleep(200?/?i);
}?catch?(InterruptedException?e)?{
e.printStackTrace();
}
}
}
}
}
public?class?Snake?{ //蛇類。
public?String?newfx?=?“r“;
public?String?oldfx?=?“r“;
public?linkedList?body?=?new?linkedList
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????301??2018-05-23?20:45??簡單貪吃蛇\.classpath
?????文件????????391??2018-06-16?16:40??簡單貪吃蛇\.project
?????文件????????598??2018-05-23?20:45??簡單貪吃蛇\.settings\org.eclipse.jdt.core.prefs
?????文件???????1860??2018-06-16?17:02??簡單貪吃蛇\bin\貪吃蛇\DisplayPanel$Activepanel$qd.class
?????文件???????2367??2018-06-16?17:02??簡單貪吃蛇\bin\貪吃蛇\DisplayPanel$Activepanel.class
?????文件???????1515??2018-06-16?17:02??簡單貪吃蛇\bin\貪吃蛇\DisplayPanel$Food.class
?????文件????????721??2018-06-16?17:02??簡單貪吃蛇\bin\貪吃蛇\DisplayPanel$key.class
?????文件???????2375??2018-06-16?17:02??簡單貪吃蛇\bin\貪吃蛇\DisplayPanel$Poisonousfood.class
?????文件???????4622??2018-06-16?17:02??簡單貪吃蛇\bin\貪吃蛇\DisplayPanel$Snake.class
?????文件???????2055??2018-06-16?17:02??簡單貪吃蛇\bin\貪吃蛇\DisplayPanel.class
?????文件???????8574??2018-06-16?17:02??簡單貪吃蛇\src\貪吃蛇\DisplayPanel.java
?????目錄??????????0??2018-06-16?17:03??簡單貪吃蛇\bin\貪吃蛇
?????目錄??????????0??2018-06-16?17:03??簡單貪吃蛇\src\貪吃蛇
?????目錄??????????0??2018-06-16?17:03??簡單貪吃蛇\.settings
?????目錄??????????0??2018-06-16?17:03??簡單貪吃蛇\bin
?????目錄??????????0??2018-06-16?17:03??簡單貪吃蛇\src
?????目錄??????????0??2018-06-16?17:03??簡單貪吃蛇
-----------?---------??----------?-----??----
????????????????25379????????????????????17
- 上一篇:項目源碼java項目TT商城
- 下一篇:Android簡單的計時器源碼
評論
共有 條評論