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

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日

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名