突發奇想,打算用c語言編寫乙個猜拳遊戲,深知網上有很多教程,未看教程,自己開始盲編,
首先需要定義猜拳遊戲的精髓「石頭,剪刀,布」,這裡我們用數字定義:
//賦予1=石頭,2=剪刀,3=布
我們平時在玩猜拳遊戲的時候是玩家vs玩家,有很多心理戰術(察言觀色),但是我們電腦是個面無表情的玩家!我們跟電腦對戰只有三分之一的機率獲勝
好了,知道這個遊戲是玩家vs電腦,接下來就是電腦的出拳機制,它的隨機性,這時候我們使用「隨機數生成」
//產生隨機數
int a =
rand()
%3+1
;
但是這種隨機數產生是一次性的,我們需要加入隨機數種子
srand((
unsigned
int)time)
;
而且還需要引入標頭檔案
#include
我們來用printf()來檢驗每次產生的隨機數是否正確(在正式執行時我們需要隱藏列印出來的隨機數,以確保遊戲的公平性。看著電腦出拳並沒有遊戲體驗吶!!)
//printf("%d\n", a);
//查驗隨機數
在隨機數中我們已經賦予電腦值為:
int a
我們要給玩家賦予:
unsigned
int num =0;
printf
("請輸入你要出的數字:");
scanf
("%d"
,&num)
;
接下來就是判斷我們遊戲的勝負關係,大家都知道「石頭,剪刀,布」是相互克制關係,我們賦予的值,「1,2,3」也是克制關係可以理解為「1贏2,2贏3,3贏1」,
這時候我們就開始確定玩家勝利的條件:
當電腦輸入1(石頭)時,玩家輸入3(布)為勝利。
當電腦輸入2(剪刀)時,玩家輸入1(石頭)為勝利。
當電腦輸入3(布)時,玩家輸入3(剪刀)為勝利。
a ==
1&& num ==
3|| a ==
2&& num ==
1|| a ==
3&& num ==
2
程式用與(&&)或(||)相連。
同理玩家失敗的條件:
當電腦輸入1(石頭)時,玩家輸入2(剪刀)為失敗。
當電腦輸入2(剪刀)時,玩家輸入3(布)為失敗。
當電腦輸入3(布)時,玩家輸入1(石頭)為失敗。
a ==
1&& num ==
2|| a ==
2&& num ==
3|| a ==
3&& num ==
1
其他情況則為平局:
玩家與電腦顯示數值相同
a == num
用 if…else if…else…函式來判斷結果:
if()
elseif(
)else
注:(當分析這一段時,我犯了乙個錯誤,導致整個分析方法過於複雜
當時忘記輸入「= =」兩個等於,只輸入乙個導致報錯,當時分析出了這種方法:
a>num&&a!=
2&&num!=
2
假設電腦出手,數值a=3,電腦獲勝條件只能是玩家num=1,所以必須要電腦數值大於玩家,且電腦與玩家都不能等於2)
到這裡,我們猜拳程式就差不多完成了80%,接下來要開始完善**與程式。
加入睿智的開場白:
printf
("******************************************\n");
printf
("* 歡迎來到睿智遊戲之家 *\n");
printf
("* 本次您要玩的遊戲是「剪刀,石頭,布」 *\n");
printf
("* 請按照規定輸入: *\n");
printf
("* 輸入數字「1」進入遊戲 *\n");
printf
("* 輸入其他,進行退出 *\n");
printf
("******************************************\n"
);
與睿智的遊戲介紹:
printf
("************************************\n");
printf
("* 遊戲介紹: *\n");
printf
("* 您需要跟電腦進行博弈。 *\n");
printf
("* 輸入數字「1」====「石頭」 *\n");
printf
("* 輸入數字「2」====「剪刀」 *\n");
printf
("* 輸入數字「3」====「布」 *\n");
printf
("* 輸入其他,進行退出 *\n");
printf
("************************************\n"
);
printf
("************************************\n");
printf
("* 恭喜你,你贏啦! *\n");
printf
("************************************\n"
);
睿智的結束語:
system
("cls");
printf
("************************************\n");
printf()
;printf
("************************************\n");
printf
("正在退出,倒計時...\n");
int f =4;
for(
int i =
0; i <
4; i++
)exit(0
);
這裡結束,我先做了乙個清屏,並且用for()迴圈做了乙個簡易的倒計時,這裡引入了計數時間函式sleep(),sleep的單位是毫秒,為了變成1秒,我在這裡面單位加了(1000),!!呼叫sleep函式,還需要引入標頭檔案
#include
最後為了保證遊戲的多次參與度,這裡用while(1)
while(1
);
加入了乙個無限迴圈。
最後將隨機數(即電腦出拳)顯示結果顯示在玩家出拳後。
printf
("電腦已出拳,該您了。\n");
printf
("請輸入你要出的數字:");
scanf
("%d"
,&num)
;printf
("\n");
printf
("電腦出拳結果是:%d\n"
,a);
下面是完整程式:
#define _crt_secure_no_warnings
#include
#include
#include
#include
#include
#include
void
test()
else
if(a ==
1&& num ==
3|| a ==
2&& num ==
1|| a ==
3&& num ==2)
else
if(a == num)
else
exit(0
);}}
}void
test01()
void
test02()
exit(0
);printf
("\n");
}int
main
(void
)else
printf
("\n");
system
("pause");
return0;
}
C 實現猜拳小遊戲
1.使用guid實現真正的隨機數 2.重複遊戲 3.計算分數 using system using system.diagnostics namespace 猜拳小遊戲 console.writeline 開始玩猜拳小遊戲 while true else if yourdesc 剪刀 else if...
C語言 猜拳遊戲
c語言實現猜拳小遊戲 srand unsigned time null 隨機數種子 computer rand 3 產生隨機數並取餘,得到電腦出拳 result int gamer computer gamer 為 char 型別,數 算時要強制轉換型別 printf 電腦出了 switch com...
C語言之猜拳遊戲
描述 石頭剪子布,是一種猜拳遊戲。起源於中國,然後傳到日本 朝鮮等地,隨著亞歐 的不斷發展它傳到了歐洲,到了近現代逐漸風靡世界。簡單明瞭的規則,使得石頭剪子布沒有任何規則漏洞可鑽,單次玩法比拼運氣,多回合玩法比拼心理博弈,使得石頭剪子布這個古老的遊戲同時用於 意外 與 技術 兩種特性,深受世界人民喜...