C语言基础and进阶——猜拳游戏(6个版本)

news/2024/7/20 3:15:29 标签: 小程序, c语言, switch

这种小游戏是写起来很简单的我们直接看代码来理解就行了
最主要一点就是:对于剪刀石头布的编写

#include<stdio.h>
#include<stdlib.h>

#define max 100

//猜拳游戏在计算机中石头用0表示剪刀用1布用2表示
//使用随机函数来让计算机随机输出

int main()
{
	int p_input;//用户输入
	int judge;
	srand(time(NULL));//设置随机种子
	printf("猜拳游戏开始!\n");
	do
	{
		int pc_input = rand() % 3;//随机输出作为电脑输出0~2
		printf("\n石头剪刀布:0:石头,1:剪刀,2:布\n");
		scanf_s("%d", &p_input);
		switch (pc_input)
		{
		case 0:printf("石头"); break;
		case 1:printf("剪刀"); break;
		case 2:printf("布"); break;
		}
		printf("\n");
		judge = (pc_input - p_input + 3) % 3;//判断条件
		switch (judge)
		{
		case 0:printf("平局"); break;
		case 1:printf("你输了"); break;
		case 2:printf("你赢了"); break;
		}
	} while (1);
	return 0;
}

2:

#include<stdio.h>
#include<stdlib.h>

//猜拳游戏——读取双方手势

int main()
{
	int p_in;
	int pc_in;
	int judge;
	srand(time(NULL));
	printf("猜拳游戏开始!\n");
	do
	{
		do
		{
			pc_in = rand() % 3;//随机输出作为电脑输出0~2
			printf("\n石头剪刀布:0:石头,1:剪刀,2:布\n");
			scanf_s("%d", &p_in);
		} while (p_in < 0 || p_in>2);
		printf("我出了");
		switch (pc_in)
		{
		case 0:printf("石头"); break;
		case 1:printf("剪刀"); break;
		case 2:printf("布"); break;
		}
		printf("你出了");
		switch (p_in)
		{
		case 0:printf("石头"); break;
		case 1:printf("剪刀"); break;
		case 2:printf("布"); break;
		}
		printf("\n");
		judge = (pc_in - p_in + 3) % 3;//判断条件
		switch (judge)
		{
		case 0:printf("平局"); break;
		case 1:printf("你输了"); break;
		case 2:printf("你赢了"); break;
		}
	} while (1);
}

3:

#include<stdio.h>
#include<stdlib.h>

//猜拳游戏——导入表示手势的字符串

int main()
{
	int p_in;
	int pc_in;
	int judge;
	char retry;
	char* gesture[] = { "剪刀","石头","布" };
	srand(time(NULL));
	printf("猜拳游戏开始!\n");
	do
	{
		pc_in = rand() % 3;//随机输出作为电脑输出0~2
		do
		{
			printf("\n石头剪刀布:");
			for (int i = 0; i < 3; i++)
			{
				printf("(%d)%s", i, gesture[i]);
			}
			printf(":\n");
			scanf_s("%d", &p_in);
		} while (p_in < 0 || p_in>2);
		printf("我出了%s,你出了%s。\n", gesture[pc_in], gesture[p_in]);
		printf("\n");
		judge = (pc_in - p_in + 3) % 3;//判断条件
		switch (judge)
		{
		case 0:printf("平局"); break;
		case 1:printf("你输了"); break;
		case 2:printf("你赢了"); break;
		}
		printf("再来一次吗?(y/n):");
		scanf_s(" %c", &retry, 1);
	} while (retry == 'y');
}

4:

#include<stdio.h>
#include<stdlib.h>

//猜拳游戏——让计算机后出

int main()
{
	int p_in;
	int pc_in;
	int judge;
	char retry;
	char* gesture[] = { "剪刀","石头","布" };
	printf("猜拳游戏开始!\n");
	do
	{
		do
		{
			printf("\n石头剪刀布:");
			for (int i = 0; i < 3; i++)
			{
				printf("(%d)%s", i, gesture[i]);
			}
			printf(":\n");
			scanf_s("%d", &p_in);
		} while (p_in < 0 || p_in>2);
		pc_in = (p_in + 1) % 3;
		printf("我出了%s,你出了%s。\n", gesture[pc_in], gesture[p_in]);
		printf("\n");
		judge = (pc_in - p_in + 3) % 3;//判断条件
		switch (judge)
		{
		case 0:printf("平局"); break;
		case 1:printf("你输了"); break;
		case 2:printf("你赢了"); break;
		}
		printf("再来一次吗?(y/n):");
		scanf_s(" %c", &retry, 1);
	} while (retry == 'y');
}

5:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

//猜拳游戏——显示成绩

int p_in;
int pc_in;
int judge;
char retry;
int win, lose, same;
char* gesture[] = { "剪刀","石头","布" };

void init()
{
	win = 0;
	lose = 0;
	same = 0;
	srand(time(NULL));
	printf("猜拳游戏开始!\n");
}

void readgesture()
{
	pc_in = rand() % 3;
	do
	{
		printf("\n石头剪刀布:");
		for (int i = 0; i < 3; i++)
		{
			printf("(%d)%s", i, gesture[i]);
		}
		printf(":\n");
		scanf_s("%d", &p_in);
	} while (p_in < 0 || p_in>2);
}

//更新胜利失败和平局
void count(int result)
{
	switch (result)
	{
	case 0:same++; break;
	case 1:lose++; break;
	case 2:win++; break;
	}
}

