Java執行緒優先順序(Priority)
阿新 • • 發佈:2020-12-01
此文轉載自:https://blog.csdn.net/weixin_52293617/article/details/110330550
我是一名C語言初學者,學了C語言基礎後,我製作了一個小遊戲:剪刀石頭布。
希望大家能對我的思路和程式碼提出小Tips(eg.更簡便的方法與程式)
我也會虛心接受大家的建議~
首先將遊戲者(gamer)的選項輸入,並用switch分三種情況,將輸入的A、B、C(或a、b、c)轉換為整數(Gamer),然後用rand函式在1-3中隨機產生一個整數來代表計算機(computer)的選項,再將兩個整數相加,最後用switch來分類討論,輸出結果。
(因水平有限,我目前只能想到用這種方法來判斷勝負,所以要避免兩種不同情況相加出的結果相同)
但是因為水平有限,程式程式碼還是很繁瑣,方法也不是最好的,希望能通過進一步的學習,開拓自己的思路,用更快捷的方法編寫程式。
目錄
前言
大家好~我是一名C語言初學者,學了C語言基礎後,我製作了一個小遊戲:剪刀石頭布。
希望大家能對我的思路和程式碼提出小Tips(eg.更簡便的方法與程式)
我也會虛心接受大家的建議~
一、遊戲原理
“剪刀石頭布”這個遊戲,想必大家都很熟悉了。
兩個人在玩遊戲時,事先都不知道對方將要出什麼,這中間存在著一種隨機性。
而這種隨機性相當於C語言裡stdlib.h庫中rand()函式,rand()函式用來產生隨機數,因為rand是根據提供給srand()的種子值返回一個隨機數,所以要使每次隨機的結果不一樣,需要在srand()函式裡引用time()函式,因為每一次執行程式的時間是不同的,所以seed會不同,執行出來的結果也會不同。
補充:
rand()的內部實現是用線性同餘法實現的,是偽隨機數,由於週期較長,因此在一定範圍內可以看成是隨機的。
rand函式需要有srand()函式用來設定rand()產生隨機數時的隨機數種子。
引數seed是整數,通常可以利用time(0)或geypid(0)的返回值作為seed。
首先將遊戲者(gamer)的選項輸入,並用switch分三種情況,將輸入的A、B、C(或a、b、c)轉換為整數(Gamer),然後用rand函式在1-3中隨機產生一個整數來代表計算機(computer)的選項,再將兩個整數相加,最後用switch來分類討論,輸出結果。
(因水平有限,我目前只能想到用這種方法來判斷勝負,所以要避免兩種不同情況相加出的結果相同)
二、C語言程式碼
1.引入函式
程式碼如下:
#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.遊戲過程及結果
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;
}
總結
以上就是有關於遊戲的思路和程式碼,編寫程式前,我查閱了一些資料,並且詢問了他人,在這個過程中,我有學到許多新知識.但是因為水平有限,程式程式碼還是很繁瑣,方法也不是最好的,希望能通過進一步的學習,開拓自己的思路,用更快捷的方法編寫程式。