您好,登錄后才能下訂單哦!
本篇內容主要講解“C語言實現猜拳游戲的代碼怎么寫”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C語言實現猜拳游戲的代碼怎么寫”吧!
1.打印選擇菜單(1.play,0.exit)
2.提示玩家0、1、2 分別代表石頭、剪刀、布
3.設置與計算機博弈次數
4.為計算機設置出拳(調用rand()函數生成0、1、2其中一個隨機數)
5.玩家出拳
6.判斷輸贏
7.展示玩家和計算機出的拳
8.若退出游戲展示玩家勝負與平局信息
僅僅使用rand()函數來生成隨機數是不行的,因為它每玩一次生成的隨機數都是相同的,即隨機數不隨機,所以要通過srand()函數,種下一個隨機種子,來產生隨機數。根據時間每時每刻都是變化的,可以用time()時間函數來產生種子。
這里 time_t 的類型就是在C語言中被定義為長整型,而srand()函數的參數類型unsignedint(無符號整形),所以使用時要強制類型轉換,而且**time()**函數,不需要設置參數,故用NULL代替。
comp = rand() % 3;
調用 rand() 函數 %3 就可以得到有個0~2之間的數值
據圖可以看出只需要判斷 (human - comp + 3) % 3 的值是 0、1 還是 2 就可以判斷是平局、計算機贏還是電腦贏。
代碼示例:
void disp_result(is_winer) { switch (is_winer) { case 0: printf("平局\n"); draw++;//平局次數加1 break; case 1: printf("計算機贏\n"); lose++;//失敗次數加1 break; case 2: printf("玩家贏\n"); win++;//獲勝次數加1 break; } }
is_winer 中存放的是 (human - comp + 3) % 3 的值,利用 switch 語句判斷其結果,再輸出對應的語句。變量draw、lose、win是用來統計玩家戰績信息。
控制玩家輸入的范圍是0~2之間的數值
倘若玩家輸入的數值不是0~2之間的,程序就無法正常運行了,所以要控制范圍。
可以利用do while循環來達到此目的。
代碼示例:
do { scanf("%d", &human);//玩家出拳 printf("\n"); if (human < 0 || human > 2) { printf("輸入錯誤,重新輸入\n"); } is_winer = (human - comp + 3) % 3; disp_result(is_winer);//判斷輸贏的函數 Dishumanplayer(human);//展示玩家出的拳 Discomplayer(comp);//展示計算機出拳 } while (human < 0 || human > 2);//控制玩家輸出范圍是0~2
if 語句的作用是用來當玩家輸入的數值超過了范圍時,對其進行提示輸入錯誤。
#include<stdio.h> #include<time.h> #include<stdlib.h> int draw = 0;//統計平局數 int lose = 0;//統計失敗數 int win = 0;//統計獲勝數 int human = 0;//玩家手勢 int comp = 0;//計算機手勢 int is_winer = 0;//判斷勝負 void menu() { printf("****************************************\n"); printf("*************** 猜拳游戲 ***************\n"); printf("****************************************\n"); printf("*************** 1.play ****************\n"); printf("*************** 0.exit ****************\n"); printf("****************************************\n"); } void Displayer(int comp, int human)//展示計算機和玩家出拳的函數 { printf("計算機出的是:"); switch (comp) { case 0: printf("石頭\n"); break; case 1: printf("剪刀\n"); break; case 2: printf("布\n"); break; } printf("玩家出的是:"); switch (human) { case 0: printf("石頭\n"); break; case 1: printf("剪刀\n"); break; case 2: printf("布\n"); break; } } //判斷輸贏 void disp_result(is_winer) { switch (is_winer) { case 0: printf("平局\n"); draw++;//平局次數加1 break; case 1: printf("計算機贏\n"); lose++;//失敗次數加1 break; case 2: printf("玩家贏\n"); win++;//獲勝次數加1 break; } } void game() { printf("(0)-石頭,(1)-剪刀,(2)-布\n"); printf("猜拳游戲開始!!!\n"); int number = 0;//猜拳次數 printf("請選擇猜拳次數:"); scanf("%d", &number); while (number) { comp = rand() % 3;//計算機出拳 printf("玩家出拳:"); do { scanf("%d", &human);//玩家出拳 printf("-----------猜拳游戲-------------\n"); if (human < 0 || human > 2) { printf("輸入錯誤,重新輸入\n"); } is_winer = (human - comp + 3) % 3; disp_result(is_winer);//判斷輸贏的函數 Displayer(comp, human);//展示出拳 } while (human < 0 || human > 2);//控制玩家輸出范圍是0~2 number--; } } int main() { srand((int)time(NULL)); int input = 0; do { menu(); printf("選擇玩游戲還是退出游戲!!!\n"); printf("請選擇:"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出游戲\n"); break; default: printf("選擇錯誤,重新選擇\n"); break; } } while (input); //展示玩家成績 printf("\a\n%d平 %d敗 %d勝\n", draw, lose, win); return 0; }
到此,相信大家對“C語言實現猜拳游戲的代碼怎么寫”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。