根据试验,发现C++ 转杯子猜球位置 游戏有BUG。


BUG 1:当输入杯子个数较大时,会导致输出出现问题。

BUG 1 原因:窗口太小,输出太多时会导致换行输出。

BUG 1 解决方案:将控制台的大小进行调整,使其大小合理,不仅增加了美观性,还让 BUG 1 得以解决


BUG 2:上程序输入难度虽然超过20,但程序会自动把他设为20,就会让别人非常嚣张。

BUG 2 原因:当杯子数量多时,移动距离变长,时间也会变长,导致猜位置变得更简单。

BUG 2 解决方案:针对这个情况,我研发了一个新的功能,在这里先保密,如有想知道者,请自己编译程序并运行。



下面是 转杯子猜球位置 2 完整代码

#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
char a[50][50]={"------","|    |","|    |","|    |","------"};
int c,n=10,kl,sudu;
bool k[200]={0,1,0,0};
using namespace std;
void color(int x)
{switch(x){case  1:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED  );break;case  2:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE );break;case  3:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN);break;case  4:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED  |FOREGROUND_BLUE );break;case  5:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED  |FOREGROUND_GREEN);break;case  6:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE |FOREGROUND_GREEN);break;case  7:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN|FOREGROUND_BLUE |FOREGROUND_RED);break;default:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN|FOREGROUND_BLUE |FOREGROUND_RED);break;}
}
void cls()
{system ("cls");
}
void xy(int y,int x)
{COORD  coord;    coord.X=x;         coord.Y=y;HANDLE a=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(a,coord);
}
void out(int x,int y,bool t)
{if (kl)color(rand()%7+1);if (t)for (int i=0;i<5;i++,x++){xy(x,y);for (int j=0;j<6;j++)cout <<a[i][j];}elsefor (int i=0;i<5;i++,x++){xy(x,y);for (int j=0;j<6;j++)cout <<" ";}
}
void yuan()
{for (int i=1;i<=n;i++)out (8,12*i-3,1);
}
void dong()
{int a,b,i,t;a=rand()%n+1;dob=rand()%n+1;while (b==a);t=abs(12*a-12*b);swap (k[a],k[b]);out (8,12*a-3,0);out (8,12*b-3,0);for (i=7;i>=1;i--){out (i,12*a-3,1);out (16-i,12*b-3,1);Sleep (sudu);out (i,12*a-3,0);out (16-i,12*b-3,0);}if (a>b)for (i=1;i<=t;i++){out (1,a*12-3-i,1);out (15,b*12-3+i,1);Sleep (sudu);out (1,a*12-3-i,0);out (15,b*12-3+i,0);}elsefor (i=1;i<=t;i++){out (15,b*12-3-i,1);out (1,a*12-3+i,1);Sleep (sudu);out (15,b*12-3-i,0);out (1,a*12-3+i,0);}for (i=1;i<=7;i++){out (16-i,12*a-3,1);out (i,12*b-3,1);Sleep (sudu);out (16-i,12*a-3,0);out (i,12*b-3,0);}yuan();
}
int main()
{system("mode con cols=130 lines=28");srand(int (0));int in,d;xy(0,5); cout <<"转杯子猜球:请选择难度星级:1 ~ 20  ( 1 最简单 ,20 最难,难度超过20会有惊喜呦,嘿嘿嘿)";xy(1,5); cin >>in;if (in<1) in=1;if (in>20) in=20,kl=1; Sleep (500); cls();xy(0,5); cout <<"转杯子猜球:请选择杯子个数:3 ~ 10";xy(1,5);cin >>n;if (n<3) n=3;if (n>10) n=10; sudu=round(20/n)-round(in/n);cls();yuan();for (int i=1;i<=7;i++){xy(i,11); cout <<"○";Sleep (100);xy(i,11); cout <<"  ";}for (int i=1;i<=c;i++)dong();xy(20,20);cout <<"转完了,请问球在哪个杯子里呢?";xy(22,20);cin >>in;for (int i=1;i<=n;i++)if (k[i]){d=i;break;}xy(24,20);if (in==d)cout <<"恭喜你猜对了!!";elsecout <<"很遗憾,正确答案是" <<d;Sleep(1000);xy(30,100); return 0;
}

变量的名字有点奇怪,因为我是乱打的,请见谅。


主要思路:

做一大堆自定义函数,然后再将它们结合起来。


1、xy 函数:改变输出坐标,详见:C++ 如何改变输入输出光标的位置

2、yuan 函数:将杯子设为初始状态

3、cls 函数:等于 system ("cls") ;

4、color 函数:此函数可用于特殊情况,解决 BUG 2。

5、dong 函数:最重要的函数,用来制造杯子移动的动画效果。


终于打完了!

