[C++]闲着无聊瞎几把乱写的石头剪刀布

起因

就是单纯没事干然后和朋友打算写一个石头剪刀布程序,等吃饭的时候可以来一把,谁输了就请客吃饭(主要是因为手头上没什么钱了想嫖饭吃!)
初学者们可以看看
学习学习

普遍的实现

这里其实也就是单纯和电脑生成的随机数判断可以用rand()/srand()

#include<iostream>
#include<ctime>
using namespace std;
int main()
{
	int Diannao=0;
	int people=0;
	srand((unsigned)time(NULL));
	shuiji=rand()%3;
	while(1)
	{
		cout<<"请输入0、石头,1、剪刀,2、布"<<endl;
		cin>>people;
		if(people==Diannao)
		{
			cout<<"平局"<<endl;
		}
		else if(people==0&&Diannao==1)
		{
			cout<<"people赢,Diannao输"<<endl;
		}
		else if(people==0&&Diannao=2)
		{
			cout<<"people输,Diannao赢"<<endl;
		}
		else if(people==1&&Diannao=0)
		{
			cout<<"people输,Diannao赢"<<endl;
		}
		else if(people==1&&Diannao=2)
		{
			cout<<"people赢,Diannao输"<<endl;
		}
		else if(people==2&&Diannao=0)
		{
			cout<<"people赢,Diannao输"<<endl;
		}
		else if(people==2&&Diannao=1)
		{
			cout<<"people输,Diannao赢"<<endl;
		}
		else
		{
			cout<<"非法参数"<<endl;
		}
	}
	system("pause");
	return 0;
}

上面这种方法呢可以实现,但是呢,距离吃饭的时间实在是太久了,这么快写完太无聊了,我们就不用rand()了,自己乱写一个rand()

自己的实现

#include <windows.h> 
#include <stdio.h>
#include <iostream>
using namespace std;
class person
{

public:
	int ge = 0;
	int shi = 0;
	int bai = 0;
	int qian = 0;
};
int main(void)
{
	int lian = 0;
	int yue = 0;
	int ri = 0;
	int zhong = 0;
	int feng = 0;
	int miao = 0;
	int hao = 0;
	int xing = 0;

	int he = 0;

	int a = 0;
	int b = 0;

	person Year;
	person Moth;
	person Day;
	person Hour;
	person Minute;
	person Second;
	person Milliseconds;
	person DayOfWeek;
	while (1) {
		SYSTEMTIME sys;
		GetLocalTime(&sys);
		(int)sys.wYear + (int)sys.wMonth + (int)sys.wDay + (int)sys.wHour + (int)sys.wMinute + (int)sys.wSecond + (int)sys.wMilliseconds;
		Year.ge = (int)sys.wYear % 10;
		Year.shi = ((int)sys.wYear / 10) % 10;
		Year.bai = ((int)sys.wYear / 100) % 10;
		Year.qian = (int)sys.wYear / 1000;

		Moth.ge = (int)sys.wMonth % 10;
		Moth.shi = ((int)sys.wMonth / 10) % 10;

		Day.ge = (int)sys.wDay % 10;
		Day.shi = ((int)sys.wDay / 10) % 10;

		Hour.ge = (int)sys.wHour % 10;
		Hour.shi = ((int)sys.wHour / 10) % 10;

		Minute.ge = (int)sys.wMinute % 10;
		Minute.shi = ((int)sys.wMinute / 10) % 10;

		Second.ge = (int)sys.wSecond % 10;
		Second.shi = ((int)sys.wSecond / 10) % 10;

		Milliseconds.ge = (int)sys.wMilliseconds % 10;
		Milliseconds.shi = ((int)sys.wMilliseconds) % 10;
		Milliseconds.bai = ((int)sys.wMilliseconds / 100) % 10;


		DayOfWeek.ge = (int)sys.wDayOfWeek;

		lian = (Year.ge) + (Year.shi) + (Year.bai) + (Year.qian);
		yue = (Moth.ge) + (Moth.shi);
		ri = (Day.ge) + (Day.shi);
		zhong = (Hour.ge) + (Hour.shi);
		feng = (Minute.ge) + (Minute.shi);
		miao = (Second.ge) + (Second.shi);
		hao = (Milliseconds.ge) + (Milliseconds.shi) + (Milliseconds.bai);
		xing = (DayOfWeek.ge);

		he = lian + yue + ri + zhong + feng + miao + hao + xing;

		do
		{
			if (he > 9)
				he = he / 2;
		} while (he > 9);

		switch (he)
		{
		case 1:
			b = 1;//石头
			break;
		case 2:
			b = 2;//剪刀
			break;
		case 3:
			b = 3;//布
			break;
		case 4:
			b = 1;//
			break;
		case 5:
			b = 2;//
			break;
		case 6:
			b = 3;//
			break;
		case 7:
			b = 1;//
			break;
		case 8:
			b = 2;//
			break;
		case 9:
			b = 3;//
			break;
		}
		cout << "1是石头,2是剪刀,3是布\n";

		cin >> a;

		if (a == b)
		{
			cout << b << endl;
			cout << "平局\n";
		}
		else if (a == 1 && b == 2)
		{
			cout << b << endl;
			cout << "你赢了\n";
		}
		else if (a == 1 && b == 3)
		{
			cout << b << endl;
			cout << "电脑赢\n";
		}

		else if (a == 2 && b == 1)
		{
			cout << b << endl;
			cout << "电脑赢\n";
		}
		else if (a == 2 && b == 3)
		{
			cout << b << endl;
			cout << "你赢了\n";
		}
		else if (a == 3 && b == 1)
		{
			cout << b << endl;
			cout << "你赢了\n";
		}
		else if (a == 3 && b == 2)
		{
			cout << b << endl;
			cout << "电脑赢\n";
		}
		else
		{
			cout << "非法参数" << endl;
			break;
		}
	}
	return 0;
}

