本文目錄一覽:
- 1、用C語言編寫的小遊戲代碼是什麼?
- 2、用C語言編寫一個簡單的打字母遊戲,給出基本思路及完整程序。
- 3、教你如何使用C語言編寫簡單小遊戲
- 4、C語言簡易文字冒險遊戲源代碼
- 5、如何使用C語言編寫簡單小遊戲?
- 6、c語言編一個簡單的剪刀石頭布遊戲?
用C語言編寫的小遊戲代碼是什麼?
“猜數字小遊戲”,每個數字後按空格,最後按回車確認
#includestdio.h
#includestdlib.h
#includetime.h
int a[4],b[4];
int count=0; //計算猜測次數
void csh( ); //初始化
void start( ); //開始遊戲
int main( )
{ csh( );
start( );
}
void csh( ) //初始化
{ printf(“\n\n 猜 數 字 小 游 戲\n\n”);
printf(“ 猜四個數字,如數字與順序都正確記為A,數字正確位置不對記為B.\n”);
}
void start( ) //開始遊戲
{int m,n; //m是完全猜對的個數,n是順序不對的個數
while(1)
{srand((unsigned)time(NULL)); //初始化隨機數發生器srand( )
while(1) { for(int i=0;i4;i++) a[i]=rand( )%10; //rand( )函數每次隨機產生一個0-9的數
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個隨機數各自不相等
printf(” 請依次輸入4個一位整數:\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(” 你猜對了(^-^)! 就是:%d %d %d %d\n”,a[0],a[1],a[2],a[3]);
else printf(” 你輸了(T-T)!哈哈!應該是:%d %d %d %d\n”,a[0],a[1],a[2],a[3]);
int z;
printf(” (要繼續嗎?1或0)\n “);
scanf(“%d”,z);
if(z==0) break;
}
}
用C語言編寫一個簡單的打字母遊戲,給出基本思路及完整程序。
# includestdio.h
# include conio.h
# include graphics.h
# include time.h
# pragma comment(lib,”Winmm.lib”) //引用Windows Multimedia APT
int score =0; //全局變量********整型的分數
char s[5]; //全局變量****字符型的分數
struct player_ //自定義的結構體,並順便定義一個結構體變量
{
char name[20];
int score_;
}player[11];
/***************函數聲明*****************/
void record_(); //記錄彼此成績函數
void welcome( ); //歡迎界面函數
void instructions( ); //遊戲說明界面函數
void gane (int rank2); //遊戲函數
void record ( ); //顯示記錄函數
int rank_(char rank1); //等級選擇函數
void goodbye ( ); //退出界面函數
/**************主函數**************/
int main ()
{
char rank1; //rank1接受從鍵盤輸入的字符,根據字符判斷等級
int rank2=15; // 控制延時時間,從而控制速度
intsign=1; // 當做標記,用於標記是否彈出MessageBox對話框
welcome ( ); //調用歡迎界面函數
instructions ( ); //調用遊戲什麼函數
record( ); //調用顯示記錄函數
InputBox(player[10].name,20,”請輸入玩家昵稱”; //以對話框形式獲取用戶輸入函數
rank1=getch();//讀入一個字母
rank2=rank_(rank1); //調用等級函數
game (rank2); //調用遊戲函數
HWND wnd =GetHWnd();
while (sign) //sign作為標記,執行循環
if (MessageBox(wnd,”遊戲結束!!!\n再來一局,挑戰更高分數”,”詢問”,MB_YESNO|MB_ICONQUESTION)==IDYES)
game (rank2);
else
{
sign=0;
goodbye( );
}
closegraph( );
return 0;
}
/***************記錄本次成績函數***************/
void record_()
{
FILE*fp; //文件指針
int i,j;
struct player_t; //定義結構體變量t,冒泡法比較大小時用
player[10].score_=score; //把該局的分數賦給該局用戶的結構體變量中
fp=fopen(“記錄.dat”,”rb”); //打開二進制文件
for (i=0;i10;i++)
{
fread(player[i].name,20,l,fp); //讀入記錄中的成績和名字
fread (player[i].score_,4,l,fp);
}
fclose(fp); //關閉二進制文件
for (j=0;j10;j++) //冒泡法排序
for (i=0;i10-j;i++)
if (player[i].score_)
{
t=player[i];
player[i]=player[i+1];
player[i+1]=t;
}
fp=fopen(“記錄.dat”,”wb”); //打開文件
for (i=0;i10;i++) //把排好序列的數據存入記錄文件
{
fwrite(player[i].name,20,l,fp);
fwrite (player[i].score_,4,l,fp);
}
fclose(fp); //關閉文件
}
/****************歡迎界面函數****************/
void welcome ( )
{
char ch;
mciSendString(“open\”res\\Sleep Away.mp3\”alias mymusic”,NULL,0,NULL);
initgraph(640,480); //初始化畫圖界面
IMAGE img; //定義IMAGE對象
loadimage (img,”res\\00.jpg”); //讀取圖片到img對象中
putimage (0,0,img); //在坐標(0,0)位置顯示IMAGE對象
ch=getch(); //吸收掉一個按鍵
cleardevice(); //清屏
}
/***************遊戲說明界面函數**************/
void instructions()
{
int c=255; //控制變色的變量
setcolor(YELLOW); //設置顏色
setfont (30,0,”黑體”); //設置字體
outtextxy(0,0,”遊戲說明”); //輸出文字
setcolor(WHITE);
setfont(28,0,”宋體”);
outtextxy(0,30,”一、每次遊戲下落200個字母”); //輸出文字
outtextxy(0,58,”二、請按數字鍵選擇遊戲等級”);
outtextxy(0,86,”三、統計被擊中的個數”);
setfont(30,0,”華文行楷”)
outtextxy (20,220,”等級一二三四 五六七八九”);
outtextxy(20,260,“按鍵 1 2 3 4 5 6 7 8 9”);
while (!kbhit()) //kihit()作用是判斷是否有字幕輸入
{
setcolor(RGB(c,255,0));
setfont (80,0,”楷體”);
outtextxy(140,130,”請選擇等級”);
setcolor(RGB(c,0,255));
setfont(100,0,”Wickenden Cafe NDP”);
outtextxy(100,135,”Let’s go!!!”);
c-=25; //控制顏色的變量自減
if(c0)c=255; //控制顏色的變量小於0時,再把255賦給c
cleardevice(); //清屏
}
/***************退出界面函數***************/
void goodbye()
{
int c=255; //控制變色變量
cleardevice(); //清屏
setcolor(YELLOW);
setfont (48,0,”黑體”);
outtextxy (104,120,”的最終成績是: “);
setfont (48,0,”華文楷體”);
setcolor(RGB(255,255,0));
outtextxy(140,320,”按任意鍵退出遊戲”);
setcolor(YELLOW);
setfont(48,0,”黑體”);
outtextxy (104,120,”的最終成績是: “);
outtextxy(104,70,player[10].name);
record_(); //調用記錄本次成績函數
while(!kbhit())
{
setcolor(RGB(255,0,c-100)); //設置顏色
setfont(100,0,”Wickenden Café NDP”);
outtextxy(400,90,s); //輸出數字
setcolor(RGB(c,0,255));
setfont(48,0,”黑體”);
if (score==200)
outtextxy(100,200,”全部擊中!!!”);
else
if(score190)
outtextxy(100,200,”不錯!繼續加油!”);
else
outtextxy(100,200,”不要灰心!繼續加油!”);
c-=25;
if(c0)
c=255;
Sleeep(20); //延時20秒
}
getch( ); //提供給用戶時需要等待輸入後再退出
}
/**************等級選擇函數**************/
int rank_(char rank1)
{
int rank2;
switch(rank1) //判斷字符,確定等級
{
case’0’:rank2=11;break;
case’1’:rank2=10;break;
case’2’:rank2=9;break;
case’3’:rank2=8;break;
case’4’:rank2=7;break;
case’5’:rank2=6;break;
case’6’:rank2=5;break;
case’7’:rank2=4;break;
case’8’:rank2=3;break;
case’9’:rank2=2;break;
default:rank2=15;break;
}
return rank2;
}
/**************顯示記錄函數***********/
void record( )
{
FILE *p; //文件指針
int a[10],j;
char b[10][10];
fp=fopen(“記錄。dat”,”rb”); //打開文件
for (j=0;j10;j++)
{
fread(player[j].name,20,1,fp); //讀取文件中的信息
fread(player[j].score_,4,1,fp);
}
fclose(fp); //關閉文件
setfont(60,0,”Arial”);
setcolor(RGB(250,250,0));
outtextxy(250,0,”TOP10”);
for(j=0;j10;j++)
{
sprintf(“b[j],%d”,player[j].score_); //把整型轉換為字符型
setcolor(RGB(0,100,255));
setfont(40,0,”Arial”);
outtextxy(420,50+40*j,b[j]);
outtextxy(120,50+40*j,player[j].name); //輸出名字
/**********遊戲函數******************/
void game (int rank2)
{
cleardevice( ); //清屏
score=0; //清除掉原有的分數
outtextxy(0,0,”玩家:”);
outtextxy(90,0,player[10].name);
setfont(20,0,”Arial”);
outtextxy(100,460,” 人生有享受片刻優雅恬適的權力,讓打字母遊戲放鬆你一下吧!”);
int i;
char target; //目標字母
char key; //用戶的按鍵
intx,y; //字母的位置
int flag =1; //標記是否按了退出鍵
int sum=0; //成績計數
int num =200; //規定下落字母的個數
srand (time(NULL)); //隨機時間種子,設置第一個隨機函數的值
setfillstyle(BLACK); //設置下面矩形內圖的顏色
setcolor(YELLOW); //
line(0,450,640,450); //用3條線規定一下工作區
line(0,440,640,440); //用3條線規定一下工作區
line(0,40,640,40); //用3條線規定一下工作區
while (flagnum)
{
setfont(40,0,”宋體”); //設置字母的字體和大小
i=rand()%2; //rand()函數返回0~32767之間的一個整數
if(i)
target=97+rand()%26; //產生任意小寫字母
else
target=65+rand()%26; //產生任意大寫字母
x=rand()%610; //產生任意下落位置
for (y=41;y380;y++)
{
setcolor (RGB(255,0,255));
outtextxy(x,y,target); //顯示字母
if(kbhit())
{
key=getch(); //獲取用戶按鍵
if ((key==target)||( key==target-32)||( key==target+32))
{
score++; //分數統計
sprintf(s,”%d”score);
setfont(30,0,”Arial”);
outtextxy(500,0,“分數”);
outtextxy(600,0,s); //輸出分數
bar(x-10,y-10,x+35,y+50); // 擊中用黑框形擦去字母
break; //跳出循環,進行下一個字母
}
else if (key==27) //判斷是否按了
{
flag=0; //若果按ESC,退出遊戲主循環
break;
}
}
Sleep(rank2); //控制清除字母的時間愛你也就是控制下落速度
bar(x,y,x+35,y+60); //擦最下面的字符
}
num–; //計數
}
}
教你如何使用C語言編寫簡單小遊戲
愛玩是人的天性,而C語言是我們計算機專業都要學習的一門基礎 學科.一般來說,是比較枯燥的.那麼,我們能不能通過編一些小遊戲來提高它的趣味性呢?這樣學習程序設計,就不會是一件艱苦 ,枯燥的事,它變得象電腦遊戲一樣充滿好奇,富有樂趣. 1, 總是從Hello,world開始 學習編程的第一個程序,一般就是打印一個親切的詞語——”Hell o,world!”.讓我們來看看這個最簡單的C程序:#incolude /*把輸入輸出函數的頭文件包含進來*/int main(){printf(“Hello, world!”);/*在屏幕上輸出字符串”Hello,world!”*/return 0;/*退出main函數,並返回0*/} 下面我們發現幾個值得改進的地方,1,程序的運行結果一閃而過 .2,每執行這個程序一次都能看見上次運行留下的字符.3,我們 還希望屏幕輸出一個笑臉來歡迎我們. 讓我們來改進一下這個程序吧!1,在return語句的前面加一句:getch ();,表示按任意鍵結束.2,在printf語句前用clrscr函數清屏,要使用這個函數和getch函數,需要在程序開頭再包含頭文件conio.h.3,ASCII碼也有 許多非常好玩的字符,比如ASCII碼值為2的就是一個笑臉,我們可 以用printf(“%c”, 2)來輸出一個笑臉. 現在我們把Hello,world程序改成一個更好看的Hello,world了.下面讓我們開始做遊戲吧! 2, 心動的開始,一個運動中的笑臉 大家小時侯喜歡看動畫片嗎?哈哈,我猜你們都喜歡吧!下面就讓我們來做一個小動畫吧.在屏幕上顯示一個運動的小笑臉,而且當它到達屏幕的邊緣時會自動彈回來.先在程序定義一個在屏幕中運動的點的結構:struct move_point{ int x, y;/*該點的位置,包括x坐標和y坐標*/ int xv, yv;/*該點在x軸,y軸的速度*/};運動的原理是,先擦去物體先前的軌跡,讓物體按其速度移動一段距離,再畫出該物體.讓我們看到以下代碼:gotoxy(man.x, man.y);/*把光標移到指定的坐標*/printf(” “);/*輸出一個空格,把先前的字符擦去*/然後我們讓物體按其速度運動:man.x += man.xv;/*水平方向按x軸的速度運動*/man.y += man.yv;/*垂直方向按y軸的速度運動*/運動後還要判斷物體是否出界,如果出了界,就令物體反彈,即讓 它下一刻的速度等於現在的速度的相反數.最後打印出這個笑臉:gotoxy(man.x, man.y);printf(“%c\b”, 2); /*輸出ASCII碼值為2的”笑臉”字符*/怎麼樣?是不是很有趣呢?不過這個笑臉一直是自己運動,能不能 讓我們來控制它運動呢?不過這個程序沒有什麼目的,也沒有什麼判斷勝負的條件.下面我們就利用這個能控制它移動的笑臉來做一個更有趣的遊戲吧! 4, 在迷宮中探索 小時侯,我常在一些小人書和雜誌上看見一些迷宮的遊戲,非常喜歡玩,還常到一些書上找迷宮玩呢.好的,現在我們用C語言來編個迷宮的遊戲,重溫一下童年的樂趣. 首先,我們定義一個二維數組map,用它來保存迷宮的地圖,其中map[x][y] == ‘#’表示在(x,y)坐標上的點是牆壁.DrawMap函數在屏幕上輸出迷宮的地圖和一些歡迎信息.在main函數里,我們定義了”小人”man的坐標和”目的地”des的 坐標.在遊戲循環中,我們增加了一些用來判斷勝負的語句:if (man.x == des.x man.y == des.y) /*如果人的坐標等於目的地的坐標*/{ gotoxy(35, 3); printf(“Ok! You win!”); /*輸出勝利信息*/….}在判斷按鍵時,如果玩家按的是方向鍵,我們還要先判斷前面是不是有”牆壁”,如果有的話,就不能往前移動了.好的,我們在判斷按鍵的switch語句的各個分支加上了判斷語句,如下:if (map[…][…] == ‘#’) break;/*如果前面是牆壁,就不執行下去*/哇噻!真棒,我們做出了一個完整的遊戲了.當然你還可以通過修改二維數組map來修改迷宮的地圖,讓它更有挑戰性.不過,我們要設計一個更好玩的遊戲—— 5, 聰明的搬運工 大家一定玩過”搬運工”的遊戲吧!這是在電腦和電子字典上較流行的益智遊戲,讓我們動手做一個屬於自己的”搬運工”吧!程序依然用數組map來保存地圖,數組元素如果為空格則表示什麼也沒有,’b’表示箱子,’#’表示牆壁,’*’表示目的地,’i’表示箱子在目的地.我們以後每推一下箱子,不但要改變屏幕的顯示,也要改變map相應元素的值.遊戲的主循環依然是接受按鍵.當接收一個方向鍵,需要判斷小人前面一格的狀態,如果是空地或目的地,則人物可以直接移動;如果是牆壁,則不可移動;如果是箱子或目的地上的箱子,則需要繼續判斷箱子前面一格的狀態:如果前一格是空地或目的地,則人推箱子前進,否則不可移動.好的,我們在switch中增加了這些判斷語句.程序還有一個重要的功能就是判斷勝利.數組Des用來記錄全部目的地的坐標,我們每執行一步操作後,程序就要通過Des數組判斷這些目的地上是否都有箱子了.真棒啊!我們可以做遊戲了.而且是一個老少皆宜,趣味十足的遊戲呢!當然,我們可以通過修改map數組來製作不同的遊戲地圖,我們還可以相互分享好的遊戲地圖呢. 尾聲: 在C++等高級語言還沒出來的時候,很多應用程序也是C語言開發的.C語言在與硬件聯繫緊密的編程中,也佔有重要地位.其實我覺得學習編程,可以通過一些小遊戲,實用的例子來學習.象學習音樂的人,不是要等到把全部樂理學完後才演奏一個完整的曲子.而是剛開始學時就有一些簡單的曲子讓你演奏,讓你立刻就有成就感,讓你很快就能賣弄出來在別人面前表現自己了.通過編遊戲來學習編程,把學習變成遊戲,不失為學習計算機的一種好方法. 好了,編遊戲就這麼簡單,希望大家也嘗試用C語言或其他的語言來做幾個自己喜歡的小遊戲.
C語言簡易文字冒險遊戲源代碼
記憶遊戲
#includestdio.h
#includetime.h
#includestdlib.h
#includewindows.h
#define N 10
int main( )
{int i,k,n,a[N],b[N],f=0;
srand(time(NULL));
printf(” 按1開始\n 按0退出:_”);
scanf(“%d”,n);
system(“cls”);
while(n!=0)
{for(k=0;kN;k++)a[k] = rand( )%N;
printf(“\n\t\t[請您牢記看到顏色的順序]\n\n”);
for(k=0;kN;k++)
{switch(a[k])
{case 0:system(“color 90″);printf(” 0:淡藍色\n”);break; //淡藍色
case 1:system(“color f0″);printf(” 1:白色\n”);break; //白色
case 2:system(“color c0″);printf(” 2:淡紅色\n”);break; //淡紅色
case 3: system(“color d0″);printf(” 3:淡紫色\n”);break; //淡紫色
case 4: system(“color 80″);printf(” 4:灰色\n”); break; //灰色
case 5: system(“color e0″);printf(” 5:黃色\n”);break; //黃色
case 6: system(“color 10″);printf(” 6:藍色\n”); break; //藍色
case 7: system(“color 20″);printf(” 7:綠色\n”);break; //綠色
case 8: system(“color 30″);printf(” 8:淺綠色\n”);break; //淺綠色
case 9: system(“color 40″);printf(” 9:紅色\n”);break; //紅色
}
Sleep(1500);
system(“color f”); //單個控制 文字顏色
Sleep(100);
}
system(“cls”);
printf(” 0:淡藍色,1:白色,2:淡紅色,3:淡紫色,4:灰色,5:黃色,6:藍色7:綠色,8:淺綠色,9:紅色\n”);
printf(“\n\t請輸入顏色的順序:”);
for(k=0;kN;k++)scanf(“%d”,b[k]);
for(k=0;kN;k++)if(a[k] == b[k]) f++;
if(f==0) printf(” 你的記憶弱爆了0\n”);
else if(f==1) printf(” 你的記憶有點弱1\n”);
else if(f5) printf(” 你的記憶一般5\n”);
else printf(” 你的記憶力很強!\n”);
Sleep(2000);
system(“cls”);
printf(“\t\t按0退出\n\t\t按任意鍵繼續遊戲:\n”);
scanf(“%d”,n);
system(“cls”);
}
return 0;
}
註:DEVc++運行通過,每輸入一個數字要加入一個空格。
如何使用C語言編寫簡單小遊戲?
C語言是計算機專業都要學習的一門基礎學科。一般來說,是比較枯燥的.那麼,我們能不能通過編一些小遊戲來提高它的趣味性呢?這樣學習程序設計,就不會是一件艱苦 ,枯燥的事,它變得象電腦遊戲一樣充滿好奇,富有樂趣。
例如2048這款遊戲:
方法/步驟:
#includestdio.h
#includestdlib.h
#includetime.h
#includeconio.h
#includewindows.h
#define SIZE 4
static int score=0;
void putn(int n[][SIZE]);
void getn(int n[][SIZE]);
int isempty(int n[][SIZE]);
int isfull(int n[][SIZE]);
void math(int n[][SIZE],char c);
void tow(int n[][SIZE]);
void toa(int n[][SIZE]);
void tos(int n[][SIZE]);
void tod(int n[][SIZE]);
//主函數
int main()
{
int i,j;
int n[SIZE][SIZE];
char c=’ ‘;
for(i=0;iSIZE;i++)
{
for(j=0;jSIZE;j++)
{
n[i][j]=0;
}
}
printf( “***********************\n”
” 2048(%dX%d) \n”
” control:W/A/S/D \n”
“press any key to begin \n”
“***********************\n”,SIZE,SIZE);
getch();
system(“cls”);
//n[0][1]=2048;
//n[0][3]=2048;
while(1)
{
if(isempty(n))
getn(n);
putn(n);
if(!isempty(n)isfull(n))
break;
sleep(200);
c=getch();
while(c!=’w’c!=’a’c!=’s’c!=’d’)
c=getch();
math(n,c);
system(“cls”);
}
printf(” Game Over!\n”,score);
return 0;
}
//函數
void putn(int n[][SIZE])
{
int i,j;
for(i=0;iSIZE;i++)
{
for(j=0;jSIZE;j++)
printf(“| “);
printf(“|\n”);
for(j=0;jSIZE;j++)
{
if(n[i][j]==0)
printf(“| “);
else
printf(“|%4d “,n[i][j]);
}
printf(“|\n”);
for(j=0;jSIZE;j++)
printf(“|_____”);
printf(“|\n”);
}
printf(“score: %d”,score);
}
void getn(int n[][SIZE])
{
int a,b;
a=rand()%SIZE;
b=rand()%SIZE;
while(n[a][b]!=0)
{
a=rand()%SIZE;
b=rand()%SIZE;
}
n[a][b]=2;
}
int isempty(int n[][SIZE])
{
int i,j,count=0;
for(i=0;iSIZE;i++)
for(j=0;jSIZE;j++)
if(n[i][j]==0)
count++;
return count;
}
int isfull(int n[][SIZE])
{
int i,j,count=0;
for(i=0;iSIZE;i++)
{
for(j=1;jSIZE-1;j++)
{
if(n[i][j]==n[i][j+1]||n[i][j]==n[i][j-1])
count++;
}
}
for(j=0;jSIZE;j++)
{
for(i=1;iSIZE-1;i++)
{
if(n[i][j]==n[i+1][j]||n[i][j]==n[i-1][j])
count++;
}
}
return count0?0:1;
}
void math(int n[][SIZE],char c)
{
switch(c)
{
case ‘w’:tow(n);break;
case ‘a’:toa(n);break;
case ‘s’:tos(n);break;
case ‘d’:tod(n);break;
default :;
}
}
void tow(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;aSIZE;a++)
m[a]=0;
for(j=0;jSIZE;j++)
{
for(a=0;aSIZE;a++)
{
for(i=0;iSIZE-1;i++)
{
if(n[i][j]==0)
{
n[i][j]=n[i+1][j];
n[i+1][j]=0;
}
}
}
}
for(j=0;jSIZE;j++)
{
for(a=0,i=0;iSIZE;i++)
{
if(n[i][j]!=n[i+1][j]n[i][j]!=0||n[i][j]==2048)
{
m[a++]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i+1][j])
{
m[a++]=n[i][j]+n[i+1][j];
score+=m[a-1];
n[i][j]=0,n[i+1][j]=0;
}
}
for(i=0;iSIZE;i++)
{
n[i][j]=m[i];
m[i]=0;
}
}
}
void toa(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;aSIZE;a++)
m[a]=0;
for(i=0;iSIZE;i++)
{
for(a=0;aSIZE;a++)
{
for(j=0;jSIZE-1;j++)
{
if(n[i][j]==0)
{
n[i][j]=n[i][j+1];
n[i][j+1]=0;
}
}
}
}
for(i=0;iSIZE;i++)
{
for(a=0,j=0;jSIZE;j++)
{
if(n[i][j]!=n[i][j+1]n[i][j]!=0||n[i][j]==2048)
{
m[a++]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i][j+1])
{
m[a++]=n[i][j]+n[i][j+1];
score+=m[a-1];
n[i][j]=0,n[i][j+1]=0;
}
}
for(j=0;jSIZE;j++)
{
n[i][j]=m[j];
m[j]=0;
}
}
}
void tos(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;aSIZE;a++)
m[a]=0;
for(j=SIZE-1;j=0;j–)
{
for(a=SIZE-1;a=0;a–)
{
for(i=SIZE-1;i0;i–)
{
if(n[i][j]==0)
{
n[i][j]=n[i-1][j];
n[i-1][j]=0;
}
}
}
}
for(j=SIZE-1;j=0;j–)
{
for(a=SIZE-1,i=SIZE-1;i=0;i–)
{
if(n[i][j]!=n[i-1][j]n[i][j]!=0||n[i][j]==2048)
{
m[a–]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i-1][j])
{
m[a–]=n[i][j]+n[i-1][j];
score+=m[a+1];
n[i][j]=0,n[i-1][j]=0;
}
}
for(i=SIZE-1;i=0;i–)
{
n[i][j]=m[i];
m[i]=0;
}
}
}
void tod(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;aSIZE;a++)
m[a]=0;
for(i=SIZE-1;i=0;i–)
{
for(a=SIZE-1;a=0;a–)
{
for(j=SIZE-1;j0;j–)
{
if(n[i][j]==0)
{
n[i][j]=n[i][j-1];
n[i][j-1]=0;
}
}
}
}
for(i=SIZE-1;i=0;i–)
{
for(a=SIZE-1,j=SIZE-1;j=0;j–)
{
if(n[i][j]!=n[i][j-1]n[i][j]!=0||n[i][j]==2048)
{
m[a–]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i][j-1])
{
m[a–]=n[i][j]+n[i][j-1];
score+=m[a+1];
n[i][j]=0,n[i][j-1]=0;
}
}
for(j=SIZE-1;j=0;j–)
{
n[i][j]=m[j];
m[j]=0;
}
}
}
c語言編一個簡單的剪刀石頭布遊戲?
用1、2、3來表示剪刀、石頭、布,然後先用scanf函數讀取用戶的輸入,再用rand函數產生一個隨機數,最後進行比較就可以了。
#include
#include
#include
void
main()
{
int
com,user;
char
c;
srand((unsigned)time(null));
//初始化隨機數,如果沒有這條語句,每次運行電腦產生的隨機數序列都是一樣的
printf(“進入遊戲\n”);
do{
printf(“請出拳(1.剪刀、2.石頭、3.布):”);
scanf(“%d”,user);
com=rand()%3+1;
//產生1-3範圍內的隨機數
printf(“電腦出%s\n”,com==1?”剪刀”:com==2?”石頭”:”布”);
switch(com-user)
//用電腦產生的數和用戶輸入的數的差值來判斷勝負
{
case
0:
printf(“平手\n”);
break;
case
1:
case
-2:
printf(“電腦贏了\n”);
break;
case
-1:
case
2:
printf(“你贏了\n”);
}
printf(“繼續遊戲按y鍵、其它鍵退出”);
getchar();
c=getchar();
}while(c==’y’
||
c==’y’);
printf(“已經退出遊戲”);
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/258030.html