C++ 游戏:转杯子猜球位置 2相关推荐

  1. 2020牛客NOIP赛前集训营-提高组(第一场) T2 牛牛的猜球游戏

    题目链接: 牛客原站 通过记录: 题目链接2:T277380 牛牛的猜球游戏(被我们搬到洛谷力): 洛谷搬运 题目描述   有十个数 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ...

  2. 茶杯:N个杯子排成一排,第X个杯子藏有球,交换任意两个杯子K次后,找出藏球杯子位置。

    N个杯子排成一排,第X个杯子藏有球,交换任意两个杯子K次后,找出藏球杯子位置. (本文获得CSDN质量评分[92]) [学习的细节是欢悦的历程] Python 官网:https://www.pytho ...

  3. java 文曲星猜数字,「3D跨度表」文曲星中的猜数字游戏,要猜一个四位数,有什么通用公式?...

    大家好,本文问题是「3D跨度表」文曲星中的猜数字游戏,要猜一个四位数,有什么通用公式?,由专家五湖彩解答.下面是具体回答内容: 算法:主来要是复杂的逻辑判断.基自本的想法是先在六bai步里判断出是哪d ...

  4. 2019xupt-acm校赛 题解 ( F.猜球球 ) by出题组tongtong

    重现赛链接 2019 ACM ICPC Xi'an University of Posts & Telecommunications School Contest 前面的话 有幸参与2019X ...

  5. 问题 F: 猜球球 XUPT2019 哈夫曼树

    题目链接:http://icpc.upc.edu.cn/problem.php?cid=1777&pid=5 题目描述 六一到了,为了庆祝这个节日,好多商家都推出了很多好玩的小游戏.Tongt ...

  6. 大班体育游戏电子计算机教案,幼儿园大班体育游戏教案《夹球走走走》

    幼儿园大班体育游戏教案<夹球走走走> 作为一名教学工作者,通常需要用到教案来辅助教学,编写教案助于积累教学经验,不断提高教学质量.优秀的教案都具备一些什么特点呢?以下是小编整理的幼儿园大班 ...

  7. python猜数游戏流程_Python 猜数字游戏

    游戏内容:猜数字游戏 游戏过程描述 程序运行起来,随机在某个范围内选择一个整数. 提示用户输入数字,也就是猜程序随即选的那个数字. 程序将用户输入的数字与自己选定的对比,一样则用户完成游戏,否则继续猜 ...

  8. 游戏评论之——戴森球计划

    游戏评论之--戴森球计划 前段时间,应该是戴森球计划刚出那一两个月时,B站上到处都在直播戴森球计划.戴森球这个词对理科生来说有天然的吸引力,于是尝试性的看了几分钟就关闭了了直播.我找游戏玩时有个特点, ...

  9. 大球吞小球html5游戏在线玩,大球吃小球大作战

    大球吃小球大作战是以大鱼吃小鱼这个定论做的一款休闲类游戏,游戏玩法如题,尽量多的吃掉比你小的,不要被比你大的吃掉了哟. 官方介绍 大球吃小球大作战是一款酷萌的休闲游戏,玩家在游戏中就要大球吃小球,努力 ...

最新文章

  1. SparkStreaming靠什么征服了字节跳动?
  2. 【数据挖掘】中文期刊点评
  3. spring事务管理一:关于事务管理的接口
  4. 递归调用cl_crm_oi_docx_transform_rt=process_node_cc
  5. python分句_Python循环中的分句,继续和其他子句
  6. RouterOS 5.22固定公网IP共享上网设置
  7. php模糊搜索 变量,自定义搜索seo变量{param}字符串
  8. Samba配置文件常用参数详解
  9. 关于《ERP原理》的读书笔记和思考(二)_ERP原理初探
  10. Unraid启动后需要设置和注意的事项
  11. 海康摄像头实时显示与字符叠加详解
  12. xp系统sc服务器,SC怎么封装xp系统
  13. Facebook更新PyTorch 1.1,深度学习CPU抢GPU饭碗?
  14. 走近月球,自己做一幅月球地图
  15. 手机里面的图片删掉了怎么找回来的超全面解决方法
  16. 我的世界java如何加光影_《我的世界》中国版光影添加教程 国服怎么添加光影?...
  17. 【计算机毕业设计】21.二手拍卖系统maven源码
  18. 12星座无法违背的定律
  19. 【Win键组合键在vista中用法】
  20. pycharm控制台项目文件名中文字体乱码显示口口口问题解决

热门文章

  1. XTU 1219 ABK
  2. 点击微信网页的a标签直接跳转到淘宝APP打开怎么实现的?
  3. 18.(leaflet之家)leaflet自定义地图样式地图(插件实现)
  4. PTA L1-060:心理阴影面积 (python)
  5. 计算机重启的两种方法,Win10系统自动重启的两种关闭方法
  6. vs自带工具进行代码数字签名方法
  7. 宝宝洗澡步骤详细步骤【配图】
  8. 鸿蒙系统手机好不好,华为鸿蒙系统是什么情况 鸿蒙系统好用吗[多图]
  9. C#人民币金额大小写转换
  10. 华硕灵耀X 14 2022和联想YOGA Pro14s的区别 选哪个好