加强版猜数游戏

一个小小的课程设计
加强版的猜数游戏
十分简单

基本句式

#define _CRT_SECURE_NO_WARNINGS
#define R 10    
#define X 50  
#define Y 50   
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <math.h>
int menu();
void help1();
void help2();
void introduce();
void game();
void play();
void display();
void round1();
float f(float x, float y, float z);
float h(float x, float z);
int heart();
void clear();
int rank = 0;
int main()
{
	system("color 9");
	printf("**************************\n\n");
	printf("************《课程设计》************\n\n");
	printf("**************猜数字游戏系统************\n\n");
	printf("**************XXXXX大学**************\n\n");
	printf("**************计算机1902***********\n\n");
	printf("**************Aironly*************\n\n");
	printf("**************2020.11.3*************\n\n");
	printf("***************************************\n\n");
	printf("-----------------------------------------------------------------------\n\n");
	printf("欢迎来到登陆界面\n\n");
	printf("请输入您的账号密码!(初始账号为我的学号,初始密码也为我的学号)\n\n");
	long long i=123456789;
	long long j=0;
	long long k=0;
	do {
		printf("请输入您的账号:");
		scanf("%lld", &j);
		if (i != j)
		{
			
			printf("您的账号输入错误,请重新输入!\n");
		}
		else {
			
			printf("您的账号输入正确\n");
		}
	} while (i != j);
	do {
		
		printf("请输入您的密码:");
		
		scanf("%lld", &k);
		if (i != k)
		{
			
			printf("密码输入错误,请重新输入!\n");
		}
		else {
			
			printf("您输入的密码正确,进入主菜单\n\n");
		}
		system("pause>nul&&cls");
	} while (i != k);
	while (1) {
		int choice;
		choice = menu();
		switch (choice)
		{
		case 1: introduce(); break;
		case 2: help1(); break;
		case 3: help2(); break;
		case 4: game(); break;
		case 5:play(); break;
		case 6:clear(); break;
		case 7: return 0; break;
		
		case 0:display(); break;
		
		}
	}
}
	int menu()
	{
		system("color B");
		int x;
		printf("\n ********欢迎您使用猜数字游戏系统*******\n");
		printf("---------------------------------------\n");
		printf("*************1.游戏介绍**************\n");
		printf("*************2.简单模式帮助**************\n");
		printf("*************3.困难模式帮助**********\n");
		printf("*************4.开始简单模式(1-100)**************\n");
		printf("*************5.开始困难模式(四位数)***********\n");
		printf("*************6.积分清零**************\n");
		printf("*************7.结束游戏**************\n");
		printf("*************0.显示当前积分**********\n");
		printf("-------------------------------------\n");
		printf("PS:积分不同的时候选择显示积分有惊喜哦\n");
		printf("请输入您的选项 温馨提示:数字0-7\n");
		while (1)
		{
			scanf("%d", &x);
			if (x >= 0 && x <= 7)
				break;
			else
				printf("您输入的数字不正确,请重新输入!温馨提示0-7\n");
		}
		return x;
	}
	void introduce()
	{
		system("color D");
		printf("\n----------此游戏的设计者是计算机学院1902Aironly---------\n");
		printf("----------此游戏是人机互动的C语言入门游戏----------\n");
		printf("----------此游戏的名字是猜数字----------\n");
		printf("----------您首先要登陆这个系统----------\n");
		printf("----------然后进入菜单----------\n");
		printf("----------可以选择简单或者困难模式开始游戏----------\n");
		printf("----------在电脑提示的范围下进行猜数并且用键盘输入到电脑当中----------\n");
		printf("----------电脑会根据您给出的数字和随机数字进行比较并给出提示----------\n");
		printf("----------如果您输入的数字和电脑的数字不一样会需要重新输入----------\n");
		printf("----------简单模式电脑会记下来您猜的次数并且告诉您----------\n");
		printf("----------困难模式下可是很恐怖的哦---------\n");
		printf("----------如果您在简单模式答对的话会根据次数大小加分\n");
		printf("----------困难模式会加更多的分\n");
		printf("----------祝您游戏愉快-----------\n");
		system("pause>nul&&cls");
	}
	void help1()
	{
		system("color C");
		printf("----------欢迎收看简单模式说明书!\n");
		printf("----------游戏规则:电脑生成一个1-100的随机数字,电脑会记录您的数字并且给出您的水平\n");
		printf("----------游戏时间:无限制\n");
		printf("----------游戏目的:纯属娱乐\n");
		printf("----------游戏建议:二分法\n");
		printf("----------希望您游戏愉快!\n");
		system("pause>nul&&cls");
	}
	void help2()
	{
		system("color 4");
			printf("----------欢迎收看困难模式说明书!\n");
			printf("----------这个规则比简单模式要复杂一些!\n");
			printf("----------由计算机随机产生一个各位不一样的数字\n");
			printf("----------您来猜一猜\n");
			printf("----------计算机会根据您的猜测给出提示:XAYB\n");
			printf("----------A表示有几位数字猜的位置和数字都正确\n");
			printf("----------B表示有几位数字猜对了,但是位置不正确\n");
			printf("----------您可以自己规定自己猜几次哦\n");
			printf("----------如果猜对的话,会恭喜您回答正确\n");
			printf("----------如果猜的次数超过您自己的规定次数,就会给出结束提示\n");
			printf("----------正确的答案由计算机公布\n");
			printf("----------在困难模式不要灰心 祝您好运\n");
			system("pause>nul&&cls");
	}
	
	void game()
	{
		system("color E");
		srand(time(0));
		int number = rand() % 100 + 1;
		int count = 0;
		int a = 0;
		do {
			printf("我准备了一个1-100的数字\n请你猜一猜\n");
			scanf("%d", &a);
			if (a > number) {
				printf("你猜的数字太大啦,请重新输入\n");
				count++;
			}
			else if (a < number) {
				printf("你猜的数字太小啦,请重新输入\n");
				count++;
			}

		} while (a != number);
		if (count == 0) {
			printf("你用了%d次就猜到了答案\n", count+1);
			printf("您和电脑真是心有灵犀!\n");
			rank = rank + 5;
			system("pause>nul&&cls");
		}
		else if (count >=  2 && count <=10) {
			printf("你用了%d次就猜到了答案\n", count+1);
			printf("您的猜数字水平达到了高级水平!\n");
			rank = rank + 3;
			system("pause>nul&&cls");
			
		}
		else if (count > 10 && count <=20) {
			printf("你用了%d次就猜到了答案\n", count+1);
			printf("您的猜数字水平达到了中级水平!\n");
			system("pause>nul&&cls");
			rank = rank + 2;
		}
		else if (count > 20 && count <=50) {
			printf("你用了%d次就猜到了答案\n", count+1);
			printf("您的猜数字水平达到了初级水平!\n");
			rank = rank + 1;
			system("pause>nul&&cls");
		}
		else if (count > 50 && count <=100) {
			printf("你用了%d次就猜到了答案\n", count+1);
			printf("您也太能蒙了\n");
			system("pause>nul&&cls");
		}
	
	}
	void play()
	{

		int num[4], guess[4];

		int i;
		int j;
		int A;
		int B;
        int maxTimes;
        int times = 0;
       printf("请输入你打算猜到数字的次数(1-10):");
       scanf("%d", &maxTimes);
	   if (maxTimes > 10 || maxTimes <= 0)
		   printf("亲亲,这边建议您选择1-10之间的数呢,由于您的违规操作,这次就告诉您答案了哦\n");
	   else
	   printf("开始猜吧!一行一个数字\n");
        srand(time(NULL));
       num[0] = rand() % 10;
      for (i = 1; i < 4; i++)

		{
		  do
         {
         num[i] = rand() % 10;
          for (j = 0; j < i; j++)
        {
			  if (num[i] == num[j])
              break;
}
if (j == i)break;
      } while (1);
}
do
{
        A = 0;
        B = 0;
        times++;
if (times > maxTimes)
{
         printf("对不起,您没有猜到这个数字!\n");
         printf("这个数字是%d%d%d%d.\n", num[0], num[1], num[2], num[3]);
		 system("pause>nul&&cls");
          break;
}
         for (i = 0; i < 4; i++)
{
    scanf("%d", &guess[i]);

			}
       for (i = 0; i < 4; i++)
{
      for (j = 0; j < 4; j++)

		{
          if (guess[j] == num[i])
		  {
			  if (j == i)
                A++;
			    else
                B++;
               }
             }

			}
        printf("%d:%dA%dB\n", times, A, B);
        if (A == 4)
{
         printf("恭喜你猜到啦!\ n");
		 rank = rank + 10;
		 system("pause>nul&&cls");
           break;

			}

		} while (1);
}
	void display()
	{
		printf("您当前的积分为%d\n", rank);
		if (rank > 10&&rank<=20) {
			heart();
		}
		if (rank > 20 ) {
			printf("王老师觉得你是最棒的");
		}
		if (rank == 0) {
			 round1();
			
			}
		if (rank > 0 && rank <= 5) {
			printf("您的积分不足!请继续加油!\n");
		}
		if (rank > 5 && rank <=10) {
			int i, j, k; 

			for (i = 1; i <= 4; i++) 
			{
				k = 1; 
				for (j = 1; j <= i + 3; j++) 
				{
					if (k <= 4 - i)
					{
						printf(" ");
						k++;
					}
					else  printf("*");
				}

				printf("\n");

			}

			for (i = 1; i <= 3; i++) 
			{
				k = 1; 
				for (j = 1; j <= 7 - i; j++)
				{
					if (k <= i)
					{
						printf(" ");
						k++;
					}
					else
						printf("*");
				}
				printf("\n");
			}
		}
		
		system("pause>nul&&cls");
  }
	float f(float x, float y, float z) {
		float a = x * x + 9.0f / 4.0f * y * y + z * z - 1;
		return a * a * a - x * x * z * z * z - 9.0f / 80.0f * y * y * z * z * z;
	}

	float h(float x, float z) {
		for (float y = 1.0f; y >= 0.0f; y -= 0.001f)
			if (f(x, y, z) <= 0.0f)
				return y;
		return 0.0f;
	}