实现的关键步骤(真正无聊的地方)


SYSTEMTIME sys;
		GetLocalTime(&sys);
		(int)sys.wYear + (int)sys.wMonth + (int)sys.wDay + (int)sys.wHour + (int)sys.wMinute + (int)sys.wSecond + (int)sys.wMilliseconds;
		Year.ge = (int)sys.wYear % 10;
		Year.shi = ((int)sys.wYear / 10) % 10;
		Year.bai = ((int)sys.wYear / 100) % 10;
		Year.qian = (int)sys.wYear / 1000;

		Moth.ge = (int)sys.wMonth % 10;
		Moth.shi = ((int)sys.wMonth / 10) % 10;

		Day.ge = (int)sys.wDay % 10;
		Day.shi = ((int)sys.wDay / 10) % 10;

		Hour.ge = (int)sys.wHour % 10;
		Hour.shi = ((int)sys.wHour / 10) % 10;

		Minute.ge = (int)sys.wMinute % 10;
		Minute.shi = ((int)sys.wMinute / 10) % 10;

		Second.ge = (int)sys.wSecond % 10;
		Second.shi = ((int)sys.wSecond / 10) % 10;

		Milliseconds.ge = (int)sys.wMilliseconds % 10;
		Milliseconds.shi = ((int)sys.wMilliseconds) % 10;
		Milliseconds.bai = ((int)sys.wMilliseconds / 100) % 10;


		DayOfWeek.ge = (int)sys.wDayOfWeek;

		lian = (Year.ge) + (Year.shi) + (Year.bai) + (Year.qian);
		yue = (Moth.ge) + (Moth.shi);
		ri = (Day.ge) + (Day.shi);
		zhong = (Hour.ge) + (Hour.shi);
		feng = (Minute.ge) + (Minute.shi);
		miao = (Second.ge) + (Second.shi);
		hao = (Milliseconds.ge) + (Milliseconds.shi) + (Milliseconds.bai);
		xing = (DayOfWeek.ge);

		he = lian + yue + ri + zhong + feng + miao + hao + xing;

这里就不做详细讲解了(主要是怕太多余了被大佬喷Ծ‸Ծ)
我知道很无聊很多余
大佬们轻点喷
在这里插入图片描述

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
河北工业大学计算机软件技术基础(VC) 课程设计任务书 题目:人机对战——石头剪刀布 目的与要求 目的 通过编写该程序,培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计,并对Windows平台下的控制台进行深入的了解。 基本要求 要求用C++语言编程,在Visual C++环境下调试完成; 要求划分功能模块,各个功能分别使用函数来完成; 源代码程序要求必要的注释。 设计方法和基本原理 课题功能描述 编写一个人机进行石头剪刀布的小游戏。要求能够进行完一轮猜拳后,显示统计信息。每一轮游戏的过程是首先由玩家选择要出的拳,然后计算机选择出拳,输出本轮游戏的胜负情况,然后输出统计信息(玩家胜利次数、计算机胜利次数和平局次数),然后每轮猜拳结束后,询问玩家是否要继续游戏。游戏界面如下: 主要技术问题的描述 随机函数 随机函数名为rand(),使用必须包含头文件stdlib.h。 创新要求 在基本要求达到后,进行创新设计: 程序要保证计算机的胜利次数至少是玩家胜利次数的1.5倍。 课程设计的考核方式及评分方法 考核方式 (1) 学生要提交书面课程设计报告(A4纸打印);并将设计报告的电子文档、.cpp源文件和.h头文件放到一个文件夹里上传到所对应班级的学生名称相应文件夹中。 (2) 课程设计结束,在机房当场验收。教师提供测试数据,由学生运行所设计的系统,检查运行结果是否正确,并回答教师提出的有关问题。 评分方法 根据出勤率、课程设计期间纪律、课程设计运行结果、课程设计报告及答辩情况综合评分。 书写设计报告的要求(详细内容见“设计报告模板”) 课程设计的有关文档“设计报告模板”和“课程设计要求”请在下载任务书处下载。    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值