1.簡單的能用vc貪吃蛇的c語言代碼,就是最簡單的,那些音樂,顏色都
#include #include #include #define MAZE_SIZE (15)#define FPS (3)#define SBC 'O'#define BGC ' '#define WALL (1)#define BODY (4)#define FOOD (8)void Initialize();int Update();void Present();void CleanUp();int main(){ printf("Press any key to start。
"); do { Initialize(); _getch(); while (Update()) Present(); CleanUp(); printf(" Game Over!\n"); printf("Press 'G' to continue。"); } while (_getch() == 'g'); return 0;}int HeadDirection = 1;int KeyMapping[256];int HasFood = 0;int DisplayMaze[MAZE_SIZE][MAZE_SIZE];int CollisionMaze[MAZE_SIZE][MAZE_SIZE];struct SnakeBody{ int x, y; struct SnakeBody *next;};SnakeBody SnakeHead;int SnakeLength = 1;void InitializeMaze();void InitializeKeyMapping();void InitializeSnake();void CheckKeyboard();void ExtendLength(int x, int y);void MoveBody(int x, int y);int UpdateSnake();void GenerateFood();void Initialize(){ srand(time(0)); InitializeMaze(); InitializeKeyMapping(); InitializeSnake();}int Update(){ _sleep(1000 / FPS); CheckKeyboard(); if (!HasFood) GenerateFood(); return UpdateSnake();}void Present(){ int i, j; system("cls"); for (i = 0; i next; free(p); p = pp; } * = 0;}void InitializeMaze(){ int i, j; HasFood = 0; for (i = 0; i x = SnakeHead.x; psb->y = SnakeHead.y; psb->next = *; SnakeHead.x = x; SnakeHead.y = y; * = psb; CollisionMaze[SnakeHead.x][SnakeHead.y] = BODY; DisplayMaze[SnakeHead.x][SnakeHead.y] = SBC; HasFood = 0;}void MoveBody(int x, int y){ SnakeBody *psb = *; int ttx, tty; int tx = SnakeHead.x, ty = SnakeHead.y; SnakeHead.x = x, SnakeHead.y = y; CollisionMaze[x][y] = BODY; DisplayMaze[x][y] = SBC; while (psb) { ttx = psb->x, tty = psb->y; psb->x = tx; psb->y = ty; tx = ttx; ty = tty; psb = psb->next; } CollisionMaze[tx][ty] = 0; DisplayMaze[tx][ty] = BGC;}int UpdateSnake(){ int hx = SnakeHead.x, hy = SnakeHead.y; switch (HeadDirection) { case 1: hx--; break; case 2: hy++; break; case 3: hx++; break; case 4: hy--; break; } switch (CollisionMaze[hx][hy]) { case FOOD: ExtendLength(hx, hy); return 1; case WALL: case BODY: return 0; default: MoveBody(hx, hy); return 1; }}void GenerateFood(){ int cc = 0, rn = rand() % ((MAZE_SIZE - 2) * (MAZE_SIZE - 2) - SnakeLength); for (int i = 0; i 評論0 0 0。
2.新手求c語言貪吃蛇源代碼,一定要有注釋,不要有光標移動函數之類
yes=1; setcolor(11);/.y[0]=100;/*圖形驅動*/:\,這樣才可以讓蛇吃到*/ while(1)/*蛇的節數*/,壓ESC鍵結束*/.yes==0)/i+=10) { rectangle(50; food; void main(void) { Init(),左上角坐標為(50; int node; cleardevice();/!kbhit())/ int y;/*左邊*/*得分*/*開始畫面*/ void GamePlay(void); int y[N];*需要出現新食物*/*下邊*/ void GameOver(void),蛇自己移動身體*/ rectangle(i; DrawK();/,0活著,&gm.x[1]=110;i+=10)/,i+10.y=rand()%350+60,0表示已經存在食物*/.y%*=0; int gamespeed=50000!=0) food;*上邊*//.x%10; snake,59; } / }food!=0)/ { if(food;*食物的橫坐標*/ivoid Init(void),i+10);/.x++; } if(food,40);c.y++;/ } / //,1死亡*/*畫面上有食物了*/ // food,i; void Init(void) { int gd=DETECT;\*節數*/ while(food;*蛇頭*/*玩游戲具體過程*/ snake;*蛇移動方向*////*主函數*/*游戲速度自己調整*/ rectangle(601;/*圖形驅動*/ { food; { rectangle(i;);/ void PrScore(void).yes=0;tc&*=2;// food; struct Food { int x,0;*活著*/ void DrawK(void) { / int yes;*玩游戲具體過程*/*隨機數發生器*/ food; snake;*可以重復玩游戲;/*判斷是否要出現食物的變量*/ snake; void DrawK(void); }snake;/,key;*食物的縱坐標*//*/*開始畫面,右下角坐標為(610; while(food; snake,451;/," } for(i=40; PrScore(); } } /*右邊*/,i+10),THICK_WIDTH); setlinestyle(SOLID_LINE;*食物的結構體*/ struct Snake { int x[N],460).y[1]=100;*方向往右*/*畫圍墻*/*1表示需要出現新食物; /.yes==1)/*食物隨機出現后必須讓食物能夠在整格內;*輸出得分*/,49).x=rand()%400+60; void GamePlay(void) { randomize(); int life;*圖形驅動*/*setbkcolor(LIGHTGREEN); int direction;snake,610,460)的圍墻*///*圖形結束*//*在沒有按鍵的情況下; void Close(void);=450; int score=0; GamePlay(); { while(;*結束游戲*//snake;*輸出成績*/*設置線型*/ Close().x[0]=100;// for(i=50,gm;/貪吃蛇 #define N 200 #include #include #include #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b int i;i*畫面上有食物了就要顯示*/ initgraph(&gd,i;/* 蛇的生命。
3.求單純C的貪吃蛇源代碼
#define N 200
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
int i,key;
int score=0;/*得分*/
.
.
.
.
/blog/*?id=15988
4.貪吃蛇 java代碼
主要用了*這個類:import *.*; import *.*; @SuppressWarnings("serial") public class MainClass extends JFrame { ControlSnake control; Toolkit kit; Dimension dimen; public static void main(String[] args) { new MainClass("my snake"); } public MainClass(String s) { super(s); control = new ControlSnake(); *usable(true); kit = *aultToolkit(); dimen = *eenSize(); add(control); setLayout(new BorderLayout()); setLocation(* / 3, * / 3);// **3,**3 setSize(FWIDTH, FHEIGHT); (*_ON_CLOSE); setResizable(false); setVisible(true); } public static final int FWIDTH = 315; public static final int FHEIGHT = 380; } import *.*; import *.*; import *.*; import *.*; import *; import *; @SuppressWarnings("serial") public class ControlSnake extends JPanel implements ActionListener { Random rand; ArrayList list, listBody; String str, str1; static boolean key; int x, y, dx, dy, fx, fy, flag; int snakeBody; int speed; public ControlSnake() { snakeBody = 1; str = "上下左右方向鍵控制 P鍵暫停。
"; str1 = "現在的長度為:" + snakeBody; key = true; flag = 1; speed = 700; rand = new Random(); list = new ArrayList(); listBody = new ArrayList(); x = 5; y = 5; *(new Point(x, y)); *(*(0)); dx = 10; dy = 0; fx = *t(30) * 10 + 5;// 2 fy = *t(30) * 10 + 5;// 2 setBackground(*); setSize(new Dimension(318, 380)); final Timer time = new Timer(speed, this); *(); addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (*Code() == 37) { dx = -10; dy = 0; } else if (*Code() == 38) { dx = 0; dy = -10; } else if (*Code() == 39) { dx = 10; dy = 0; } else if (*Code() == 40) { dx = 0; dy = 10; } else if (*Code() == 80) { if (flag % 2 == 1) { *(); } if (flag % 2 == 0) { *(); } flag++; } } }); } public void paint(Graphics g) { *or(*); *ct(0, 0, 400, 400); *or(*_GRAY); *ne(3, 3, 305, 3); *ne(3, 3, 3, 305); *ne(305, 3, 305, 305); *ne(3, 305, 305, 305); *or(*); for (int i = 0; i < *(); i++) { *ct(*(i).x, *(i).y, 9, 9); } *ct(x, y, 9, 9); *or(*); *ct(fx, fy, 9, 9); *or(*_GRAY); str1 = "現在的長度為:" + snakeBody; *ring(str, 10, 320); *ring(str1, 10, 335); } public void actionPerformed(ActionEvent e) { x += dx; y += dy; if (makeOut() == false) { *ssageDialog(null, "重新開始。
"); speed = 700; snakeBody = 1; x = 5; y = 5; *(); *(new Point(x, y)); *(); *(*(0)); dx = 10; dy = 0; } addPoint(x, y); if (x == fx && y == fy) { speed = (int) (speed * 0.8);//速度增加參數 if (speed < 200) { speed = 100; } fx = *t(30) * 10 + 5;// 2 fy = *t(30) * 10 + 5;// 2 snakeBody++;// 2 } // 2 repaint(); } public void addPoint(int xx, int yy) {// 動態的記錄最新發生的50步以內的移動過的坐標// 并畫出最新的snakeBody if (*() < 100) {//蛇身長度最長為100 *(new Point(xx, yy)); } else { *(0); *(new Point(xx, yy)); } if (snakeBody == 1) { *(0); *(0, *(*() - 1)); } else { *(); if (*() < snakeBody) { for (int i = *() - 1; i > 0; i--) { *(*(i)); } } else { for (int i = *() - 1; *() < snakeBody; i--) { *(*(i)); } } } } public boolean makeOut() { if ((x < 3 || y < 3) || (x > 305 || y > 305)) { return false; } for (int i = 0; i < *() - 1; i++) { for (int j = i + 1; j < *(); j++) { if (*(i).equals(*(j))) { return false; } } } return true; } }。
5.簡單貪吃蛇C語言程序
#include
6.求一段JAVA編寫的貪吃蛇小程序源代碼
用MVC方式實現的貪吃蛇游戲,共有4個類。
運行GreedSnake運行即可。主要是觀察者模式的使用,我已經添加了很多注釋了。
1、/** 程序名稱:貪食蛇* 原作者:BigF* 修改者:algo* 說明:我以前也用C寫過這個程序,現在看到BigF用Java寫的這個,發現雖然作者自稱是Java的初學者,* 但是明顯編寫程序的素養不錯,程序結構寫得很清晰,有些細微得地方也寫得很簡潔,一時興起之* 下,我認真解讀了這個程序,發現數據和表現分開得很好,而我近日正在學習MVC設計模式,* 因此嘗試把程序得結構改了一下,用MVC模式來實現,對源程序得改動不多。* 我同時也為程序增加了一些自己理解得注釋,希望對大家閱讀有幫助。
*/ package mvcTest;/*** @author WangYu* @version 1.0* Description:* * Create on :Date :2005-6-13 Time:15:57:16* LastModified:* History:*/ public class GreedSnake { public static void main(String[] args) { SnakeModel model = new SnakeModel(20,30); SnakeControl control = new SnakeControl(model); SnakeView view = new SnakeView(model,control);//添加一個觀察者,讓view成為model的觀察者 *erver(view);(new Thread(model)).start(); } }-------------------------------------------------------------2、package mvcTest;//* import *nt; import *tener;/*** MVC中的Controler,負責接收用戶的操作,并把用戶操作通知Model*/ public class SnakeControl implements KeyListener{ SnakeModel model; public SnakeControl(SnakeModel model){ * = model; } public void keyPressed(KeyEvent e) { int keyCode = *Code(); if (*g){ // 運行狀態下,處理的按鍵 switch (keyCode) { case *_UP:*Direction(*); break; case *_DOWN:*Direction(*); break; case *_LEFT:*Direction(*); break; case *_RIGHT:*Direction(*); break; case *_ADD:case *_PAGE_UP:*p(); break; case *_SUBTRACT:case *_PAGE_DOWN:*own(); break; case *_SPACE:case *_P:*PauseState(); break; default:} }// 任何情況下處理的按鍵,按鍵導致重新啟動游戲 if (keyCode == *_R || keyCode == *_S || keyCode == *_ENTER) { *(); } } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { } }-------------------------------------------------------------3、/** */ package mvcTest;/*** 游戲的Model類,負責所有游戲相關數據及運行* @author WangYu* @version 1.0* Description:* * Create on :Date :2005-6-13 Time:15:58:33* LastModified:* History:*///* import *.*; import *; import *List; import *able; import *;/*** 游戲的Model類,負責所有游戲相關數據及運行*/ class SnakeModel extends Observable implements Runnable { boolean[][] matrix; // 指示位置上有沒蛇體或食物 LinkedList nodeArray = new LinkedList(); // 蛇體 Node food; int maxX; int maxY; int direction = 2; // 蛇運行的方向 boolean running = false; // 運行狀態 int timeInterval = 200; // 時間間隔,毫秒 double speedChangeRate = 0.75; // 每次得速度變化率 boolean paused = false; // 暫停標志 int score = 0; // 得分 int countMove = 0; // 吃到食物前移動的次數// UP and DOWN should be even// RIGHT and LEFT should be odd public static final int UP = 2; public static final int DOWN = 4; public static final int LEFT = 1; public static final int RIGHT = 3; public SnakeModel( int maxX, int maxY) { * = maxX; * = maxY; reset(); } public void reset(){ direction = *; // 蛇運行的方向 timeInterval = 200; // 時間間隔,毫秒 paused = false; // 暫停標志 score = 0; // 得分 countMove = 0; // 吃到食物前移動的次數// initial matirx, 全部清0 matrix = new boolean[maxX][]; for (int i = 0; i < maxX; ++i) { matrix[i] = new boolean[maxY]; *(matrix[i], false); }// initial the snake// 初始化蛇體,如果橫向位置超過20個,長度為10,否則為橫向位置的一半 int initArrayLength = maxX > 20 ? 10 : maxX / 2; *(); for (int i = 0; i < initArrayLength; ++i) { int x = maxX / 2 + i;//maxX被初始化為20 int y = maxY / 2; //maxY被初始化為30//nodeArray[x,y]: [10,15]-[11,15]-[12,15]~~[20,15]//默認的運行方向向上,所以游戲一開始nodeArray就變為:// [10,14]-[10,15]-[11,15]-[12,15]~~[19,15] *t(new Node(x, y)); matrix[x][y] = true; }// 創建食物 food = createFood(); matrix[food.x][food.y] = true; } public void changeDirection(int newDirection) {// 改變的方向不能與原。
7.貪吃蛇 java代碼
自己寫著玩的,很簡單,你試一試哦。
主要用了*這個類:import *.*;import *.*;@SuppressWarnings("serial")public class MainClass extends JFrame { ControlSnake control; Toolkit kit; Dimension dimen; public static void main(String[] args) { new MainClass("my snake"); } public MainClass(String s) { super(s); control = new ControlSnake(); *usable(true); kit = *aultToolkit(); dimen = *eenSize(); add(control); setLayout(new BorderLayout()); setLocation(* / 3, * / 3);// **3,**3 setSize(FWIDTH, FHEIGHT); (*_ON_CLOSE); setResizable(false); setVisible(true); } public static final int FWIDTH = 315; public static final int FHEIGHT = 380;}import *.*;import *.*;import *.*;import *.*;import *;import *;@SuppressWarnings("serial")public class ControlSnake extends JPanel implements ActionListener { Random rand; ArrayList list, listBody; String str, str1; static boolean key; int x, y, dx, dy, fx, fy, flag; int snakeBody; int speed; public ControlSnake() { snakeBody = 1; str = "上下左右方向鍵控制 P鍵暫停。"; str1 = "現在的長度為:" + snakeBody; key = true; flag = 1; speed = 700; rand = new Random(); list = new ArrayList(); listBody = new ArrayList(); x = 5; y = 5; *(new Point(x, y)); *(*(0)); dx = 10; dy = 0; fx = *t(30) * 10 + 5;// 2 fy = *t(30) * 10 + 5;// 2 setBackground(*); setSize(new Dimension(318, 380)); final Timer time = new Timer(speed, this); *(); addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (*Code() == 37) { dx = -10; dy = 0; } else if (*Code() == 38) { dx = 0; dy = -10; } else if (*Code() == 39) { dx = 10; dy = 0; } else if (*Code() == 40) { dx = 0; dy = 10; } else if (*Code() == 80) { if (flag % 2 == 1) { *(); } if (flag % 2 == 0) { *(); } flag++; } } }); } public void paint(Graphics g) { *or(*); *ct(0, 0, 400, 400); *or(*_GRAY); *ne(3, 3, 305, 3); *ne(3, 3, 3, 305); *ne(305, 3, 305, 305); *ne(3, 305, 305, 305); *or(*); for (int i = 0; i < *(); i++) { *ct(*(i).x, *(i).y, 9, 9); } *ct(x, y, 9, 9); *or(*); *ct(fx, fy, 9, 9); *or(*_GRAY); str1 = "現在的長度為:" + snakeBody; *ring(str, 10, 320); *ring(str1, 10, 335); } public void actionPerformed(ActionEvent e) { x += dx; y += dy; if (makeOut() == false) { *ssageDialog(null, "重新開始。
"); speed = 700; snakeBody = 1; x = 5; y = 5; *(); *(new Point(x, y)); *(); *(*(0)); dx = 10; dy = 0; } addPoint(x, y); if (x == fx && y == fy) { speed = (int) (speed * 0.8);//速度增加參數 if (speed < 200) { speed = 100; } fx = *t(30) * 10 + 5;// 2 fy = *t(30) * 10 + 5;// 2 snakeBody++;// 2 } // 2 repaint(); } public void addPoint(int xx, int yy) { // 動態的記錄最新發生的50步以內的移動過的坐標 // 并畫出最新的snakeBody if (*() < 100) {//蛇身長度最長為100 *(new Point(xx, yy)); } else { *(0); *(new Point(xx, yy)); } if (snakeBody == 1) { *(0); *(0, *(*() - 1)); } else { *(); if (*() < snakeBody) { for (int i = *() - 1; i > 0; i--) { *(*(i)); } } else { for (int i = *() - 1; *() < snakeBody; i--) { *(*(i)); } } } } public boolean makeOut() { if ((x < 3 || y < 3) || (x > 305 || y > 305)) { return false; } for (int i = 0; i < *() - 1; i++) { for (int j = i + 1; j < *(); j++) { if (*(i).equals(*(j))) { return false; } } } return true; }}。
8.求助 C++作業 貪吃蛇代碼編寫
#define N 200#include