
這是一個簡單的小游戲(剪刀石頭布),讓你與電腦對決,你出的拳頭由你自己決定,電腦則隨機出拳,最后判斷勝負,
啟動程式后,讓你出拳

出拳之后,顯示對決結果

代碼實作:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
chargamer;// 玩家出拳
intcomputer;// 電腦出拳
intresult;// 比賽結果
// 為了避免玩一次游戲就退出程式,可以將代碼放在回圈中
while(1){
printf("這是一個猜拳的小游戲,請輸入你要出的拳頭:\n");
printf("A:剪刀\nB:石頭\nC:布\nD:不玩了\n");
scanf("%c%*c",&gamer);
switch(gamer){
case65://A
case97://a
gamer=4;
break;
case66://B
case98://b
gamer=7;
break;
case67://C
case99://c
gamer=10;
break;
case68://D
case100://d
return0;
default:
printf("你的選擇為 %c 選擇錯誤,退出...\n",gamer);
getchar();
system("cls");// 清屏
return0;
break;
}
srand((unsigned)time(NULL));// 亂數種子
computer=rand()%3;// 產生亂數并取余,得到電腦出拳
result=(int)gamer+computer;// gamer 為 char 型別,數學運算時要強制轉換型別
printf("電腦出了");
switch(computer)
{
case0:printf("剪刀\n");break;//4 1
case1:printf("石頭\n");break;//7 2
case2:printf("布\n");break;//10 3
}
printf("你出了");
switch(gamer)
{
case4:printf("剪刀\n");break;
case7:printf("石頭\n");break;
case10:printf("布\n");break;
}
if(result==6||result==7||result==11)printf("你贏了!");
elseif(result==5||result==9||result==10)printf("電腦贏了!");
elseprintf("平手");
system("pause>nul&&cls");// 暫停并清屏
}
return0;
}
代碼分析
1) 首先,我們需要定義3個變數來儲存玩家出的拳頭(gamer)、電腦出的拳頭(computer)和最后的結果(result),然后給出文字提示,讓玩家出拳,
接下來接收玩家輸入:
scanf("%c%*c",&gamer);
注意:由于每次輸入以回車結束,緩沖區中除了玩家輸入的字母,還有回車符,回車符要跳過,以免影響下次輸入,Scanf() 函式的格式控制字串個數可以多于引數個數,scanf("%c%*c",&gamer);的作用是從緩沖區多輸出一個字符(回車符),卻不賦給任何變數,
玩家輸入結束,使用 switch 陳述句判斷輸入內容,65(A)、97(a)、66(B)、98(b)、67(C)、99(c)、68(D)、100(d)為相應字符的ASCII碼,
注意:system("cls"); 陳述句的作用是清屏,System() 函式用來執行 dos 命令,這里相當于在 dos 里輸入 cls 命令,
2) 玩家出拳結束,電腦開始出拳,
電腦通過產生亂數來出拳:
srand((unsigned)time(NULL));//為了避免多次運行結果相同,故在前面加入上(需要time.h)
computer=rand()%3;//獲取0~2的亂數
最后通過玩家和電腦出拳的和來判斷輸贏:
result=(int)gamer+computer;
// ...
if(result==6||result==7||result==11)printf("你贏了!");
elseif(result==5||result==9||result==10)printf("電腦贏了!");
elseprintf("平手");
這是一個很巧妙的演算法,玩家和電腦出拳不同,result 的值就不同,且不會重復

另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~
分享(原始碼、專案實戰視頻、專案筆記,基礎入門教程)
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
免費學習書籍:

免費學習資料:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/262345.html
標籤:C
上一篇:緩沖區溢位與注入分析
