這是一個簡單的小遊戲(剪刀石頭布),讓你與電腦對決。你出的拳頭由你本身決定,電腦則隨機出拳,最後判斷勝負。算法
啓動程序後,讓你出拳編程
出拳以後,顯示對決結果函數
代碼實現:學習
#include<stdio.h>spa
#include<stdlib.h>3d
#include<time.h>視頻
intmain()blog
{教程
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++編程!彎道超車,快人一步!筆者這裏或許能夠幫到你~
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!
免費學習資料: