C语言详细实现猜拳游戏流程

目录
  • 一、游戏逻辑
  • 二、思维导图
  • 三、游戏过程
  • 四、代码分析
    • 1.设置随机数的方法
    • 2.设置计算机出拳的方法
    • 3.判断输赢的方法
    • 4.玩家猜拳
  • 五、完整代码

一、游戏逻辑

1.打印选择菜单(1.play,0.exit)

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

3.设置与计算机博弈次数

4.为计算机设置出拳(调用rand()函数生成0、1、2其中一个随机数)

5.玩家出拳

6.判断输赢

7.展示玩家和计算机出的拳

8.若退出游戏展示玩家胜负与平局信息

二、思维导图

三、游戏过程

四、代码分析

1.设置随机数的方法

仅仅使用rand()函数来生成随机数是不行的,因为它每玩一次生成的随机数都是相同的,即随机数不随机,所以要通过srand()函数,种下一个随机种子,来产生随机数。根据时间每时每刻都是变化的,可以用time()时间函数来产生种子。

这里 time_t 的类型就是在C语言中被定义为长整型,而srand()函数的参数类型unsignedint(无符号整形),所以使用时要强制类型转换,而且**time()**函数,不需要设置参数,故用NULL代替。

2.设置计算机出拳的方法

comp = rand() % 3;

调用 rand() 函数 %3 就可以得到有个0~2之间的数值

3.判断输赢的方法

