亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言實現猜拳游戲的代碼怎么寫

發布時間:2022-05-23 13:44:30 來源:億速云 閱讀:249 作者:iii 欄目:開發技術

本篇內容主要講解“C語言實現猜拳游戲的代碼怎么寫”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C語言實現猜拳游戲的代碼怎么寫”吧!

一、游戲邏輯

1.打印選擇菜單(1.play,0.exit)

2.提示玩家0、1、2 分別代表石頭、剪刀、布

3.設置與計算機博弈次數

4.為計算機設置出拳(調用rand()函數生成0、1、2其中一個隨機數)

5.玩家出拳

6.判斷輸贏

7.展示玩家和計算機出的拳

8.若退出游戲展示玩家勝負與平局信息

二、思維導圖

C語言實現猜拳游戲的代碼怎么寫

三、游戲過程

C語言實現猜拳游戲的代碼怎么寫

四、代碼分析

1.設置隨機數的方法

C語言實現猜拳游戲的代碼怎么寫

僅僅使用rand()函數來生成隨機數是不行的,因為它每玩一次生成的隨機數都是相同的,即隨機數不隨機,所以要通過srand()函數,種下一個隨機種子,來產生隨機數。根據時間每時每刻都是變化的,可以用time()時間函數來產生種子。

C語言實現猜拳游戲的代碼怎么寫

C語言實現猜拳游戲的代碼怎么寫

這里 time_t 的類型就是在C語言中被定義為長整型,而srand()函數的參數類型unsignedint(無符號整形),所以使用時要強制類型轉換,而且**time()**函數,不需要設置參數,故用NULL代替。

2.設置計算機出拳的方法

comp = rand() % 3;

調用 rand() 函數 %3 就可以得到有個0~2之間的數值

3.判斷輸贏的方法

C語言實現猜拳游戲的代碼怎么寫

據圖可以看出只需要判斷 (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是用來統計玩家戰績信息。

4.玩家猜拳

控制玩家輸入的范圍是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語言實現猜拳游戲的代碼怎么寫”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

措美县| 凤翔县| 蚌埠市| 高陵县| 东乡族自治县| 金乡县| 资源县| 顺昌县| 多伦县| 玛纳斯县| 望江县| 永川市| 民勤县| 盘山县| 西昌市| 沙雅县| 沧源| 泰州市| 措勤县| 涞水县| 张家港市| 饶平县| 于都县| 中方县| 九江市| 博罗县| 界首市| 昌平区| 南郑县| 扶沟县| 兰考县| 萝北县| 洱源县| 巫溪县| 太仆寺旗| 平安县| 玉环县| 札达县| 资溪县| 绿春县| 科技|