//显示判断结果
void show_result(int result)
{
	switch (result)
	{
	case 0:puts("平局"); break;
	case 1:puts("你输了"); break;
	case 2:puts("你赢了"); break;
	}
}

//确定是否再次挑战
char wanna_retry()
{
	printf("再来一次吗?(y/n):");
	scanf_s(" %c", &retry, 1);
	return retry;
}

int main()
{
	init();
	do
	{
		readgesture();
		printf("我出了%s,你出了%s。\n", gesture[pc_in], gesture[p_in]);
		judge = (pc_in - p_in + 3) % 3;//判断条件
		count(judge);
		show_result(judge);
		retry = wanna_retry();
	} while (retry == 'y');
	printf("%d胜利,%d失败,%d平局\n", win, lose, same);
	return 0;
}

6:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

//猜拳游戏——三局两胜

int p_in;
int pc_in;
int judge;
char retry;
int win, lose, same;
char* gesture[] = { "剪刀","石头","布" };

void init()
{
	win = 0;
	lose = 0;
	same = 0;
	srand(time(NULL));
	printf("猜拳游戏开始!\n");
}

void readgesture()
{
	pc_in = rand() % 3;
	do
	{
		printf("\n石头剪刀布:");
		for (int i = 0; i < 3; i++)
		{
			printf("(%d)%s", i, gesture[i]);
		}
		printf(":\n");
		scanf_s("%d", &p_in);
	} while (p_in < 0 || p_in>2);
}

//更新胜利失败和平局
void count(int result)
{
	switch (result)
	{
	case 0:same++; break;
	case 1:lose++; break;
	case 2:win++; break;
	}
}

//显示判断结果
void show_result(int result)
{
	switch (result)
	{
	case 0:puts("平局"); break;
	case 1:puts("你输了"); break;
	case 2:puts("你赢了"); break;
	}
}

//确定是否再次挑战
char wanna_retry()
{
	printf("再来一次吗?(y/n):");
	scanf_s(" %c", &retry, 1);
	return retry;
}

int main()
{
	init();
	do
	{
		readgesture();
		printf("我出了%s,你出了%s。\n", gesture[pc_in], gesture[p_in]);
		judge = (pc_in - p_in + 3) % 3;//判断条件
		count(judge);
		show_result(judge);
	} while (win < 2 && lose < 2);
	printf("%d胜利,%d失败,%d平局\n", win, lose, same);
	return 0;
}

程序展示:
在这里插入图片描述


http://www.niftyadmin.cn/n/1717702.html

相关文章

C语言进阶——珠玑妙算,ctype.h的使用

由于我比较懒所以就直接写代码里了 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> #include<ctype.h>#define max 100//珠玑妙算&#xff1a; //以计算机作为出题者&#xff0c;你作为答题者 //出题者从0—9中随机…

Java基础from《Java从入门到精通》第六版第三章学习总结

Java语言基础 3.1Java主类结构 1.基本框架&#xff1a; public class java_1 {public static void main(String[] args){} }2.第一个程序 public class java_1 {public static void main(String[] args){String s1 "你好";String s2 "java";System.ou…

Java基础from《Java从入门到精通》第六版第四章学习总结

Java流程控制 1.复合语句 Java 的复合语句是以整个块区为单位的语句所以又称块语句&#xff0c;由 { 到 }结束。简而言之就是一个方法体或一个类体&#xff08;c语言中指一个函数&#xff09;。 2.if条件 语法&#xff1a; if(布尔表达式) {语句序列 }例子&#xff1a; impo…

Java基础from《Java从入门到精通》第六版第五章学习总结

Java数组 1.数组概述 数组是具有相同数据类型的一组数据的集合&#xff0c;在Java中可以将数组看作一个对象&#xff0c;虽然基本数据类型不是对象&#xff0c;但由基本数据类型组成的数组却是对象&#xff0c;在程序设计中引入数组可以更有效地管理和处理数据。 数组可以根据…

Java基础——数组的基础排序算法

5.数组排序算法 1.冒泡排序 基本思想&#xff1a; 对比相邻的元素值&#xff0c;满足条件就交换位置否则不换 其由双层循环实现 示例&#xff1a; P85 例子&#xff1a; public class java_exercise1 {public static void main(String[]args){int arr[] {12,45,99,20,5,86,…

Java基础from《Java从入门到精通》第六版第六章学习总结

类与对象 面向对象概述 面向对象是把所有预处理的问题抽象为对象&#xff0c;通过了解这些对象具有的相应属性以及展示这些对象的行为&#xff0c;来解决这些对象面临的一些实际问题。 其实际上是对现实世界中的对象进行建模操作 1.对象 现实生活中可以说一切皆对象&#xff0…

Java基础from《Java从入门到精通》第六版第七章学习总结

继承&#xff0c;多态&#xff0c;抽象类与接口 继承和多态可以使得这个程序的架构变得非常有弹性&#xff0c;同时可以减少代码的冗余性。 类的继承 继承能够使得整个程序架构具有一定的弹性&#xff0c;在程序中复用已经定义完善的类可以减少程序开发周期&#xff0c;提高软…

Java基础from《Java从入门到精通》第六版第八章学习总结

包和内部类 Java类包 在Java中定义好的每一个类通过编译器编译后会生成一个.class的文件&#xff0c;当程序规模大时很有可能会出现类名称冲突的情况&#xff08;即&#xff1a;项目中有两个同名为Project_for_Java的类&#xff09;&#xff0c;Java提供了一个管理类文件的机制…