C/C++編程學習:百行代碼實現小遊戲(剪刀石頭布)


 

這是一個簡單的小遊戲(剪刀石頭布),讓你與電腦對決。你出的拳頭由你本身決定,電腦則隨機出拳,最後判斷勝負。算法

啓動程序後,讓你出拳編程


 

出拳以後,顯示對決結果函數


 

代碼實現:學習

#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++編程!彎道超車,快人一步!筆者這裏或許能夠幫到你~

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!

免費學習書籍:


 

免費學習資料:

相關文章
相關標籤/搜索