m0_53438027 2021-08-04 22:12 采纳率: 100%
浏览 89
已结题

easyx图形界面出错

{#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include <graphics.h>
int menu();//主菜单
void user();//用户猜数
void computer();//计算机猜
/7oid r();//重新开始
int quit();//退出游戏
int count=0,guess;
int main()
{
int a;
loop:for(;;)
{
srand(time(NULL));//时间种子以改变重新开始时guess的值
guess=rand()%100+1;//产生随机数
a=menu();
switch(a)//调取主菜单选择操作
{
case 1:user();goto loop;break;
case 2:computer();goto loop;break;
case 3:quit();
}
if(a == -1)break;
else printf("\n");
return 0;
}
}
int menu()//主菜单
{
MOUSEMSG m;
char a;
initgraph(800,600);
setbkcolor(WHITE);
cleardevice();
setfillcolor(LIGHTBLUE);
fillrectangle(300,10,500,30);
fillrectangle(300,50,500,70);
fillrectangle(300,90,500,110);
settextstyle(15,0,"楷体");//设置文字格式
setbkmode(TRANSPARENT);// 去掉文字背景
outtextxy(370,15,"用户猜数");
outtextxy(370,55,"计算机猜数");
outtextxy(370,95,"退出游戏");
settextcolor(BLACK);
settextstyle(45,0,"楷体");
outtextxy(120,530,"猜数游戏");
printf("1.用户猜数\n");
printf("2.计算机猜数\n");
printf("3.退出游戏\n");
for(;;)
{
m = GetMouseMsg();
if(m.x>=300 && m.x<= 500 && m.y >=10&& m.y<=30)
{
setlinecolor(RED);
rectangle(295,5,505,35);
//如果点击了添加
if(m.uMsg==WM_LBUTTONDOWN)
{user();}
}
else if(m.x>=300 && m.x<= 500 && m.y >=50&& m.y<=70)
{
setlinecolor(RED);
rectangle(295,45,505,75);
//如果点击了删除
if(m.uMsg==WM_LBUTTONDOWN)
{computer();}
}
else if(m.x>=300 && m.x<= 500 && m.y >=90&& m.y<=110)
{
setlinecolor(RED);
rectangle(295,85,505,115);
//点击了查询
if(m.uMsg==WM_LBUTTONDOWN)
{quit();}
scanf("%d",&a);
if(1<=a&&a<=3)break;
else printf("输入有误!请重新输入...\n");
}
printf("\n\n");
return a;
}
void user()//用户猜数
{
int num;
printf("让我们开始游戏吧!\n");
printf("我已经想好了一个1100的数!\n");
printf("请输入一个数字:");
while(num!=guess)
{
scanf("%d",&num);
count++;//猜的次数
if(num<guess)
{
printf("低了\n");
printf("请再次输入:");
}
else
{
if(num>guess)
{
printf("高了\n");
printf("请再次输入:");
}
else
{printf("太棒啦,猜对了!你一共猜了%d次\n",count);}
}
}
}
void computer()
{
int max=100;
int min=0;//二分法首先定义一个最大最小值
int c;//定义整形常量C,通过给c赋值,来执行if条件语句,判断高低
printf("让我们开始游戏吧!\n");
printf("请你在心里默想一个1
100的数。\n");
while(c!=1)
{
printf("我猜你心里想的是%d\n",guess);
printf("我猜对(1)了吗?是高(0)了还是低(2)了:");
scanf("%d",&c);
count++;
if(c>1)
{
min=guess;//根据情况每次小循环改变min max的值
guess=int((min+max)/2);
}
else if(c<1)
{
max=guess;
guess=int((min+max)/2);
}
else{printf("哈哈,我猜对啦!我只猜了%d次就猜对了!\n",count);}
}
}
int quit()
{
printf("按任意键可退出游戏...");
return 0;
}
/void r()
{
char r;
printf("按任意键返回主菜单......\n");
getchar();
}
/
img

  • 写回答

1条回答 默认 最新

  • 关注

    请问出什么问题了呢?把情况描述一下,或者说明一下那部分代码有bug.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月12日
  • 已采纳回答 8月4日
  • 修改了问题 8月4日
  • 创建了问题 8月4日

悬赏问题

  • ¥50 有偿求qftp工具。能连接,下载文件,发送代码,windows环境,最好qt6 要qt creator写的
  • ¥70 刚刚看到一个人的网站居然是通过cname访问的
  • ¥15 Attributeerror:super object has no attribute '__sklearn_tags__'_'
  • ¥15 逆置单链表输出不完整
  • ¥15 宇视vms-B200-A16@R启动不了,如下图所示,在软件工具搜不到,如何解决?(操作系统-linux)
  • ¥500 寻找一名电子工程师完成pcb主板设计(拒绝AI生成式答案)
  • ¥15 关于#mysql#的问题:UNION ALL(相关搜索:sql语句)
  • ¥15 matlab二位可视化能否针对不同数值范围分开分级?
  • ¥15 已经创建了模拟器但是不能用来运行app 怎么办😭自己搞两天了
  • ¥15 关于#极限编程#的问题,请各位专家解答!