据图可以看出只需要判断 (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语言详细实现猜拳游戏流程的文章就介绍到这了,更多相关C语言猜拳游戏内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言实现像素鸟游戏

    本文实例为大家分享了C语言实现像素鸟游戏的具体代码,供大家参考,具体内容如下 在进入更复杂的学习之前,我们最后实现一个小游戏——像素鸟. 下落的小鸟 首先我们写好游戏代码框架并实现小鸟下落和上升(按空格)的功能: #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <cwindow.h> //全局变量 int high,width;    //画面尺寸 int bird_x,b

  • C语言实现空战游戏

    本文实例为大家分享了C语言实现空战游戏的具体代码,供大家参考,具体内容如下 一.项目描述和成果展示 项目描述:   在以往的程序中进行了改进.例如:   可以发射多个子弹        可以有多个敌机 飞机大战 1.0版飞机大战 2.0版 现在这个版本是3.0版 这个版本的各个功能基本完善 效果图如下: 二.发射多个子弹 代码如下: #include<stdio.h> #include<string.h> #include<conio.h> #include<Wi

  • C语言实现简单的飞机大战游戏

    目录 一.项目描述和最终的成果展示 二.输出一个飞机模型 三.实现控制飞机移动的功能 四.添加发射激光功能 五.添加靶子和分数统计功能 本文实例为大家分享了C语言实现简单飞机大战游戏的具体代码,供大家参考,具体内容如下 一.项目描述和最终的成果展示 项目描述: 显示出一个飞机,并可以控制移动,发出激光,打靶练习. 效果展示: 二.输出一个飞机模型 先输出一个飞机模型.后面再进一步完成控制飞机的功能. 代码如下: //输出飞机图案 #include<stdio.h> #include<st

  • C语言实现猜拳游戏

    一.问题 C语言实现猜拳游戏,用户自己选择对手,可以创建玩家角色.可以记录当前对战情况(对战局数,得分情况) 二.解决思路 猜拳游戏大家都不陌生,从小玩到大,遇到棘手的选择,猜拳往往是最能服众的处理办法.那么今天我们就用C语言来实现这个小游戏.这题比较简单,创建两个字符数组,对应对手和玩家.接着用户选择要出的(石头,剪刀,布),然后是电脑选择,最后把两个选择进行对比,判断输赢. 三.代码实现 第一步,编写game.h头文件,把需要用到的函数声明及一些宏定义写在里面 #ifndef __GAME_

  • 利用C语言实现n字棋游戏

    目录 前言 思路 效果图 开始的界面 棋盘的样子 随机打的坐标 获得胜利 结束程序 代码 test.c game.c game.h 前言 这里就简单发一个n字棋游戏,和井字棋一样,不过这个游戏你可以自定义棋盘的大小. 井字棋是3×3大小,满足三个平齐就获得胜利. 小奔写的这个游戏,你可以自定义为10×10大小,满足6个平齐就获得胜利,都是可以随便定义的. 如果感兴趣的话就可以来尝试一下,或许你可以找到一些bug (至于为什么说它是“人工智障”呢?因为它是随机下的,并不会去针对你,它很有自己的想法

  • C语言数组实现打砖块游戏

    本文实例为大家分享了C语言数组实现打砖块游戏的具体代码,供大家参考,具体内容如下 这次我们使用数组来改进打砖块游戏. 反弹的球 首先我们实现一个可以在荧幕上反弹的小球.使用二维数组 int canvas[High][Width] ( 和js的canvas没有一毛钱关系)来储存画布上的所有元素,值为0时输出空格,值为1时输出小球. 设小球坐标为(ball_x, ball_y),则有canvas[ball_x][ball_y] = 1 ,且暂时将其他元素的值设为0. 每次更新小球位置时将原位置元素设

  • C语言实现打砖块小游戏

    本文实例为大家分享了C语言实现打砖块游戏的具体代码,供大家参考,具体内容如下 本节我们将沿用 上一节 所提到的函数式游戏框架来写一个弹球打砖块的游戏. 基本量.边框绘制 我们首先定义好可能需要的变量,比如小球坐标以及速度.游戏界面高度和宽度等等,然后再根据之前提到的弹跳小球重构代码,剩下的内容再分步添置即可. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <cwindow.h&

  • C语言实现简单猜拳小游戏

    C语言实现简单的一个猜拳小游戏,供大家参考,具体内容如下 全部代码 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<Windows.h> int pcinput; //电脑输入 int userinput; //用户输入 #define echo ">_ " //俺觉得好看 char case_win(int left, int right);//判断哪边

  • C语言实现的猜拳游戏代码分享

    这是一个简单的猜拳游戏(剪子包子锤),让你与电脑对决.你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负. 下面的代码会实现一个猜拳游戏,让你与电脑对决.你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负. 启动程序后,让用户出拳,截图: 用户出拳,显示对决结果:截图: 代码实现: #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { char gamer; // 玩家出拳 int

  • C语言详细实现猜拳游戏流程

    目录 一.游戏逻辑 二.思维导图 三.游戏过程 四.代码分析 1.设置随机数的方法 2.设置计算机出拳的方法 3.判断输赢的方法 4.玩家猜拳 五.完整代码 一.游戏逻辑 1.打印选择菜单(1.play,0.exit) 2.提示玩家0.1.2 分别代表石头.剪刀.布 3.设置与计算机博弈次数 4.为计算机设置出拳(调用rand()函数生成0.1.2其中一个随机数) 5.玩家出拳 6.判断输赢 7.展示玩家和计算机出的拳 8.若退出游戏展示玩家胜负与平局信息 二.思维导图 三.游戏过程 四.代码分

  • 详解用C语言实现三子棋游戏流程

    目录 三子棋游戏简介 一.分析及实现 1.棋盘 2.落子 3.判断输赢 二.程序演示 三.完整代码 1.main.c 2.game.c 3.game.h 总结 三子棋游戏简介 这是一个简单的三子棋小游戏,估计大家小时候都玩儿过,只要能连成三个,无论是行,列还是对角线,就可以胜利了.是不是很简单呢,那我们来尝试一下用C语言来写一个简单的三子棋游戏. 一.分析及实现 1.棋盘 想要玩游戏,那首先应该有一个棋盘吧.因为我们玩儿的是三子棋,所以来说一个3X3的棋盘应该可以满足要求.这里使用了一个三行三列

  • C语言实现经典扫雷游戏流程

    目录 扫雷小游戏简介 一.分析与实现 1.设计棋盘 2.放置雷以及排雷 二.扫雷小游戏演示 三.源码 总结 扫雷小游戏简介 想必很多人小时候电脑没网的时候都玩儿过这个经典的小游戏,也都被它折磨过.其实这个游戏很简单,通过点击相应位置显示的数字来确定周围雷的数量,在避免踩到雷的同时找出所有的雷就能获得胜利. 这次我们用C语言来实现一个简单的扫雷小游戏. 一.分析与实现 1.设计棋盘 要玩儿扫雷游戏,我们首先应该有一个棋盘.这个棋盘中的雷应该是在开始玩儿游戏的时候就已经布置好了,不能随意变化.但是呢

  • C语言扫雷详细代码分步实现流程

    目录 一,创建菜单 二,创建游戏内容 1.场景创建和初始化 2.场景打印 3.埋雷 4.排雷 完整代码 1.game.h 2.game.c 3.test.c 还是说一下:发的这些小游戏都是第一个版本,之后改进的话都会在标题中声明. 上一个游戏三子棋:             >> C语言三子棋一步步实现详程<< 来看这次扫雷游戏的思路:                  1.创建游戏界面菜单                   2.创建游戏内容:             初始化场景

  • C语言 90后怀旧游戏超级玛丽的实现流程

    在你的童年记忆里,是否有一个蹦跳.顶蘑菇的小人已经被遗忘? 如果你回忆起了它,你定然会觉得现在它幼稚.无聊,画面不漂亮,游戏不精彩--但请你记住:这才是真正的游戏,它给了你无限的欢乐!许多人只玩过红白机或者网上玩家自己制作的几个破Flash小游戏就还以为任天堂所骄傲的"马里奥"系列就这样子的,你们真的以为超级马里奥就是1985年的"踩蘑菇/采蘑菇"么?也许大家都管马里奥叫超级玛丽,踩蘑菇,这是谁宣传的? 谁认为马里奥就1个游戏?谁说马里奥没有一个是2000年后出的!

  • C语言详细分析讲解流程控制语句用法

    目录 一.分支语句 1.if语句 2.switch语句 二.循环语句 1.for语句 2.break和continue语句 3.循环嵌套 4.while和do…while语句 一.分支语句 1.if语句 流程控制语句可以让程序中的语句不再从上到下逐条执行 分支是一种流程控制语句,可以把程序中某些语句忽略掉不去执行 if关键字可以用来编写分支语句,只有当表达式为真时,才会执行对应语句 如果多个分支的逻辑表达式之间存在互斥关系,则可以采用else关键字把他们合并成一个分支语句 一个分支语句中的多个逻

  • 基于C语言实现的扫雷游戏代码

    本文详细讲述了基于C语言实现的扫雷游戏代码,代码中备有比较详细的注释,便于读者阅读和理解.希望对学习游戏开发的朋友能有一点借鉴价值. 完整的实例代码如下: /* 模拟扫雷游戏 */ #include <graphics.h> #include <math.h> #include <stdio.h> #include <dos.h> #include <stdlib.h> #include <conio.h> #include <

  • python实现猜拳游戏

    对于一个初级学习python的人,这将是一个非常简单而有趣的内容: 代码非常简单,主要是:随机函数–需要导入random模块与条件语句的一个简单实用: 下面,简单介绍一下python中的随机函数: random.random()用于生成一个0到1的随机符小数: 0 <= n < 1.0 random.random() # Random float x, andom.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,

随机推荐