一个小小的课程设计
加强版的猜数游戏
十分简单
基本句式
#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");
}