c語(yǔ)言游戲代碼大全直接復(fù)制(c語(yǔ)言超級(jí)簡(jiǎn)單的小游戲代碼)
今天給各位分享c語(yǔ)言游戲代碼大全直接復(fù)制的知識(shí),其中也會(huì)對(duì)c語(yǔ)言超級(jí)簡(jiǎn)單的小游戲代碼進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧!
本文目錄一覽:
- 1、c語(yǔ)言小游戲代碼
- 2、用C語(yǔ)言編寫(xiě)的小游戲代碼是什么?
- 3、C語(yǔ)言 游戲 代碼
- 4、求一段C語(yǔ)言的完整代碼,復(fù)制粘貼答案后可以運(yùn)行,要求如下:
- 5、誰(shuí)有一些簡(jiǎn)單小游戲的C語(yǔ)言程序?
c語(yǔ)言小游戲代碼
最基礎(chǔ)的貪吃蛇的代碼
#includestdio.h
#include慶搏windows.h//基本型態(tài)定義。支援型態(tài)定義函數(shù)。使用者界面函數(shù) 圖形裝置界面函數(shù)。
#includeconio.h //用戶通過(guò)按鍵盤(pán)產(chǎn)生的對(duì)應(yīng)操作 (控制臺(tái))
#includestdlib.h
#includetime.h //日期和時(shí)間頭文件
#define LEN 30
#define WID 25
int Snake[LEN][WID] = {0}; //數(shù)組的元素代表蛇的各個(gè)部位
char Sna_Hea_Dir = 'a';//記錄蛇頭的移動(dòng)方向
int Sna_Hea_X, Sna_Hea_Y;//記錄蛇頭的位置
int Snake_Len = 3;//記錄蛇的長(zhǎng)度
clock_t Now_Time;//記錄當(dāng)前時(shí)間,以便自動(dòng)移動(dòng)
int Wait_Time ;//記錄自動(dòng)移動(dòng)的時(shí)間間隔
int Eat_Apple = 1;//吃到蘋(píng)果表示為1
int Level ;
int All_Score = -1;
int Apple_Num = -1;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); //獲取標(biāo)準(zhǔn)輸出的句柄 windows.h
//句柄 :標(biāo)志應(yīng)用程序中的不同對(duì)象和同類對(duì)象中的不同的實(shí)例 方便操控,
void gotoxy(int x, int y)//設(shè)置光標(biāo)位置
{
COORD pos = {x,y}; //定義一個(gè)字符在控制臺(tái)屏幕上的坐標(biāo)POS
SetConsoleCursorPosition(hConsole, pos); //定位光標(biāo)位置的函數(shù)windows.h
}
void Hide_Cursor()//隱藏光標(biāo) 固定函數(shù)
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(hConsole, cursor_info);
}
void SetColor(int color)//設(shè)置顏色
{
SetConsoleTextAttribute(hConsole, color);
//是API設(shè)置字體顏色和背景色的函數(shù) 格式:SetConsoleTextAttribute(句柄,顏色);
}
void Print_Snake()//打印蛇頭和蛇的脖子和蛇尾
{
int iy, ix, color;
for(iy = 0; iy WID; ++iy)
for(ix = 0; ix LEN; ++ix)
{
if(Snake[ix][iy] == 1)//蛇頭念差告
{
SetColor(0xf); /仔明/oxf代表分配的內(nèi)存地址 setcolor:34行自定義設(shè)置顏色的函數(shù)
gotoxy(ix*2, iy);
printf("※");
}
if(Snake[ix][iy] == 2)//蛇的脖子
{
color = rand()%15 + 1; //rand()函數(shù)是產(chǎn)生隨機(jī)數(shù)的一個(gè)隨機(jī)函數(shù)。C語(yǔ)言里還有 srand()函數(shù)等。
//頭文件:stdlib.h
if(color == 14)
color -= rand() % 13 + 1; //變色
SetColor(color);
gotoxy(ix*2, iy);
printf("■");
}
if(Snake[ix][iy] == Snake_Len)
{
gotoxy(ix*2, iy);
SetColor(0xe);
printf("≈");
}
}
}
void Clear_Snake()//擦除貪吃蛇
{
int iy, ix;
for(iy = 0; iy WID; ++iy)
for(ix = 0; ix LEN; ++ix)
{
gotoxy(ix*2, iy);
if(Snake[ix][iy] == Snake_Len)
printf(" ");
}
}
void Rand_Apple()//隨機(jī)產(chǎn)生蘋(píng)果
{
int ix, iy;
do
{
ix = rand() % LEN;
iy = rand() % WID;
}while(Snake[ix][iy]);
Snake[ix][iy] = -1;
gotoxy(ix*2, iy);
printf("⊙");
Eat_Apple = 0;
}
void Game_Over()//蛇死掉了
{
gotoxy(30, 10);
printf("Game Over");
Sleep(3000);
system("pause nul");
exit(0);
}
void Move_Snake()//讓蛇動(dòng)起來(lái)
{
int ix, iy;
for(ix = 0; ix LEN; ++ix)//先標(biāo)記蛇頭
for(iy = 0; iy WID; ++iy)
if(Snake[ix][iy] == 1)
{
switch(Sna_Hea_Dir)//根據(jù)新的蛇頭方向標(biāo)志蛇頭
{
case 'w':
if(iy == 0)
Game_Over();
else
Sna_Hea_Y = iy - 1;
Sna_Hea_X = ix;
break;
case 's':
if(iy == (WID -1))
Game_Over();
else
Sna_Hea_Y = iy + 1;
Sna_Hea_X = ix;
break;
case 'a':
if(ix == 0)
Game_Over();
else
Sna_Hea_X = ix - 1;
Sna_Hea_Y = iy;
break;
case 'd':
if(ix == (LEN - 1))
Game_Over();
else
Sna_Hea_X = ix + 1;
Sna_Hea_Y = iy;
break;
default:
break;
}
}
if(Snake[Sna_Hea_X][Sna_Hea_Y]!=1Snake[Sna_Hea_X][Sna_Hea_Y]!=0Snake[Sna_Hea_X][Sna_Hea_Y]!=-1)
Game_Over();
if(Snake[Sna_Hea_X][Sna_Hea_Y] 0)//吃到蘋(píng)果
{
++Snake_Len;
Eat_Apple = 1;
}
for(ix = 0; ix LEN; ++ix)//處理蛇尾
for(iy = 0; iy WID; ++iy)
{
if(Snake[ix][iy] 0)
{
if(Snake[ix][iy] != Snake_Len)
Snake[ix][iy] += 1;
else
Snake[ix][iy] = 0;
}
}
Snake[Sna_Hea_X][Sna_Hea_Y] = 1;//處理蛇頭
}
void Get_Input()//控制蛇的移動(dòng)方向
{
if(kbhit())
{
switch(getch())
{
case 87:
Sna_Hea_Dir = 'w';
break;
case 83:
Sna_Hea_Dir = 's';
break;
case 65:
Sna_Hea_Dir = 'a';
break;
case 68:
Sna_Hea_Dir = 'd';
break;
default:
break;
}
}
if(clock() - Now_Time = Wait_Time)//蛇到時(shí)間自動(dòng)行走
{
Clear_Snake();
Move_Snake();
Print_Snake();
Now_Time = clock();
}
}
void Init()//初始化
{
system("title 貪吃毛毛蛇");
system("mode con: cols=80 lines=25");
Hide_Cursor();
gotoxy(61, 4);
printf("You Score:");
gotoxy(61, 6);
printf("You Level:");
gotoxy(61, 8);
printf("The Lenght:");
gotoxy(61, 10);
printf("The Speed:");
gotoxy(61, 12);
printf("Apple Num:");
int i;
for(i = 0; i Snake_Len; ++i)//生成蛇
Snake[10+i][15] = i+1;
int iy, ix;//打印蛇
for(iy = 0; iy WID; ++iy)
for(ix = 0; ix LEN; ++ix)
{
if(Snake[ix][iy])
{
SetColor(Snake[ix][iy]);
gotoxy(ix*2, iy);
printf("■");
}
}
}
void Pri_News()//打印信息
{
SetColor(0xe);
gotoxy(73,4);
All_Score += Level;
printf("%3d", All_Score);
gotoxy(73, 6);
printf("%3d", Level);
gotoxy(73, 8);
printf("%3d",Snake_Len);
gotoxy(73, 10);
printf("0.%3ds", Wait_Time/10);
gotoxy(73, 12);
printf("%d", Apple_Num);
}
void Lev_Sys()//等級(jí)系統(tǒng)
{
if(((Apple_Num-1) / 10) == Level)
{
++Level;
if(Wait_Time 50)
Wait_Time -= 50;
else
if(Wait_Time 10)
Wait_Time -= 10;
else
Wait_Time -= 1;
}
}
int main(void)
{
Init();
srand((unsigned)time(NULL));//設(shè)置隨機(jī)數(shù)的種子
Now_Time = clock();
int speed1=1000,speed2,a;
printf("\n");
printf("請(qǐng)輸入你想要的速度\n");
scanf("%d",speed2);
Level=1;
Wait_Time=speed1-speed2;
printf("請(qǐng)輸入你想要的蘋(píng)果數(shù)\n");
scanf("%d",a);
while(a--)
Rand_Apple();
while(1)
{
if(Eat_Apple)
{
++Apple_Num;
Rand_Apple();
Lev_Sys();
Pri_News();
}
Get_Input();
Sleep(10);
}
return 0;
}
用C語(yǔ)言編寫(xiě)的小游戲代碼是什么?
“猜數(shù)字小游戲”,每個(gè)數(shù)字后按空格,最后按回車(chē)確認(rèn)
#includestdio.h
#includestdlib.h
#includetime.h
int a[4],b[4];
int count=0;? //計(jì)算猜衫慶彎測(cè)次數(shù)
void csh( );? //初始化
void start( );? //開(kāi)始游戲
int main( )
{ csh( );
start( );
}
void csh( )? //初始化
{ printf("\n\n???????? 猜? 數(shù)? 字? 小? 游? 戲\n\n");
printf(“? ??猜四個(gè)數(shù)字,如數(shù)字與順序都正確記差讓為A,數(shù)字正確位置不對(duì)記為B.\n”);
}
void start( )? //開(kāi)始游戲
{int m,n;? //m是完全猜對(duì)的個(gè)數(shù),n是順序不對(duì)的個(gè)數(shù)
while(1)
{srand((unsigned)time(NULL));? //初始化隨機(jī)數(shù)發(fā)生器srand( )
while(1) { for(int i=0;i4;i++) a[i]=rand( )%10; ?//rand( )函數(shù)每次隨機(jī)產(chǎn)生一個(gè)0-9的數(shù)
if( (a[3]!=a[2]a[3]!=a[1]a[3]!=a[0])
(a[2]!=a[1]或悶a[2]!=a[0])a[1]!=a[0] ) break; }? //4個(gè)隨機(jī)數(shù)各自不相等
printf("?? ?請(qǐng)依次輸入4個(gè)一位整數(shù):\n\n? ?");
while(1)
{for(int i=0;i4;i++) scanf(“%d”,b[i]);
printf("?? ?你輸入的是:%d? %d? %d? %d ",b[0],b[1],b[2],b[3]);
m=0;n=0;
for(int i=0;i4;i++)
{for(int j=0;j4;j++)
{ if(b[i]==a[j]i==j)m=m+1; if(b[i]==a[j]i!=j)n=n+1; }
}
count=count+1;
printf("????? %dA? %dB?? 你試了%d次\n? ?",m,n,count);
if(m==4)break;
if(count==8){ count=0; break; }
}
printf("\n");
if(m==4)printf("???? 你猜對(duì)了(^-^)! 就是:%d %d %d %d\n",a[0],a[1],a[2],a[3]);
else printf("???? 你輸了(T-T)!哈哈!應(yīng)該是:%d %d %d %d\n",a[0],a[1],a[2],a[3]);
int z;
printf("???? (要繼續(xù)嗎?1或0)\n? ?");
scanf(“%d”,z);
if(z==0) break;
}
}
C語(yǔ)言 游戲 代碼
掃雷 #include graphics.h
#include stdlib.h
#include dos.h
#define LEFTPRESS 0xff01
#define LEFTCLICK 0xff10
#define LEFTDRAG 0xff19
#define MOUSEMOVE 0xff08
struct
{
int num;/*格子當(dāng)前處于什么狀態(tài),1有雷,0已經(jīng)顯示過(guò)數(shù)字或者空白格子*/
int roundnum;/*統(tǒng)計(jì)格子周?chē)卸嗌倮?/
int flag;/*右鍵按下顯示紅旗的標(biāo)志,0沒(méi)有紅旗標(biāo)志,1有紅旗標(biāo)志*/
}Mine[10][10];
int gameAGAIN=0;/*是否升亮重來(lái)的變量*/
int gamePLAY=0;/*是否是第一次玩游戲的標(biāo)志*/
int mineNUM;/*統(tǒng)計(jì)處理過(guò)的格子數(shù)*/
char randmineNUM[3];/*顯示數(shù)字的字符串*/
int Keystate;
int MouseExist;
int MouseButton;
int MouseX;
int MouseY;
void Init(void);/*圖形驅(qū)動(dòng)*/
void MouseOn(void);/*鼠標(biāo)光標(biāo)顯示*/
void MouseOff(void);/*鼠標(biāo)光標(biāo)隱藏*/
void MouseSetXY(int,int);/*設(shè)置當(dāng)前位置*/
int LeftPress(void);/*左鍵按下*/
int RightPress(void);/*鼠標(biāo)右鍵按下*/
void MouseGetXY(void);/*得到當(dāng)前位置*/
void Control(void);/*游戲開(kāi)始,重新,關(guān)閉*/
void GameBegain(void);/*游戲開(kāi)始畫(huà)面*/
void DrawSmile(void);/*畫(huà)笑臉*/
void DrawRedflag(int,int);/*顯示紅旗*/
void DrawEmpty(int,int,int,int);/*兩種空格子的顯示*/
void GameOver(void);/*游戲結(jié)束*/
void GameWin(void);/*顯示勝利*/
int MineStatistics(int,int);/*統(tǒng)計(jì)每個(gè)格子周?chē)睦讛?shù)*/
int ShowWhite(int,int);/*顯示無(wú)雷區(qū)的空白部分*/
void GamePlay(void);/*游戲過(guò)程*/
void Close(void);/*圖形關(guān)閉*/
void main(void)
{
Init();
Control();
Close();
}
void Init(void)/*圖形開(kāi)睜此始*/
{
int gd=DETECT,gm;
initgraph(gd,gm,"c:\\tc");
}
void Close(void)/*圖形關(guān)閉*/
{
closegraph();
}
void MouseOn(void)/*鼠標(biāo)光標(biāo)顯示*/
{
_AX=0x01;
geninterrupt(0x33);
}
void MouseOff(void)/*鼠標(biāo)光標(biāo)隱藏*/
{
_AX=0x02;
geninterrupt(0x33);
}
void MouseSetXY(int x,int y)/*設(shè)置當(dāng)前位置*/
{
_CX=x;
_DX=y;
_AX=0x04;
geninterrupt(0x33);
}
int LeftPress(void)/*鼠標(biāo)左鍵按下*/
{
_AX=0x03;
geninterrupt(0x33);
return(_BX1);
}
int RightPress(void)/*鼠標(biāo)右鍵按下*/
{
_AX=0x03;
geninterrupt(0x33);
return(_BX2);
}
void MouseGetXY(void)/*得到當(dāng)前位置*/
{
_AX=0x03;
geninterrupt(0x33);
MouseX=_CX;
MouseY=_DX;
}
void Control(void)/*游戲開(kāi)始,重新,關(guān)閉*/
{
int gameFLAG=1;/*游戲失敗后吵早寬判斷是否重新開(kāi)始的標(biāo)志*/
while(1)
{
if(gameFLAG)/*游戲失敗后沒(méi)判斷出重新開(kāi)始或者退出游戲的話就繼續(xù)判斷*/
{
GameBegain(); /*游戲初始畫(huà)面*/
GamePlay();/*具體游戲*/
if(gameAGAIN==1)/*游戲中重新開(kāi)始*/
{
gameAGAIN=0;
continue;
}
}
MouseOn();
gameFLAG=0;
if(LeftPress())/*判斷是否重新開(kāi)始*/
{
MouseGetXY();
if(MouseX280MouseX300MouseY65MouseY85)
{
gameFLAG=1;
continue;
}
}
if(kbhit())/*判斷是否按鍵退出*/
break;
}
MouseOff();
}
void DrawSmile(void)/*畫(huà)笑臉*/
{
setfillstyle(SOLID_FILL,YELLOW);
fillellipse(290,75,10,10);
setcolor(YELLOW);
setfillstyle(SOLID_FILL,BLACK);/*眼睛*/
fillellipse(285,75,2,2);
fillellipse(295,75,2,2);
setcolor(BLACK);/*嘴巴*/
bar(287,80,293,81);
}
void DrawRedflag(int i,int j)/*顯示紅旗*/
{
setcolor(7);
setfillstyle(SOLID_FILL,RED);
bar(198+j*20,95+i*20,198+j*20+5,95+i*20+5);
setcolor(BLACK);
line(198+j*20,95+i*20,198+j*20,95+i*20+10);
}
void DrawEmpty(int i,int j,int mode,int color)/*兩種空格子的顯示*/
{
setcolor(color);
setfillstyle(SOLID_FILL,color);
if(mode==0)/*沒(méi)有單擊過(guò)的大格子*/
bar(200+j*20-8,100+i*20-8,200+j*20+8,100+i*20+8);
else
if(mode==1)/*單擊過(guò)后顯示空白的小格子*/
bar(200+j*20-7,100+i*20-7,200+j*20+7,100+i*20+7);
}
void GameBegain(void)/*游戲開(kāi)始畫(huà)面*/
{
int i,j;
cleardevice();
if(gamePLAY!=1)
{
MouseSetXY(290,70); /*鼠標(biāo)一開(kāi)始的位置,并作為它的初始坐標(biāo)*/
MouseX=290;
MouseY=70;
}
gamePLAY=1;/*下次按重新開(kāi)始的話鼠標(biāo)不重新初始化*/
mineNUM=0;
setfillstyle(SOLID_FILL,7);
bar(190,60,390,290);
for(i=0;i10;i++)/*畫(huà)格子*/
for(j=0;j10;j++)
DrawEmpty(i,j,0,8);
setcolor(7);
DrawSmile();/*畫(huà)臉*/
randomize();
for(i=0;i10;i++)/*100個(gè)格子隨機(jī)賦值有沒(méi)有地雷*/
for(j=0;j10;j++)
{
Mine[i][j].num=random(8);/*如果隨機(jī)數(shù)的結(jié)果是1表示這個(gè)格子有地雷*/
if(Mine[i][j].num==1)
mineNUM++;/*現(xiàn)有雷數(shù)加1*/
else
Mine[i][j].num=2;
Mine[i][j].flag=0;/*表示沒(méi)紅旗標(biāo)志*/
}
sprintf(randmineNUM,"%d",mineNUM); /*顯示這次總共有多少雷數(shù)*/
setcolor(1);
settextstyle(0,0,2);
outtextxy(210,70,randmineNUM);
mineNUM=100-mineNUM;/*變量取空白格數(shù)量*/
MouseOn();
}
void GameOver(void)/*游戲結(jié)束畫(huà)面*/
{
int i,j;
setcolor(0);
for(i=0;i10;i++)
for(j=0;j10;j++)
if(Mine[i][j].num==1)/*顯示所有的地雷*/
{
DrawEmpty(i,j,0,RED);
setfillstyle(SOLID_FILL,BLACK);
fillellipse(200+j*20,100+i*20,7,7);
}
}
void GameWin(void)/*顯示勝利*/
{
setcolor(11);
settextstyle(0,0,2);
outtextxy(230,30,"YOU WIN!");
}
int MineStatistics(int i,int j)/*統(tǒng)計(jì)每個(gè)格子周?chē)睦讛?shù)*/
{
int nNUM=0;
if(i==0j==0)/*左上角格子的統(tǒng)計(jì)*/
{
if(Mine[0][1].num==1)
nNUM++;
if(Mine[1][0].num==1)
nNUM++;
if(Mine[1][1].num==1)
nNUM++;
}
else
if(i==0j==9)/*右上角格子的統(tǒng)計(jì)*/
{
if(Mine[0][8].num==1)
nNUM++;
if(Mine[1][9].num==1)
nNUM++;
if(Mine[1][8].num==1)
nNUM++;
}
else
if(i==9j==0)/*左下角格子的統(tǒng)計(jì)*/
{
if(Mine[8][0].num==1)
nNUM++;
if(Mine[9][1].num==1)
nNUM++;
if(Mine[8][1].num==1)
nNUM++;
}
else
if(i==9j==9)/*右下角格子的統(tǒng)計(jì)*/
{
if(Mine[9][8].num==1)
nNUM++;
if(Mine[8][9].num==1)
nNUM++;
if(Mine[8][8].num==1)
nNUM++;
}
else if(j==0)/*左邊第一列格子的統(tǒng)計(jì)*/
{
if(Mine[i][j+1].num==1)
nNUM++;
if(Mine[i+1][j].num==1)
nNUM++;
if(Mine[i-1][j].num==1)
nNUM++;
if(Mine[i-1][j+1].num==1)
nNUM++;
if(Mine[i+1][j+1].num==1)
nNUM++;
}
else if(j==9)/*右邊第一列格子的統(tǒng)計(jì)*/
{
if(Mine[i][j-1].num==1)
nNUM++;
if(Mine[i+1][j].num==1)
nNUM++;
if(Mine[i-1][j].num==1)
nNUM++;
if(Mine[i-1][j-1].num==1)
nNUM++;
if(Mine[i+1][j-1].num==1)
nNUM++;
}
else if(i==0)/*第一行格子的統(tǒng)計(jì)*/
{
if(Mine[i+1][j].num==1)
nNUM++;
if(Mine[i][j-1].num==1)
nNUM++;
if(Mine[i][j+1].num==1)
nNUM++;
if(Mine[i+1][j-1].num==1)
nNUM++;
if(Mine[i+1][j+1].num==1)
nNUM++;
}
else if(i==9)/*最后一行格子的統(tǒng)計(jì)*/
{
if(Mine[i-1][j].num==1)
nNUM++;
if(Mine[i][j-1].num==1)
nNUM++;
if(Mine[i][j+1].num==1)
nNUM++;
if(Mine[i-1][j-1].num==1)
nNUM++;
if(Mine[i-1][j+1].num==1)
nNUM++;
}
else/*普通格子的統(tǒng)計(jì)*/
{
if(Mine[i-1][j].num==1)
nNUM++;
if(Mine[i-1][j+1].num==1)
nNUM++;
if(Mine[i][j+1].num==1)
nNUM++;
if(Mine[i+1][j+1].num==1)
nNUM++;
if(Mine[i+1][j].num==1)
nNUM++;
if(Mine[i+1][j-1].num==1)
nNUM++;
if(Mine[i][j-1].num==1)
nNUM++;
if(Mine[i-1][j-1].num==1)
nNUM++;
}
return(nNUM);/*把格子周?chē)还灿卸嗌倮讛?shù)的統(tǒng)計(jì)結(jié)果返回*/
}
int ShowWhite(int i,int j)/*顯示無(wú)雷區(qū)的空白部分*/
{
if(Mine[i][j].flag==1||Mine[i][j].num==0)/*如果有紅旗或該格處理過(guò)就不對(duì)該格進(jìn)行任何判斷*/
return;
mineNUM--;/*顯示過(guò)數(shù)字或者空格的格子就表示多處理了一個(gè)格子,當(dāng)所有格子都處理過(guò)了表示勝利*/
if(Mine[i][j].roundnum==0Mine[i][j].num!=1)/*顯示空格*/
{
DrawEmpty(i,j,1,7);
Mine[i][j].num=0;
}
else
if(Mine[i][j].roundnum!=0)/*輸出雷數(shù)*/
{
DrawEmpty(i,j,0,8);
sprintf(randmineNUM,"%d",Mine[i][j].roundnum);
setcolor(RED);
outtextxy(195+j*20,95+i*20,randmineNUM);
Mine[i][j].num=0;/*已經(jīng)輸出雷數(shù)的格子用0表示已經(jīng)用過(guò)這個(gè)格子*/
return ;
}
/*8個(gè)方向遞歸顯示所有的空白格子*/
if(i!=0Mine[i-1][j].num!=1)
ShowWhite(i-1,j);
if(i!=0j!=9Mine[i-1][j+1].num!=1)
ShowWhite(i-1,j+1);
if(j!=9Mine[i][j+1].num!=1)
ShowWhite(i,j+1);
if(j!=9i!=9Mine[i+1][j+1].num!=1)
ShowWhite(i+1,j+1);
if(i!=9Mine[i+1][j].num!=1)
ShowWhite(i+1,j);
if(i!=9j!=0Mine[i+1][j-1].num!=1)
ShowWhite(i+1,j-1);
if(j!=0Mine[i][j-1].num!=1)
ShowWhite(i,j-1);
if(i!=0j!=0Mine[i-1][j-1].num!=1)
ShowWhite(i-1,j-1);
}
void GamePlay(void)/*游戲過(guò)程*/
{
int i,j,Num;/*Num用來(lái)接收統(tǒng)計(jì)函數(shù)返回一個(gè)格子周?chē)卸嗌俚乩?/
for(i=0;i10;i++)
for(j=0;j10;j++)
Mine[i][j].roundnum=MineStatistics(i,j);/*統(tǒng)計(jì)每個(gè)格子周?chē)卸嗌俚乩?/
while(!kbhit())
{
if(LeftPress())/*鼠標(biāo)左鍵盤(pán)按下*/
{
MouseGetXY();
if(MouseX280MouseX300MouseY65MouseY85)/*重新來(lái)*/
{
MouseOff();
gameAGAIN=1;
break;
}
if(MouseX190MouseX390MouseY90MouseY290)/*當(dāng)前鼠標(biāo)位置在格子范圍內(nèi)*/
{
j=(MouseX-190)/20;/*x坐標(biāo)*/
i=(MouseY-90)/20;/*y坐標(biāo)*/
if(Mine[i][j].flag==1)/*如果格子有紅旗則左鍵無(wú)效*/
continue;
if(Mine[i][j].num!=0)/*如果格子沒(méi)有處理過(guò)*/
{
if(Mine[i][j].num==1)/*鼠標(biāo)按下的格子是地雷*/
{
MouseOff();
GameOver();/*游戲失敗*/
break;
}
else/*鼠標(biāo)按下的格子不是地雷*/
{
MouseOff();
Num=MineStatistics(i,j);
if(Num==0)/*周?chē)鷽](méi)地雷就用遞歸算法來(lái)顯示空白格子*/
ShowWhite(i,j);
else/*按下格子周?chē)械乩?/
{
sprintf(randmineNUM,"%d",Num);/*輸出當(dāng)前格子周?chē)睦讛?shù)*/
setcolor(RED);
outtextxy(195+j*20,95+i*20,randmineNUM);
mineNUM--;
}
MouseOn();
Mine[i][j].num=0;/*點(diǎn)過(guò)的格子周?chē)讛?shù)的數(shù)字變?yōu)?表示這個(gè)格子已經(jīng)用過(guò)*/
if(mineNUM1)/*勝利了*/
{
GameWin();
break;
}
}
}
}
}
if(RightPress())/*鼠標(biāo)右鍵鍵盤(pán)按下*/
{
MouseGetXY();
if(MouseX190MouseX390MouseY90MouseY290)/*當(dāng)前鼠標(biāo)位置在格子范圍內(nèi)*/
{
j=(MouseX-190)/20;/*x坐標(biāo)*/
i=(MouseY-90)/20;/*y坐標(biāo)*/
MouseOff();
if(Mine[i][j].flag==0Mine[i][j].num!=0)/*本來(lái)沒(méi)紅旗現(xiàn)在顯示紅旗*/
{
DrawRedflag(i,j);
Mine[i][j].flag=1;
}
else
if(Mine[i][j].flag==1)/*有紅旗標(biāo)志再按右鍵就紅旗消失*/
{
DrawEmpty(i,j,0,8);
Mine[i][j].flag=0;
}
}
MouseOn();
sleep(1);
}
}
}
求一段C語(yǔ)言的完整代碼,復(fù)制粘貼答案后可以運(yùn)行,要求如下:
#includestdio.h
#includestdlib.h
#includetime.h
int?main(void)
{
int?i,n;
char?string1[][100]={"方塊","紅桃","黑桃","梅花"};
????char?string2[][10]={"2","3","4","5","6","7","8","9","10","J","Q","K","A",};
printf("請(qǐng)輸入所需要牌戚亂的張數(shù):");
scanf("%d",n);
srand(time(NULL));?
for(i=0;i攔困n;i++)
{
printf("%s",string1[rand()%4]);?
printf("%s",string2[rand()%13]);
printf("\n");
????}
????return?0;
}
//執(zhí)行結(jié)果簡(jiǎn)仔念
希望采納!3Q!
誰(shuí)有一些簡(jiǎn)單小游戲的C語(yǔ)言程序?
可以學(xué)寫(xiě)“貪吃蛇”代檔褲碼:
#include stdio.h
#include stdlib.h
#include conio.h
#include time.h
#include Windows.h
#define W 78? //游戲框的寬,x軸
#define H 26? //游戲框的高,y軸
int dir=3; ???//方向變量,初值3表示向“左”
int Flag=0; ??//吃了食物的標(biāo)志(1是0否)
int score=0;? //玩家得分
struct food{ int x;? //食物的x坐標(biāo)
? ? ? ? ? ? ? ?? int y;? //食物的y坐標(biāo)
? ? ? ? ? ? ?? }fod; ?//結(jié)構(gòu)體fod有2個(gè)成員
struct snake{ int len;? //蛇身長(zhǎng)度
? ? ? ? ? ? ? ? ?? int speed; //速度
? ? ? ? ? ? ? ? ? int x[100];
? ? ? ? ? ? ? ? ? int y[100];
? ? ? ? ? ? ? ?? }snk;? //結(jié)構(gòu)體snk有4個(gè)成員
void gtxy( int x,int y) ?//控制光標(biāo)移動(dòng)的函數(shù)
{ COORD coord;
coord.X=x;
coord.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void gtxy( int x,int y);? //以下聲明要用到的幾個(gè)自編函數(shù)
void csh( );? //初始化界面
void keymove( ); //按鍵操作移動(dòng)蛇
void putFod( );? //投放食物
int? Over( ); ??//游戲結(jié)束(1是0否)
void setColor(unsigned short p, unsigned short q); //設(shè)定顯示顏色
int main( )?? //主函數(shù)
{ csh( );
? while(1)
? ?? { Sleep(snk.speed);
? ? ?? keymove( );
? ? ?? putFod( );
? ? ?? if(Over( )) {system(“cls”);
? ? ? ? ? ? ? ? ? ? ? gtxy(W/2+1,H/2); printf(“游戲結(jié)鏈蠢困束!T__T”);
? ? ? ? ? ? ? ? ? ? ? gtxy(W/2+1,H/2+2); printf(“玩家總棚念分:%d分”,score);
? ? ? ? ? ? ? ? ? ? ? getch( );? break;
? ? ? ? ? ? ? ? ? ?? }
? ?? }
? return 0;
}
void csh( )? //初始化界面
{ int i;? gtxy(0,0);
CONSOLE_CURSOR_INFO cursor_info={1,0};? //以下兩行是隱藏光標(biāo)的設(shè)置
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),cursor_info);
for(i=0;i=W;i=i+2)? //橫坐標(biāo)要為偶數(shù),因?yàn)檫@個(gè)要打印的字符占2個(gè)位置
{ setColor(2, 0);? //設(shè)定打印顏色為綠字黑底
? gtxy(i,0); ?printf("■"); ?//打印上邊框
? gtxy(i,H); printf("■"); ?//打印下邊框
}
for(i=1;iH;i++)
{ gtxy(0,i); printf("■"); ?//打印左邊框
gtxy(W,i); printf("■"); ?//打印右邊框
}
while(1)
??{ srand((unsigned)time(NULL));? //啟動(dòng)隨機(jī)數(shù)發(fā)生器srand( )
fod.x=rand()%(W-4)+2;? //隨機(jī)函數(shù)rand( )產(chǎn)生一個(gè)從0到比”(W-4)”小1的數(shù)再加2
fod.y=rand()%(H-2)+1;? //隨機(jī)函數(shù)rand( )產(chǎn)生一個(gè)從0到比”(H-2)”小1的數(shù)再加1
if (fod.x%2==0) break;? //fod.x是食物的橫坐標(biāo),要是2的倍數(shù)(為偶數(shù))
}
setColor(12, 0);? //設(shè)定打印顏色為淡紅字黑底
gtxy(fod.x,fod.y); printf("●"); ?//到食物坐標(biāo)處打印初試食物
snk.len=3; ?????//蛇身長(zhǎng)
snk.speed=350;? //刷新蛇的時(shí)間,即是移動(dòng)速度
snk.x[0]=W/2+1;? //蛇頭橫坐標(biāo)要為偶數(shù)(因?yàn)閃/2=39)
snk.y[0]=H/2;?? ?//蛇頭縱坐標(biāo)
setColor(9, 0);? //設(shè)定打印顏色為淡藍(lán)字黑底
gtxy(snk.x[0], snk.y[0]); ?printf("■"); ?//打印蛇頭
for(i=1;isnk.len;i++)
?{ snk.x[i]=snk.x[i-1]+2; ?snk.y[i]=snk.y[i-1];
??gtxy(snk.x[i],snk.y[i]); ?printf("■"); ?//打印蛇身
}
setColor(7, 0);? //恢復(fù)默認(rèn)的白字黑底
return;
}
void keymove( )? //按鍵操作移動(dòng)蛇
{ int key;
if( kbhit( ) )??? //如有按鍵輸入才執(zhí)行下面操作
{ key=getch( );
? ? if (key==224)? //值為224表示按下了方向鍵,下面要再次獲取鍵值
? ? { key=getch( );
? ? ? if(key==72dir!=2)dir=1;? //72表示按下了向上方向鍵
? ?? if(key==80dir!=1)dir=2;? //80為向下
? ?? if(key==75dir!=4)dir=3;? //75為向左
? ?? if(key==77dir!=3)dir=4;? //77為向右
?? }
if (key==32)
? { while(1) if((key=getch( ))==32) break; }? //32為空格鍵,這兒用來(lái)暫停
? }
if (Flag==0)? //如沒(méi)吃食物,才執(zhí)行下面操作擦掉蛇尾
?{gtxy(snk.x[snk.len-1],snk.y[snk.len-1]); ?printf("? "); }
int i;
for (i = snk.len - 1; i 0; i--) ?//從蛇尾起每節(jié)存儲(chǔ)前一節(jié)坐標(biāo)值(蛇頭除外)
? ? ? { snk.x[i]=snk.x[i-1]; ?snk.y[i]=snk.y[i-1]; }
switch (dir)? //判斷蛇頭該往哪個(gè)方向移動(dòng),并獲取最新坐標(biāo)值
{ case 1: snk.y[0]--; break; ??//dir=1要向上移動(dòng)
? case 2: snk.y[0]++; break;? //dir=2要向下移動(dòng)
? case 3: snk.x[0]-=2; break;? //dir=3要向左移動(dòng)
? case 4: snk.x[0]+=2; break;? //dir=4要向右移動(dòng)
}
setColor(9, 0);
gtxy(snk.x[0], snk.y[0]); printf("■"); ?//打印蛇頭
if (snk.x[0] == fod.x snk.y[0] == fod.y)? //如吃到食物則執(zhí)行以下操作
??{ printf("\007"); snk.len++; score += 100; snk.speed -= 5; Flag = 1; }//這007是響鈴
else Flag = 0;? //沒(méi)吃到食物Flag的值為0
if(snk.speed150) snk.speed= snk.speed+5;? //作弊碼,不讓速度無(wú)限加快
}
void putFod( )? //投放食物
{ if (Flag == 1)? //如吃到食物才執(zhí)行以下操作,生成另一個(gè)食物
??{ while (1)
??{ int i,n= 1;
???srand((unsigned)time(NULL));? //啟動(dòng)隨機(jī)數(shù)發(fā)生器srand( ),接下產(chǎn)生食物坐標(biāo)值
? ?fod.x = rand( ) % (W - 4) + 2;? //產(chǎn)生在游戲框范圍內(nèi)的一個(gè)x坐標(biāo)值
? ?fod.y = rand( ) % (H - 2) + 1;? //產(chǎn)生在游戲框范圍內(nèi)的一個(gè)y坐標(biāo)值
? ?for (i = 0; i snk.len; i++) ??//隨機(jī)生成的食物不能在蛇的身體上
? ? ? ? ? ? ? { if (fod.x == snk.x[i] fod.y == snk.y[i]) { n= 0; break;} }
???if (n fod.x % 2 == 0) break; ?//n不為0且橫坐標(biāo)為偶數(shù),則食物坐標(biāo)取值成功
??}
? ? setColor(12, 0);
?? gtxy(fod.x, fod.y); ?printf("●"); ?//光標(biāo)到取得的坐標(biāo)處打印食物
? }
return;
}
int Over( )? //判斷游戲是否結(jié)束的函數(shù)
{ int ?i;
setColor(7, 0);
gtxy(2,H+1); printf(“暫停鍵:space.”); ?//以下打印一些其它信息
gtxy(2,H+2); printf(“游戲得分:%d”,score);
if (snk.x[0] == 0 || snk.x[0] == W) return 1;? //蛇頭觸碰左右邊界
if (snk.y[0] == 0 || snk.y[0] == H) return 1;? //蛇頭觸碰上下邊界
for (i = 1; i snk.len; i++)
{ if (snk.x[0] == snk.x[i] snk.y[0] == snk.y[i]) return 1; } //蛇頭觸碰自身
return 0;? //沒(méi)碰到邊界及自身時(shí)就返回0
}
void setColor(unsigned short ForeColor = 7, unsigned short BackGroundColor = 0)
{ HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, ForeColor + BackGroundColor * 0x10);
} //用來(lái)設(shè)定顏色的函數(shù)
關(guān)于c語(yǔ)言游戲代碼大全直接復(fù)制和c語(yǔ)言超級(jí)簡(jiǎn)單的小游戲代碼的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
掃描二維碼推送至手機(jī)訪問(wèn)。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。