c語言程序游戲代碼大全(簡單的c語言游戲代碼)
本篇文章給大家談?wù)刢語言程序游戲代碼大全,以及簡單的c語言游戲代碼對應(yīng)的知識點(diǎn),希望對各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
- 1、求c語言編譯小游戲的代碼,比如掃雷原代碼等?
- 2、關(guān)于用C語言編寫的小游戲的游戲代碼,如黑白棋貪吃蛇等
- 3、求C語言小游戲源程序
- 4、用C語言編寫的小游戲代碼是什么?
- 5、求幾C語言個(gè)小游戲代碼,簡單的,要注釋、、謝謝了、
求c語言編譯小游戲的代碼,比如掃雷原代碼等?
#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)顯示過數(shù)字或者空白格子*/
int roundnum;/*統(tǒng)計(jì)格子周圍有多少雷*/
int flag;/*右鍵按下顯示紅旗的標(biāo)志,0沒有紅旗標(biāo)志,1有紅旗標(biāo)志*/
}Mine[10][10];
int gameAGAIN=0;/*是否重來的變量*/
int gamePLAY=0;/*是否是第一次玩游戲的標(biāo)志*/
int mineNUM;/*統(tǒng)計(jì)處理過的格子數(shù)*/
char randmineNUM[3];/*顯示數(shù)字的字符串*/
int Keystate;
int MouseExist;
int MouseButton;
int MouseX;
int MouseY;
void Init(void);/*圖形驅(qū)動*/
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);/*游戲開始,重新,關(guān)閉*/
void GameBegain(void);/*游戲開始畫面*/
void DrawSmile(void);/*畫笑臉*/
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è)格子周圍的雷數(shù)*/
int ShowWhite(int,int);/*顯示無雷區(qū)的空白部分*/
void GamePlay(void);/*游戲過程*/
void Close(void);/*圖形關(guān)閉*/
void main(void)
{
Init();
Control();
Close();
}
void Init(void)/*圖形開始*/
{
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)/*游戲開始,重新,關(guān)閉*/
{
int gameFLAG=1;/*游戲失敗后判斷是否重新開始的標(biāo)志*/
while(1)
{
if(gameFLAG)/*游戲失敗后沒判斷出重新開始或者退出游戲的話就繼續(xù)判斷*/
{
GameBegain(); /*游戲初始畫面*/
GamePlay();/*具體游戲*/
if(gameAGAIN==1)/*游戲中重新開始*/
{
gameAGAIN=0;
continue;
}
}
MouseOn();
gameFLAG=0;
if(LeftPress())/*判斷是否重新開始*/
{
MouseGetXY();
if(MouseX280MouseX300MouseY65MouseY85)
{
gameFLAG=1;
continue;
}
}
if(kbhit())/*判斷是否按鍵退出*/
break;
}
MouseOff();
}
void DrawSmile(void)/*畫笑臉*/
{
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)/*沒有單擊過的大格子*/
bar(200+j*20-8,100+i*20-8,200+j*20+8,100+i*20+8);
else
if(mode==1)/*單擊過后顯示空白的小格子*/
bar(200+j*20-7,100+i*20-7,200+j*20+7,100+i*20+7);
}
void GameBegain(void)/*游戲開始畫面*/
{
int i,j;
cleardevice();
if(gamePLAY!=1)
{
MouseSetXY(290,70); /*鼠標(biāo)一開始的位置,并作為它的初始坐標(biāo)*/
MouseX=290;
MouseY=70;
}
gamePLAY=1;/*下次按重新開始的話鼠標(biāo)不重新初始化*/
mineNUM=0;
setfillstyle(SOLID_FILL,7);
bar(190,60,390,290);
for(i=0;i10;i++)/*畫格子*/
for(j=0;j10;j++)
DrawEmpty(i,j,0,8);
setcolor(7);
DrawSmile();/*畫臉*/
randomize();__page_break__
for(i=0;i10;i++)/*100個(gè)格子隨機(jī)賦值有沒有地雷*/
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;/*表示沒紅旗標(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é)束畫面*/
{
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è)格子周圍的雷數(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++;
}__page_break__
return(nNUM);/*把格子周圍一共有多少雷數(shù)的統(tǒng)計(jì)結(jié)果返回*/
}
int ShowWhite(int i,int j)/*顯示無雷區(qū)的空白部分*/
{
if(Mine[i][j].flag==1||Mine[i][j].num==0)/*如果有紅旗或該格處理過就不對該格進(jìn)行任何判斷*/
return;
mineNUM--;/*顯示過數(shù)字或者空格的格子就表示多處理了一個(gè)格子,當(dāng)所有格子都處理過了表示勝利*/
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)用過這個(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)/*游戲過程*/
{
int i,j,Num;/*Num用來接收統(tǒng)計(jì)函數(shù)返回一個(gè)格子周圍有多少地雷*/
for(i=0;i10;i++)
for(j=0;j10;j++)
Mine[i][j].roundnum=MineStatistics(i,j);/*統(tǒng)計(jì)每個(gè)格子周圍有多少地雷*/
while(!kbhit())
{
if(LeftPress())/*鼠標(biāo)左鍵盤按下*/
{
MouseGetXY();
if(MouseX280MouseX300MouseY65MouseY85)/*重新來*/
{
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)/*如果格子有紅旗則左鍵無效*/
continue;
if(Mine[i][j].num!=0)/*如果格子沒有處理過*/
{
if(Mine[i][j].num==1)/*鼠標(biāo)按下的格子是地雷*/
{
MouseOff();
GameOver();/*游戲失敗*/
break;
}
else/*鼠標(biāo)按下的格子不是地雷*/
{
MouseOff();
Num=MineStatistics(i,j);
if(Num==0)/*周圍沒地雷就用遞歸算法來顯示空白格子*/
ShowWhite(i,j);
else/*按下格子周圍有地雷*/
{
sprintf(randmineNUM,"%d",Num);/*輸出當(dāng)前格子周圍的雷數(shù)*/
setcolor(RED);
outtextxy(195+j*20,95+i*20,randmineNUM);
mineNUM--;
}
MouseOn();
Mine[i][j].num=0;/*點(diǎn)過的格子周圍雷數(shù)的數(shù)字變?yōu)?表示這個(gè)格子已經(jīng)用過*/
if(mineNUM1)/*勝利了*/
{
GameWin();
break;
}
}
}
}
}
if(RightPress())/*鼠標(biāo)右鍵鍵盤按下*/
{
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)/*本來沒紅旗現(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);
}
}
}
關(guān)于用C語言編寫的小游戲的游戲代碼,如黑白棋貪吃蛇等
我這兒有c語言的自寫俄羅斯方塊,請指教:#include
#include
#include
#include
#include
#include
#include
#define ESC 0x011b
#define UP 0x4800
#define DOWN 0x5000
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define SPACE 0x3920
#define Y 0x1579
#define N 0x316e
#define clearkbd(); while(bioskey(1)) bioskey(0); /*清空鍵盤緩沖隊(duì)列*/
void update();
void messagebox();
void process();
void initremove();
void initinfo();
void initbox();
void initposition();
void next_shape();
typedef struct shape /*形狀單一狀態(tài)的記錄*/
{ int attr;
int co[8];
}shape;
typedef struct RE_AB /*相對,絕對坐標(biāo)記錄*/
{ int Rx,Ry;
int x1,x2,y1,y2;
}RE_AB;
RE_AB RA;
shape p[19]={ { RED,0,1,1,0,1,1,2,1 }, /*數(shù)組中保證y最大的在最后,以便initposition使用*/
{ RED,0,1,1,0,1,1,1,2 },
{ RED,0,0,1,0,2,0,1,1 },
{ RED,0,0,0,1,1,1,0,2 },
{ GREEN,0,0,1,0,2,0,3,0 },
{ GREEN,0,0,0,1,0,2,0,3 },
{ CYAN,0,0,0,1,1,0,1,1 },
{ BROWN,0,0,1,0,1,1,2,1 },
{ BROWN,1,0,0,1,1,1,0,2 },
{ BLUE,1,0,2,0,1,1,0,1 },
{ BLUE,0,0,0,1,1,1,1,2 },
{ MAGENTA,0,0,0,1,0,2,1,2 },
{ MAGENTA,2,0,0,1,1,1,2,1},
{ MAGENTA,0,0,1,0,1,1,1,2 },
{ MAGENTA,0,0,0,1,1,0,2,0 },
{ YELLOW,0,2,1,0,1,1,1,2 },
{ YELLOW,0,0,1,0,2,0,2,1 },
{ YELLOW,1,0,0,0,0,1,0,2},
{ YELLOW,0,0,0,1,1,1,2,1 },
};
int nback,nleft,nright,r_f[12][22],rs1,rs2,xcors,xcorb,ycors,ycorb;
/*檢查方快有沒有左,右,下接觸,游戲區(qū)內(nèi)所有格子有無顏色記錄數(shù)組,rs1形狀記錄,rs2為提示框用,記錄小格子在游戲區(qū)中的位置,按鍵存儲*/
void interrupt (*oldint)(); /*系統(tǒng)定時(shí)中斷*/
int count_down=0,count_other=0; /*中斷記時(shí)*/
void interrupt newint() /*設(shè)置新的中斷程序*/
{ count_down++;
count_other++;
oldint();
}
void intenable() /*設(shè)置中斷向量表,啟動新的中斷程序*/
{ oldint=getvect(0x1c);
disable();
setvect(0x1c,newint);
enable();
}
void intrestore() /*恢復(fù)中斷向量*/
{ disable();
setvect(0x1c,oldint);
enable();
}
void HZ12(int x0,int y0,int w,int color,char *s) /*根據(jù)字模,在dos下顯示漢字*/
/*橫坐標(biāo),縱坐標(biāo),字間隔,漢字顏色,漢字字符串*/
{ FILE *fp;
register char buffer[24];
register char str[2];
unsigned long fpos;/*fpos為最終偏移動量*/
register int i,j,k;
fp=fopen(hzk12,r);/*打開12*12漢字苦*/
while(*s)/*一直到字符串結(jié)束為止*/
{
if(*s0)/*漢字輸出*/
{ str[0]=(*s)-0xa0;
str[1]=*(s+1)-0xa0;
fpos=((str[0]-1)*94+(str[1]-1))*24L;/*計(jì)算漢字在hzk12的偏移量*/
fseek(fp,fpos,SEEK_SET);/*指針移動到當(dāng)前位置*/
fread(buffer,24,1,fp);/*讀取一個(gè)漢字到數(shù)組中*/
for(i=0;i12;i++)/*12行*/
for(j=0;j2;j++)/*兩個(gè)字節(jié)*/
for(k=0;k8;k++)/*8位*/
if (((buffer[i*2+j](7-k))0x1)!=NULL)/*是一就畫點(diǎn)*/
putpixel(x0+8*j+k,y0+i,color);
s+=2;/*一個(gè)漢字占兩個(gè)字節(jié),現(xiàn)在將指針移動兩個(gè)字節(jié)*/
x0+=w;/*顯示坐標(biāo)也按照間隔移動*/
}
else/*顯示非漢字字符*/
{ settextstyle(0,0,1);
setcolor(color);
str[0]=*s;str[1]=0;
outtextxy(x0,y0+3,str);/*顯示單個(gè)字符*/
x0+=w-7;/*顯示單個(gè)字符后的x坐標(biāo)變化*/
s++;/*指針移動到下一個(gè)字節(jié)*/
}
}
fclose(fp);
}
void translation() /*把相對坐標(biāo)解釋為絕對坐標(biāo)*/
{ if(RA.Rx==1)
{ RA.x1=1; RA.x2=16; }
else
{ RA.x1=16*(RA.Rx-1); RA.x2=16*RA.Rx; }
if(RA.Ry==1)
{ RA.y1=1; RA.y2=16; }
else
{ RA.y1=16*(RA.Ry-1); RA.y2=16*RA.Ry; }
}
int check_b() /*檢查是否到達(dá)低部*/
{ int x,y,i,zf=0; /*zf為是否有顏色填充記錄*/
for(i=0;i7;i++,i++)
{ x=RA.Rx+p[rs1].co[i];
y=RA.Ry+p[rs1].co[i+1];
if(y=6)
zf+=r_f[x-15][y-6+1];
}
if(zf==0)
return 1;
else
return 0;
}
int finish()
{ int tfull=0,i; /*判斷頂層空間是否有填充*/
for(i=1;i11;i++)
tfull+=r_f[i][1];
if(tfull!=0)
return 1; /*告訴judge()可以結(jié)束了*/
}
int check_l() /*檢查形狀是否與左接觸*/
{ int x,y,i,zf=0;
for(i=0;i7;i++,i++)
{ x=RA.Rx+p[rs1].co[i];
y=RA.Ry+p[rs1].co[i+1];
if(y6)
zf+=r_f[x-15-1][y-6];
if(y=6x==16)
zf+=1;
}
if(zf==0)
return 1;
else
return 0;
}
int check_r() /*檢查形狀是否與右接觸*/
{ /*zf為是否有顏色填充記錄*/
int x,y,i,zf=0; /*zf為是否有顏色填充記錄*/
for(i=0;i7;i++,i++)
{
x=RA.Rx+p[rs1].co[i];
y=RA.Ry+p[rs1].co[i+1];
if(y6)
zf+=r_f[x-15+1][y-6];
if(y=6x==25)
zf+=1;
}
if(zf==0)
return 1;
else
return 0;
}
void check_touch()
{ nback=check_b();
nleft=check_l();
nright=check_r();
}
void draw(int cb) /*畫形狀,cb=1以填充色畫形狀,cb=2以背景色畫形狀,cb=3以白色畫形狀*/
{ int i,recordx=RA.Rx,recordy=RA.Ry;
for(i=0;i7;i++,i++)
{ RA.Rx+=p[rs1].co[i];
RA.Ry+=p[rs1].co[i+1];
if(RA.Ry=6)
{ RA.Rx=recordx;
RA.Ry=recordy;
continue;
}
translation();
if(cb==1)
setfillstyle(1,p[rs1].attr);
else
if(cb==2)
setfillstyle(1,BLACK);
else
if(cb==3)
{ setfillstyle(1,WHITE);
r_f[RA.Rx-15][RA.Ry-6]=1; /*置對應(yīng)數(shù)組標(biāo)記元素*/
}
bar(RA.x1+1,RA.y1+1,RA.x2-1,RA.y2-1);
RA.Rx=recordx;
RA.Ry=recordy;
}
}
void mov(int key) /*向下,左,右移動方塊*/
{ draw(2);
if(key==LEFTnleft)
RA.Rx--;
else
if(key==RIGHTnright)
RA.Rx++;
else
RA.Ry++;
nback=check_b();
if(nback) /*判斷形狀有沒有到達(dá)底部,有就將其顏色變?yōu)榘咨?/
draw(1);
else
draw(3);
}
void change() /*變換形狀*/
{ int status=rs1,buffer,i,x,y,zf=0;
if(p[rs1].attr==p[rs1+1].attr)
rs1++;
else
while(p[rs1].attr==p[rs1-1].attr)
rs1--;
for(i=0;i7;i++,i++) /*檢查變化形狀后是否與已存形狀發(fā)生沖突*/
{ x=RA.Rx+p[rs1].co[i];
y=RA.Ry+p[rs1].co[i+1];
if(y6)
zf+=r_f[x-15][y-6];
}
if(zf!=0)
rs1=status;
buffer=rs1;
rs1=status;
status=buffer;
draw(2);
buffer=rs1;
rs1=status;
status=buffer;
nback=check_b(); /*判斷變化后的形狀是不是到達(dá)了低部,這個(gè)檢查是十分必要的*/
if(nback)
draw(1);
else
draw(3);
}
void accelerate()
{ if(count_down=1)
{ check_touch(); /*消除上一步動作對方塊狀態(tài)的影響*/
count_down=0;
if(nback) /*0表示到達(dá)底部,1表示沒有到達(dá)*/
mov(DOWN);
}
}
void drawbox() /*畫方塊所在方框*/
{ int xcor,ycor;
for(xcor=xcors;xcor=xcorb;xcor++)
for(ycor=ycors;ycor=ycorb;ycor++)
{ if(xcor==xcors||xcor==xcorb||ycor==ycors||ycor==ycorb)
{ RA.Rx=xcor;
RA.Ry=ycor;
translation();
setfillstyle(1,DARKGRAY);
bar(RA.x1+1,RA.y1+1,RA.x2-1,RA.y2-1);
}
}
}
void erasure(int k)
{ int i,j,recordx=RA.Rx,recordy=RA.Ry;
{ j=k-1;
for(;j0;j--)
{ for(i=1;i11;i++)
{ r_f[i][j+1]=r_f[i][j];
RA.Rx=i+15;
RA.Ry=j+1+6;
translation();
if(r_f[i][j+1]==1)
setfillstyle(1,WHITE);
else
setfillstyle(1,BLACK);
bar(RA.x1+1,RA.y1+1,RA.x2-1,RA.y2-1);
RA.Rx=recordx;
RA.Ry=recordy;
}
}
}
}
void pause()
{ HZ12(450,400,15,BLACK,正常);
HZ12(450,400,15,GREEN,暫停);
for()
if(bioskey(1)bioskey(0)==SPACE)
{ clearkbd();
HZ12(450,400,15,BLACK,暫停);
HZ12(450,400,15,RED,正常);
return;
}
}
void judge()
{ int i,j,full=0; /*full等于10說明某一行滿,該消除了*/
if(finish()) /*判斷游戲是否該結(jié)束了*/
messagebox(); /*win編程里有這個(gè)函數(shù)*/
for(j=1;j21;j++) /*判斷某一行是否滿了*/
{ for(i=1;i11;i++)
full+=r_f[i][j];
if(full==10)
erasure(j); /*消除這行*/
full=0;
}
}
void update() /*使程序可以重新運(yùn)行*/
{ cleardevice();
setbkcolor(BLACK);
initinfo(); /*提示信息初始化*/
initbox(); /*游戲框架初始化*/
srand((unsigned)time(NULL)); /*隨機(jī)器函數(shù)的初始化*/
rs1=random(19);
rs2=random(19);
next_shape();
initposition(); /*方塊最開始的出現(xiàn)位置*/
initremove(); /*記錄每個(gè)方格有無顏色填充數(shù)組初始化*/
HZ12(450,400,15,RED,正常);
process();
}
void EXIT()
{ closegraph();
intrestore(); /*恢復(fù)中斷向量*/
exit(0);
}
void initremove()
{ int i,j;
for(i=0;i12;i++)
for(j=0;j22;j++)
if(i==0||i==11||j==0||j==21)
r_f[i][j]=1;
else
r_f[i][j]=0;
}
void initinfo()
{ char aStr[2];
setcolor(RED);
outtextxy(450,100,This game's writer is:);
HZ12(450,140,15,RED,該程序作者:NULL);
outtextxy(525,110,NULL);
outtextxy(450,180,FUNCTION FOR KEYS:);
outtextxy(450,200,UP:change the shape);
outtextxy(450,210,DOWN:accelerate);
outtextxy(450,220,LEFT:move left);
outtextxy(450,230,RIGHT:move right);
outtextxy(450,240,ESC:exit this game);
outtextxy(450,250,SPACE:pause);
HZ12(450,260,20,RED,上:);
HZ12(450,280,20,RED,下:);
HZ12(450,300,20,RED,左:);
HZ12(450,320,20,RED,右:);
HZ12(450,340,20,RED,ESC:退出);
HZ12(450,360,15,RED,空格: 暫停/開始);
HZ12(450,380,15,RED,目前狀態(tài):);
HZ12(20,200,15,RED,下一個(gè)形狀);
aStr[0]=24;
aStr[1]=0;
aStr[6]=0;
HZ12(480,260,12,GREEN,aStr);
HZ12(500,260,12,GREEN,( 變形 ));
aStr[0]=25;
aStr[1]=0;
HZ12(480,280,12,GREEN,aStr);
HZ12(500,280,12,GREEN,( 加速 ));
aStr[0]=27;
aStr[1]=0;
HZ12(480,300,12,GREEN,aStr);
HZ12(500,300,12,GREEN,向左);
aStr[0]=26;
aStr[1]=0;
HZ12(480,320,12,GREEN,aStr);
HZ12(500,320,12,GREEN,向右);
}
void messagebox()
{ int key;
setcolor(GREEN);
setfillstyle(1,DARKGRAY);
rectangle(220,200,420,300);
bar(221,201,419,299);
HZ12(280,210,15,GREEN,GAME OVER);
HZ12(275,230,15,GREEN,重新游戲: Y);
HZ12(275,270,15,GREEN,退出游戲: N);
HZ12(450,400,15,BLACK,正常);
HZ12(450,400,15,GREEN,GAME OVER);
for()
if(bioskey(1))
{ key=bioskey(0);
if(key==Y)
{ clearkbd();
update();
}
else
if(key==N)
{ clearkbd();
EXIT();
}
else
clearkbd();
}
}
void initbox()
{ xcors=15; /*畫游戲框*/
xcorb=26;
ycors=6;
ycorb=27;
drawbox();
xcors=2; /*畫提示框*/
xcorb=7;
ycors=6;
ycorb=11;
drawbox();
}
void initposition()
{ RA.Rx=18;
RA.Ry=6-p[rs1].co[7]
RA.x1=0;
RA.x2=0;
RA.y1=0;
RA.y2=0;
}
void next_shape() /*畫下一形狀提示框*/
{ int recordx=RA.Rx,recordy=RA.Ry,buffer;
RA.Rx=3;
RA.Ry=7;
draw(2);
buffer=rs1;
rs1=rs2;
rs2=buffer;
draw(1);
RA.Rx=recordx;
RA.Ry=recordy;
buffer=rs1;
rs1=rs2;
rs2=buffer;
}
void process() /*游戲過程*/
{ for()
{ check_touch();
if(!nback)
{ rs1=rs2;
rs2=random(19); /*產(chǎn)生另一種方塊的碼數(shù)*/
initposition();
judge(); /*判斷某一行是否滿了和這個(gè)游戲是否可以結(jié)束了*/
draw(1);
next_shape();
}
if(count_other=1)
{ count_other=0;
if(bioskey(1)) /*對按鍵的處理*/
{ int key=bioskey(0);
clearkbd(); /*清除鍵盤緩沖隊(duì)列*/
if(key==ESC)
EXIT();
if(key==LEFTnleftnback)
mov(LEFT);
if(key==RIGHTnrightnback)
mov(RIGHT);
if(key==UPnback)
change();
if(key==SPACE)
pause();
if(key==DOWN)
accelerate();
}
}
if(count_down=4)
{ check_touch(); /*消除上一步動作對方塊狀態(tài)的影響*/
count_down=0;
if(nback) /*0表示到達(dá)底部,1表示沒有到達(dá)*/
mov(DOWN);
}
}/*for*/
}
main()
{ int gdriver=DETECT,gmode=0;
initgraph(gdriver,gmode,d:turboc); /*啟動圖形與中斷部分*/
intenable();
update();
}
求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;/*得分*/
int gamespeed=50000;/*游戲速度自己調(diào)整*/
struct Food
{
int x;/*食物的橫坐標(biāo)*/
int y;/*食物的縱坐標(biāo)*/
int yes;/*判斷是否要出現(xiàn)食物的變量*/
}food;/*食物的結(jié)構(gòu)體*/
struct Snake
{
int x[N];
int y[N];
int node;/*蛇的節(jié)數(shù)*/
int direction;/*蛇移動方向*/
int life;/* 蛇的生命,0活著,1死亡*/
}snake;
void Init(void);/*圖形驅(qū)動*/
void Close(void);/*圖形結(jié)束*/
void DrawK(void);/*開始畫面*/
void GameOver(void);/*結(jié)束游戲*/
void GamePlay(void);/*玩游戲具體過程*/
void PrScore(void);/*輸出成績*/
/*主函數(shù)*/
void main(void)
{
Init();/*圖形驅(qū)動*/
DrawK();/*開始畫面*/
GamePlay();/*玩游戲具體過程*/
Close();/*圖形結(jié)束*/
}
/*圖形驅(qū)動*/
void Init(void)
{
int gd=DETECT,gm;
initgraph(gd,gm,"c:\\tc");
cleardevice();
}
/*開始畫面,左上角坐標(biāo)為(50,40),右下角坐標(biāo)為(610,460)的圍墻*/
void DrawK(void)
{
/*setbkcolor(LIGHTGREEN);*/
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型*/
for(i=50;i=600;i+=10)/*畫圍墻*/
{
rectangle(i,40,i+10,49); /*上邊*/
rectangle(i,451,i+10,460);/*下邊*/
}
for(i=40;i=450;i+=10)
{
rectangle(50,i,59,i+10); /*左邊*/
rectangle(601,i,610,i+10);/*右邊*/
}
}
/*玩游戲具體過程*/
void GamePlay(void)
{
randomize();/*隨機(jī)數(shù)發(fā)生器*/
food.yes=1;/*1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物*/
snake.life=0;/*活著*/
snake.direction=1;/*方向往右*/
snake.x[0]=100;snake.y[0]=100;/*蛇頭*/
snake.x[1]=110;snake.y[1]=100;
snake.node=2;/*節(jié)數(shù)*/
PrScore();/*輸出得分*/
while(1)/*可以重復(fù)玩游戲,壓ESC鍵結(jié)束*/
{
while(!kbhit())/*在沒有按鍵的情況下,蛇自己移動身體*/
{
if(food.yes==1)/*需要出現(xiàn)新食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x%10!=0)/*食物隨機(jī)出現(xiàn)后必須讓食物能夠在整格內(nèi),這樣才可以讓蛇吃到*/
food.x++;
while(food.y%10!=0)
food.y++;
food.yes=0;/*畫面上有食物了*/
}
if(food.yes==0)/*畫面上有食物了就要顯示*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i0;i--)/*蛇的每個(gè)環(huán)節(jié)往前移動,也就是貪吃蛇的關(guān)鍵算法*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
/*1,2,3,4表示右,左,上,下四個(gè)方向,通過這個(gè)判斷來移動蛇頭*/
switch(snake.direction)
{
case 1:snake.x[0]+=10;break;
case 2: snake.x[0]-=10;break;
case 3: snake.y[0]-=10;break;
case 4: snake.y[0]+=10;break;
}
for(i=3;isnake.node;i++)/*從蛇的第四節(jié)開始判斷是否撞到自己了,因?yàn)樯哳^為兩節(jié),第三節(jié)不可能拐過來*/
{
if(snake.x[i]==snake.x[0]snake.y[i]==snake.y[0])
{
GameOver();/*顯示失敗*/
snake.life=1;
break;
}
}
if(snake.x[0]55||snake.x[0]595||snake.y[0]55||
snake.y[0]455)/*蛇是否撞到墻壁*/
{
GameOver();/*本次游戲結(jié)束*/
snake.life=1; /*蛇死*/
}
if(snake.life==1)/*以上兩種判斷以后,如果蛇死就跳出內(nèi)循環(huán),重新開始*/
break;
if(snake.x[0]==food.xsnake.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;
/*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/
snake.node++;/*蛇的身體長一節(jié)*/
food.yes=1;/*畫面上需要出現(xiàn)新的食物*/
score+=10;
PrScore();/*輸出新得分*/
}
setcolor(4);/*畫出蛇*/
for(i=0;isnake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,
snake.y[i]-10);
delay(gamespeed);
setcolor(0);/*用黑色去除蛇的的最后一節(jié)*/
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
} /*endwhile(!kbhit)*/
if(snake.life==1)/*如果蛇死就跳出循環(huán)*/
break;
key=bioskey(0);/*接收按鍵*/
if(key==ESC)/*按ESC鍵退出*/
break;
else
if(key==UPsnake.direction!=4)
/*判斷是否往相反的方向移動*/
snake.direction=3;
else
if(key==RIGHTsnake.direction!=2)
snake.direction=1;
else
if(key==LEFTsnake.direction!=1)
snake.direction=2;
else
if(key==DOWNsnake.direction!=3)
snake.direction=4;
}/*endwhile(1)*/
}
/*游戲結(jié)束*/
void GameOver(void)
{
cleardevice();
PrScore();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
getch();
}
/*輸出成績*/
void PrScore(void)
{
char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"score:%d",score);
outtextxy(55,20,str);
}
/*圖形結(jié)束*/
void Close(void)
{
getch();
closegraph();
}
用C語言編寫的小游戲代碼是什么?
/*也不知道你是什么級別的,我是一個(gè)新手,剛接觸編程語言,以下是我自己變得一個(gè)小程序,在所有c語言的編譯器(vc++6.0、turbo????)上都能運(yùn)行,你還可以進(jìn)一步改進(jìn)。這是一個(gè)類似貪吃蛇的小游戲。祝你好運(yùn)*/\x0d\x0a/*貪吃蛇*/\x0d\x0a#include\x0d\x0a#include\x0d\x0a#include\x0d\x0a#include\x0d\x0aint head=3 ,tail=0;\x0d\x0aint main()\x0d\x0a{\x0d\x0aint i,j,k=0;\x0d\x0aint zuobiao[2][80];\x0d\x0along start;\x0d\x0aint direction=77;\x0d\x0aint gamespeed;\x0d\x0aint timeover;\x0d\x0aint change(char qipan[20][80],int zuobiao[2][80],char direction);\x0d\x0azuobiao[0][tail]=1;zuobiao[1][tail]=1;zuobiao[0][1]=1;zuobiao[1][1]=2;zuobiao[0][2]=1;zuobiao[1][2]=3;zuobiao[0][head]=1;zuobiao[1][head]=4;\x0d\x0a/*處理棋盤*/\x0d\x0achar qipan[20][80];//定義棋盤\x0d\x0afor(i=0;i for(j=0;jqipan[i][j]=' ';//初始化棋盤\x0d\x0afor(i=0;iqipan[0][i]='_';\x0d\x0afor(i=0;iqipan[i][0]='|';\x0d\x0afor(i=0;iqipan[i][79]='|';\x0d\x0afor(i=0;iqipan[19][i]='_';\x0d\x0aqipan[1][1]=qipan[1][2]=qipan[1][3]='*';//初始化蛇的位置\x0d\x0aqipan[1][4]='#';\x0d\x0aprintf("This is a game of a SNAKE.\nGOOD LUCK TO YOU !\n");\x0d\x0aprintf("Input your game speed,please.(e.g.300)\n");\x0d\x0ascanf("%d",gamespeed);\x0d\x0a\x0d\x0awhile(direction!='q')\x0d\x0a{\x0d\x0asystem("cls");\x0d\x0afor(i=0;ifor(j=0;jprintf("%c",qipan[i][j]);\x0d\x0atimeover=1;\x0d\x0astart=clock();\x0d\x0awhile(!kbhit()(timeover=clock()-startif(timeover)\x0d\x0a{\x0d\x0agetch();\x0d\x0adirection=getch();\x0d\x0a}\x0d\x0aelse\x0d\x0adirection=direction;\x0d\x0aif(!(direction==72||direction==80||direction==75||direction==77))\x0d\x0a{\x0d\x0areturn 0;\x0d\x0asystem("cls");\x0d\x0aprintf("GAME OVER!\n");\x0d\x0a}\x0d\x0aif(!change(qipan,zuobiao,direction))\x0d\x0a{\x0d\x0adirection='q';\x0d\x0asystem("cls");\x0d\x0aprintf("GAME OVER!\n");\x0d\x0a}\x0d\x0a}\x0d\x0areturn 0;\x0d\x0a}\x0d\x0aint change(char qipan[20][80],int zuobiao[2][80],char direction)\x0d\x0a{\x0d\x0aint x,y;\x0d\x0aif(direction==72)\x0d\x0ax=zuobiao[0][head]-1;y=zuobiao[1][head];\x0d\x0aif(direction==80)\x0d\x0ax=zuobiao[0][head]+1;y=zuobiao[1][head];\x0d\x0aif(direction==75)\x0d\x0ax=zuobiao[0][head];y=zuobiao[0][head]-1;\x0d\x0aif(direction==77)\x0d\x0ax=zuobiao[0][head];y=zuobiao[1][head]+1;\x0d\x0aif(x==0||x==18||y==78||y==0)\x0d\x0areturn 0;\x0d\x0aif(qipan[x][y]!=' ')\x0d\x0areturn 0;\x0d\x0aqipan[zuobiao[0][tail]][zuobiao[1][tail]]=' ';\x0d\x0atail=(tail+1)%80;\x0d\x0aqipan[zuobiao[0][head]][zuobiao[1][head]]='*';\x0d\x0ahead=(head+1)%80;\x0d\x0azuobiao[0][head]=x;\x0d\x0azuobiao[1][head]=y;\x0d\x0aqipan[zuobiao[0][head]][zuobiao[1][head]]='#';\x0d\x0areturn 1;\x0d\x0a}
求幾C語言個(gè)小游戲代碼,簡單的,要注釋、、謝謝了、
// Calcu24.cpp : Defines the entry point for the console application.
//
/*
6-6
24點(diǎn)游戲
*/
#include "conio.h"
#include "stdlib.h"
#include "time.h"
#include "math.h"
#include "string.h"/*
從一副撲克牌中,任取4張。
2-10 按其點(diǎn)數(shù)計(jì)算(為了表示方便10用T表示),J,Q,K,A 統(tǒng)一按 1 計(jì)算
要求通過加減乘除四則運(yùn)算得到數(shù)字 24。
本程序可以隨機(jī)抽取紙牌,并用試探法求解。
*/void GivePuzzle(char* buf)
{
char card[] = {'A','2','3','4','5','6','7','8','9','T','J','Q','K'}; for(int i=0; i4; i++){
buf[i] = card[rand() % 13];
}
}
void shuffle(char * buf)
{
for(int i=0; i5; i++){
int k = rand() % 4;
char t = buf[k];
buf[k] = buf[0];
buf[0] = t;
}
}
int GetCardValue(int c)
{
if(c=='T') return 10;
if(c='0' c='9') return c - '0';
return 1;
}
char GetOper(int n)
{
switch(n)
{
case 0:
return '+';
case 1:
return '-';
case 2:
return '*';
case 3:
return '/';
} return ' ';
}double MyCalcu(double op1, double op2, int oper)
{
switch(oper)
{
case 0:
return op1 + op2;
case 1:
return op1 - op2;
case 2:
return op1 * op2;
case 3:
if(fabs(op2)0.0001)
return op1 / op2;
else
return 100000;
} return 0;
}
void MakeAnswer(char* answer, int type, char* question, int* oper)
{
char p[4][3];
for(int i=0; i4; i++)
{
if( question[i] == 'T' )
strcpy(p[i], "10");
else
sprintf(p[i], "%c", question[i]);
}
switch(type)
{
case 0:
sprintf(answer, "%s %c (%s %c (%s %c %s))",
p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);
break;
case 1:
sprintf(answer, "%s %c ((%s %c %s) %c %s)",
p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);
break;
case 2:
sprintf(answer, "(%s %c %s) %c (%s %c %s)",
p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);
break;
case 3:
sprintf(answer, "((%s %c %s) %c %s) %c %s",
p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);
break;
case 4:
sprintf(answer, "(%s %c (%s %c %s)) %c %s",
p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);
break;
}
}
bool TestResolve(char* question, int* oper, char* answer)
{
// 等待考生完成
int type[5]={0,1,2,3,4};//計(jì)算類型
double p[4];
double sum=0;
//
for(int i=0; i4; i++) //循環(huán)取得點(diǎn)數(shù)
{
p[i]=GetCardValue(int(question[i]));
} for(i=0;i5;i++)
{
MakeAnswer(answer,type[i],question,oper); //獲取可能的答案
switch(type[i])
{
case 0:
sum=MyCalcu(p[0],MyCalcu( p[1],MyCalcu(p[2], p[3], oper[2]),oper[1]),oper[0]); //A*(B*(c*D))
break;
case 1:
sum=MyCalcu(p[0],MyCalcu(MyCalcu(p[1], p[2], oper[1]),p[3],oper[2]),oper[0]); //A*((B*C)*D)
break;
case 2:
sum=MyCalcu(MyCalcu(p[0], p[1], oper[0]),MyCalcu(p[2], p[3], oper[2]),oper[1]); // (A*B)*(C*D)
break;
case 3:
sum=MyCalcu(MyCalcu(MyCalcu(p[0], p[1], oper[0]),p[2],oper[1]),p[3],oper[2]); //((A*B)*C)*D
break;
case 4:
sum=MyCalcu(MyCalcu(p[0],MyCalcu(p[1], p[2], oper[1]),oper[0]),p[3],oper[2]); //(A*(B*C))*D
break;
}
if(sum==24) return true;
}
return false;
}
/*
采用隨機(jī)試探法:就是通過隨機(jī)數(shù)字產(chǎn)生 加減乘除的 組合,通過大量的測試來命中的解法
提示:
1. 需要考慮用括號控制計(jì)算次序的問題 比如:( 10 - 4 ) * ( 3 + A ), 實(shí)際上計(jì)算次序的數(shù)目是有限的:
A*(B*(c*D))
A*((B*C)*D)
(A*B)*(C*D)
((A*B)*C)*D
(A*(B*C))*D
2. 需要考慮計(jì)算結(jié)果為分?jǐn)?shù)的情況:( 3 + (3 / 7) ) * 7
3. 題目中牌的位置可以任意交換
*/
bool TryResolve(char* question, char* answer)
{
int oper[3]; // 存儲運(yùn)算符,0:加法 1:減法 2:乘法 3:除法
for(int i=0; i1000 * 1000; i++)
{
// 打亂紙牌順序
shuffle(question);
// 隨機(jī)產(chǎn)生運(yùn)算符
for(int j=0; j3; j++)
oper[j] = rand() % 4; if( TestResolve(question, oper, answer) ) return true;
} return false;
}
int main(int argc, char* argv[])
{
// 初始化隨機(jī)種子
srand( (unsigned)time( NULL ) ); char buf1[4]; // 題目
char buf2[30]; // 解答
printf("***************************\n");
printf("計(jì)算24\n");
printf("A J Q K 均按1計(jì)算,其它按牌點(diǎn)計(jì)算\n");
printf("目標(biāo)是:通過四則運(yùn)算組合出結(jié)果:24\n");
printf("***************************\n\n");
for()
{
GivePuzzle(buf1); // 出題
printf("題目:");
for(int j=0; j4; j++){
if( buf1[j] == 'T' )
printf("10 ");
else
printf("%c ", buf1[j]);
} printf("\n按任意鍵參考答案...\n");
getch(); if( TryResolve(buf1, buf2) ) // 解題
printf("參考:%s\n", buf2);
else
printf("可能是無解...\n"); printf("按任意鍵出下一題目,x 鍵退出...\n");
if( getch() == 'x' ) break;
} return 0;
}
c語言程序游戲代碼大全的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于簡單的c語言游戲代碼、c語言程序游戲代碼大全的信息別忘了在本站進(jìn)行查找喔。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。