利用C語言編寫“剪刀石頭布”小游戲
前言
大家好~
我是一名C語言初學者,學了C語言基礎(chǔ)后,我制作了一個小游戲:剪刀石頭布。
希望大家能對我的思路和代碼提出小Tips(eg.更簡便的方法與程序)
我也會虛心接受大家的建議~
一、游戲原理
“剪刀石頭布”這個游戲,想必大家都很熟悉了。
兩個人在玩游戲時,事先都不知道對方將要出什么,這中間存在著一種隨機性。
而這種隨機性相當于C語言里stdlib.h庫中rand()函數(shù),rand()函數(shù)用來產(chǎn)生隨機數(shù),因為rand是根據(jù)提供給srand()的種子值返回一個隨機數(shù),所以要使每次隨機的結(jié)果不一樣,需要在srand()函數(shù)里引用time()函數(shù),因為每一次運行程序的時間是不同的,所以seed會不同,運行出來的結(jié)果也會不同。
補充:
rand()的內(nèi)部實現(xiàn)是用線性同余法實現(xiàn)的,是偽隨機數(shù),由于周期較長,因此在一定范圍內(nèi)可以看成是隨機的。
rand函數(shù)需要有srand()函數(shù)用來設(shè)置rand()產(chǎn)生隨機數(shù)時的隨機數(shù)種子。
參數(shù)seed是整數(shù),通常可以利用time(0)或geypid(0)的返回值作為seed。
首先將游戲者(gamer)的選項輸入,并用switch分三種情況,將輸入的A、B、C(或a、b、c)轉(zhuǎn)換為整數(shù)(Gamer),然后用rand函數(shù)在1-3中隨機產(chǎn)生一個整數(shù)來代表計算機(computer)的選項,再將兩個整數(shù)相加,最后用switch來分類討論,輸出結(jié)果。
(因水平有限,我目前只能想到用這種方法來判斷勝負,所以要避免兩種不同情況相加出的結(jié)果相同)
二、C語言代碼
1.引入函數(shù)
代碼如下:
#include "stdio.h" #include "stdlib.h" #include "time.h"
2.初始頁面顯示
代碼如下:
int main() { char Gamer=0; int computer,gamer; int result; while (1) { printf("這個小游戲是——剪刀石頭布,\n你要出:\n"); printf("A:剪刀\nB:石頭\nC:布\n"); scanf_s("%c", &Gamer); switch (Gamer) { case 65 | 97: //A a gamer = 4; break; case 66 | 98: //B b gamer = 7; break; case 67 | 99: //C c gamer = 10; break; default: printf("你的選擇為%c\n選擇錯誤,退出...\n", Gamer); system("pause"); return 0; break; }
3.游戲過程及結(jié)果
srand((unsigned)time(0));//每一次的seed都不同 computer = rand() % 3+1; result = gamer + computer; printf("電腦出了:"); switch (computer) { case 3:printf("剪刀\n"); break; case 1:printf("石頭\n"); break; case 2:printf("布\n"); break; } printf("你出了:"); switch (gamer) { case 4:printf("剪刀\n"); break; case 7:printf("石頭\n"); break; case 10:printf("布\n"); break; } if (result == 6 || result == 10 || result == 11) printf("你贏了!"); else if (result == 5 || result == 9 || result == 13) printf("電腦贏了!"); else printf("平手"); system("pause>nul&&cls"); //清屏 } return 0; }
總結(jié)
以上就是有關(guān)于游戲的思路和代碼,編寫程序前,我查閱了一些資料,并且詢問了他人,在這個過程中,我有學到許多新知識.
但是因為水平有限,程序代碼還是很繁瑣,方法也不是最好的,希望能通過進一步的學習,開拓自己的思路,用更快捷的方法編寫程序。
到此這篇關(guān)于利用C語言編寫“剪刀石頭布”小游戲的文章就介紹到這了,更多相關(guān)C語言寫剪刀石頭布游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
快速了解C語言靜態(tài)關(guān)鍵字static的作用
這篇文章主要介紹了C語言中靜態(tài)關(guān)鍵字static的作用,對大家學習C語言非常有幫助,有需求的小伙伴可以參考下2020-05-05C++數(shù)據(jù)結(jié)構(gòu)之雙向鏈表
這篇文章主要為大家詳細介紹了C++數(shù)據(jù)結(jié)構(gòu)之雙向鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05C++如何解決rand()函數(shù)生成的隨機數(shù)每次都一樣的問題
這篇文章主要介紹了C++如何解決rand()函數(shù)生成的隨機數(shù)每次都一樣的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08C++IO流之fstream,?stringstream使用小結(jié)
C語言中常用的輸入輸出函數(shù)有如下幾種:前者是格式化標準輸入輸出,后者是格式化文件輸入輸出,最后是格式化字符串輸入輸出,這篇文章主要介紹了C++IO流:fstream,?stringstream總結(jié),需要的朋友可以參考下2022-04-04