c語言貪吃蛇vc
❶ 怎麼用VC++6.0程序設計貪吃蛇游戲啊c語言
還是自己下苦工做吧,你要源程序,網上到處都可以下載到,何必在此回處要程序呢,C代碼實現答比C++難多了,不過都差不多,C++用了很多面向對象的重載,多態繼承封裝等知識。C的話純粹的函數調用,而且代碼復用率太低了
❷ 貪吃蛇c語言的源代碼為什麼不能在vc上運行
vc沒有圖形化系統函數,必須要用turbo c編譯
❸ 急求c語言寫的貪吃蛇游戲完整程序,我是用vc++運行的 急求 急求
我提醒你一下,你的方向應該是錯誤的。
如果要繪制圖形,必須有窗體,而C語言下的窗體環境是MFC,這個使用起來較為復雜。還有一個就是過去DOS環境下的TC2.0,他可以直接使用Graphic.H,可以繪制圖形。
❹ C語言編貪吃蛇,用VC++可以嗎能運行嗎
完全可以,Dev也可以的,看你個人的喜好。個人建議用Dev,他站的內存少,便於安裝,功能也很強大,c語言學習的最佳搭檔。
❺ c語言貪吃蛇代碼
基本思路:
蛇每吃一個食物蛇身子就增加一格,用UP, DOWN, LEFT, RIGHT控制蛇頭的運動,而蛇身子跟著蛇頭走,每後一格蛇身子下一步走到上一格蛇身子的位置,以此類推。
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define BEG_X 2
#define BEG_Y 1
#define WID 20
#define HEI 20
HANDLE hout;
typedef enum {UP, DOWN, LEFT, RIGHT} DIR;
typedef struct Snake_body
{
COORD pos;//蛇身的位置
struct Snake_body *next;//下一個蛇身
struct Snake_body *prev;//前一個蛇身
}SNAKE, *PSNAKE;
PSNAKE head = NULL;//蛇頭
PSNAKE tail = NULL;//蛇尾
//畫游戲邊框的函數
void DrawBorder()
{
int i, j;
COORD pos = {BEG_X, BEG_Y};
for(i = 0; i < HEI; ++i)
{
SetConsoleCursorPosition(hout, pos);
for(j = 0; j < WID; ++j)
{
if(i == 0)//第一行
{
if(j == 0)
printf("┏");
else if(j == WID - 1)
printf("┓");
else
printf("━");
}
else if(i == HEI - 1)//最後一行
{
if(j == 0)
printf("┗");
else if(j == WID - 1)
printf("┛");
else
printf("━");
}
else if(j == 0 || j == WID - 1)//第一列或最後一列
printf("┃");
else
printf(" ");
}
++pos.Y;
}
}
//添加蛇身的函數
void AddBody(COORD pos)
{
PSNAKE pnew = (PSNAKE)calloc(1, sizeof(SNAKE));
pnew->pos = pos;
if(!head)
{
head = tail = pnew;
}
else
{
pnew->next = head;//新創建蛇身的next指向原先的蛇頭
head->prev = pnew;//原先的蛇頭的prev指向新創建的蛇身
head = pnew;//把新創建的蛇身作為新的蛇頭
}
SetConsoleCursorPosition(hout, head->pos);
printf("◎");
}
//蛇身移動的函數
void MoveBody(DIR dir)
{
PSNAKE ptmp;
COORD pos = head->pos;
switch(dir)
{
case UP:
if(head->pos.Y > BEG_Y + 1)
--pos.Y;
else
return;
break;
case DOWN:
if(head->pos.Y < BEG_Y + HEI - 2)
++pos.Y;
else
return;
break;
case LEFT:
if(head->pos.X > BEG_X + 2)
pos.X -= 2;
else
return;
break;
case RIGHT:
if(head->pos.X < BEG_X + (WID - 2) * 2)
pos.X += 2;
else
return;
break;
}
AddBody(pos);//添加了一個新的蛇頭
ptmp = tail;//保存當前的蛇尾
tail = tail->prev;
if(tail)
tail->next = NULL;
SetConsoleCursorPosition(hout, ptmp->pos);
printf(" ");
free(ptmp);
}
int main()
{
int ctrl;
DIR dir = RIGHT;//初始蛇的方向是向右的
COORD pos = {BEG_X + 2, BEG_Y + HEI / 2};
system("color 0E");
system("mode con cols=90 lines=30");
hout = GetStdHandle(STD_OUTPUT_HANDLE);
printf(" ------------貪吃蛇的移動------------");
DrawBorder();
//自定義幾個蛇的身體
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
//控制蛇的移動
while(ctrl = getch())
{
switch(ctrl)
{
case 'w':
if(dir == DOWN)
continue;
dir = UP;
break;
case 's':
if(dir == UP)
continue;
dir = DOWN;
break;
case 'a':
if(dir == RIGHT)
continue;
dir = LEFT;
break;
case 'd':
if(dir == LEFT)
continue;
dir = RIGHT;
break;
case 'q':
return 0;
}
MoveBody(dir);
}
return 0;
}
(5)c語言貪吃蛇vc擴展閱讀:
實現邏輯
1,可以設置游標,就能實現制定位置列印製定符號。
2,涉及一個結構體,包含兩個元素坐標元素和一個結構體指針。
3,結構體串聯形成鏈表,遍歷獲取成員坐標,列印符號得到蛇身。
4,不斷的加頭,去尾,重新遍歷坐標,再列印形成蛇的移動。
5,食物產生的位置判定,不能越界,也不能與蛇身體重合。
6,蛇的轉向判定,一條規則,不允許倒退。
7,轉向的實現,跟行進方向決定新的關節坐標(當前頭的上下左右)
8,死亡檢測,是否頭節點坐標是否與牆壁重合,是否與身體其他關節重合。
9,加速減速,設置刷新休眠時間實現。
❻ 跪求c語言貪吃蛇代碼,運行環境:vc++6.0 ,有詳細的注釋!!!以後加分!
代碼太多, 可以發郵箱!
❼ 求c語言貪吃蛇設計思路vc6.0下 本人感激不盡
/*貪吃蛇程序bychampking*/#defineN200#include#include#include#defineLEFT0x4b00#defineRIGHT0x4d00#defineDOWN0x5000#defineUP0x4800#defineESC0x011binti,key;intscore=0;/*得分*/intgamespeed=100000;/*游戲速度自己調整*/structFood{intx;/*食物的橫坐標*/inty;/*食物的縱坐標*/intyes;/*判斷是否要出現食物的變數*/}food;/*食物的結構體*/structSnake{intx[N];inty[N];intnode;/*蛇的節數*/intdirection;/*蛇移動方向*/intlife;/*蛇的生命,0活著,1死亡*/}snake;voidInit(void);/*圖形驅動*/voidClose(void);/*圖形結束*/voidDrawK(void);/*開始畫面*/voidGameOver(void);/*結束游戲*/voidGamePlay(void);/*玩游戲具體過程*/voidPrScore(void);/*輸出成績*//*主函數*/voidmain(void){Init();/*圖形驅動*/DrawK();/*開始畫面*/GamePlay();/*玩游戲具體過程*/Close();/*圖形結束*/}/*圖形驅動*/voidInit(void){intgd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc");cleardevice();}/*開始畫面,左上角坐標為(50,40),右下角坐標為(610,460)的圍牆*/voidDrawK(void){/*setbkcolor(LIGHTGREEN);*/setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設置線型*/for(i=50;i0;i--)/*蛇的每個環節往前移動,也就是貪吃蛇的關鍵演算法*/{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}/*1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動蛇頭*/switch(snake.direction){case1:snake.x[0]+=10;break;case2:snake.x[0]-=10;break;case3:snake.y[0]-=10;break;case4:snake.y[0]+=10;break;}for(i=3;i595||snake.y[0]455)/*蛇是否撞到牆壁*/{GameOver();/*本次游戲結束*/snake.life=1;/*蛇死*/}if(snake.life==1)/*以上兩種判斷以後,如果蛇死就跳出內循環,重新開始*/break;if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以後*/{setcolor(0);/*把畫面上的食物東西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10);snake.x[snake.node]=-20;snake.y[snake.node]=-20;/*新的一節先放在看不見的位置,下次循環就取前一節的位置*/snake.node++;/*蛇的身體長一節*/food.yes=1;/*畫面上需要出現新的食物*/score+=10;PrScore();/*輸出新得分*/}setcolor(4);/*畫出蛇*/for(i=0;i