資源簡介
java版本貪吃蛇,效果很好,可以自行增強,學習入門的好例子

代碼片段和文件信息
package?cn.itcast.snake.controller;
import?java.awt.Font;
import?java.awt.event.KeyAdapter;
import?java.awt.event.KeyEvent;
import?java.util.HashSet;
import?java.util.Set;
import?javax.swing.JLabel;
import?cn.itcast.snake.entities.Food;
import?cn.itcast.snake.entities.Ground;
import?cn.itcast.snake.entities.Snake;
import?cn.itcast.snake.listener.GameListener;
import?cn.itcast.snake.listener.SnakeListener;
import?cn.itcast.snake.util.Global;
import?cn.itcast.snake.view.GamePanel;
/**
?*?控制器
?*?控制Ground?Snake?Food
?*?負責游戲的邏輯
?*?處理按鍵事件
?*?
?*?實現了SnakeListener接口?可以處理Snake?觸發的事件
?*?方法?snakeEatFood()?處理蛇吃到食物后觸發的?snakeEatFood事件?但什么也沒做
?*?
?*?
?*?@version?1.0?01/01/08
?*?
?*?@author?湯陽光
?*?
?*/
public?class?Controller?extends?KeyAdapter?implements?SnakeListener?{
/*?地形?*/
private?Ground?ground;
/*?蛇?*/
private?Snake?snake;
/*?食物?*/
private?Food?food;
/*?顯示?*/
private?GamePanel?gamePanel;
/*?提示信息?*/
private?JLabel?gameInfoLabel;
private?boolean?playing;
private?int?map;
/*?控制器監聽器?*/
private?Set?listeners?=?new?HashSet();
/**
?*?處理按鍵事件
?*?接受按鍵?根據按鍵不同?發出不同的指令
?*?UP:?改變蛇的移動方向為向上
?*?DOWN:?改變蛇的移動方向為向下
?*?LEFT:?改變蛇的移動方向為向左?
?*?RIGHT:?改變蛇的移動方向為向右
?*?SPACE:?暫停/繼續
?*?PAGE?UP:?加快蛇的移動速度
?*?PAGE?DOWN:?減慢蛇的移動速度
?*?Y:?重新開始游戲
?*/
public?void?keyPressed(KeyEvent?e)?{
if?(e.getKeyCode()?!=?KeyEvent.VK_Y?&&?!playing)
return;
//?TODO?Auto-generated?method?stub
/*?根據按鍵不同?讓蛇改變不同的方向?*/
switch?(e.getKeyCode())?{
/*?方向鍵?上?*/
case?KeyEvent.VK_UP:
if?(snake.isPause())?{
snake.changePause();
for?(GameListener?l?:?listeners)
l.gameContinue();
}
snake.changeDirection(Snake.UP);
break;
/*?方向鍵?下?*/
case?KeyEvent.VK_DOWN:
if?(snake.isPause())?{
snake.changePause();
for?(GameListener?l?:?listeners)
l.gameContinue();
}
snake.changeDirection(Snake.DOWN);
break;
/*?方向鍵?左?*/
case?KeyEvent.VK_LEFT:
if?(snake.isPause())?{
snake.changePause();
for?(GameListener?l?:?listeners)
l.gameContinue();
}
snake.changeDirection(Snake.LEFT);
break;
/*?方向鍵?右?*/
case?KeyEvent.VK_RIGHT:
if?(snake.isPause())?{
snake.changePause();
for?(GameListener?l?:?listeners)
l.gameContinue();
}
snake.changeDirection(Snake.RIGHT);
break;
/*?回車或空格?(暫停)?*/
case?KeyEvent.VK_ENTER:
case?KeyEvent.VK_SPACE:
snake.changePause();
/*?===?*/
for?(GameListener?l?:?listeners)
if?(snake.isPause())
l.gamePause();
else
l.gameContinue();
break;
/*?PAGE_UP?加速?*/
case?KeyEvent.VK_PAGE_UP:
snake.speedUp();
break;
/*?PAGE_DOWN?減速?*/
case?KeyEvent.VK_PAGE_DOWN:
snake.speedDown();
break;
/*?字母鍵?Y?(重新開始游戲)?*/
case?KeyEvent.VK_Y:
if?(!isPlaying())
newGame();
break;
}
/*?重
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????232??2008-01-28?09:37??貪吃蛇游戲源代碼\ITCastSnake1.0_final\.classpath
?????文件????????387??2008-02-17?14:28??貪吃蛇游戲源代碼\ITCastSnake1.0_final\.project
?????文件???????7629??2008-03-20?11:55??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\controller\Controller.class
?????文件???????1950??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\entities\Food.class
?????文件???????3621??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\entities\Ground.class
?????文件???????1539??2008-03-20?11:55??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\entities\Snake$SnakeDriver.class
?????文件???????6408??2008-03-20?11:55??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\entities\Snake.class
?????文件???????1053??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\GameOptionPanel$1.class
?????文件???????6501??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\GameOptionPanel.class
?????文件???????1216??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件????????920??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件???????1366??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件???????1363??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件???????1877??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件???????1231??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件???????1199??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件???????1219??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件???????1208??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件???????1233??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件???????1314??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件???????1218??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件????????967??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件???????7951??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\game\Mainfr
?????文件????????218??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\listener\GameListener.class
?????文件????????182??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\listener\SnakeListener.class
?????文件???????3090??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\util\Global.class
?????文件???????2397??2008-03-20?11:52??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\cn\itcast\snake\view\GamePanel.class
?????文件???????1609??2008-01-28?09:46??貪吃蛇游戲源代碼\ITCastSnake1.0_final\bin\czbk.png
?????文件???????1909??2008-03-20?11:56??貪吃蛇游戲源代碼\ITCastSnake1.0_final\doc\allclasses-fr
?????文件???????1709??2008-03-20?11:56??貪吃蛇游戲源代碼\ITCastSnake1.0_final\doc\allclasses-nofr
............此處省略132個文件信息
評論
共有 條評論