int heart() {
	system("color 4");
		for (float z = 1.5f; z > -1.5f; z -= 0.05f) {
			for (float x = -1.5f; x < 1.5f; x += 0.025f) {
				float v = f(x, 0.0f, z);
				if (v <= 0.0f) {
					float y0 = h(x, z);
					float ny = 0.01f;
					float nx = h(x + ny, z) - y0;
					float nz = h(x, z + ny) - y0;
					float nd = 1.0f / sqrtf(nx * nx + ny * ny + nz * nz);
					float d = (nx + ny - nz) * nd * 0.5f + 0.5f;
					putchar(".:-=+*#%@"[(int)(d * 5.0f)]);
				}
				else
					putchar(' ');
			}
			putchar('\n');
		}
	}
void round1(){
	int x, y;
	int m;
	int i;

	for (i = Y - R; i >= 1; i--)
	{
		printf("\n");
	}
	for (y = R; y >= -R; y--)
	{
		m = 2 * sqrt(R * R - y * y);    
		for (x = 1; x < X + R - m; x++)        
		{
			printf(" ");
		}
		printf("*");

		for (; x < X + R + m; x++)          
		{
			printf(" ");
		}
		printf("*\n");
	}

}
void clear() {
	rank = 0;
	printf("您的当前积分已清零\n\n");
	system("pause>nul&&cls");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值