C++ 游戏:转杯子猜球位置 3

42 篇文章 ¥9.90 ¥99.00
20 篇文章
博主发现《C++ 游戏:转杯子猜球位置 2》存在严重问题,程序未按预期运行。问题包括:杯子数量大时不转动、控制台大小不合理及输入难度限制。为解决这些问题,博主提供了新的解决方案,包括调整控制台大小和修复杯子转动逻辑。完整修复代码未直接展示,鼓励读者自行编译运行程序以了解详情。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        根据我的复制+测试,发现    转杯子猜的球位置 2   有点大问题!我觉得非常的奇怪:“????怎么回事啊 ????”

        但是这就是事实(可恶),问题:它连转都不转,,非常的离谱,我看到那 700 多的阅读,感到十分怀疑:“这些人到底有没有运行过程序啊?为什么没有一个人跟我反馈呢?太离谱了!

        于是,我觉得出一篇文章来解决这个问题,在此之前,我决定把   转杯子猜的球位置 2   的网址发一下:

C++ 游戏:转杯子猜球位置 2_小天狼星_布莱克的博客-CSDN博客BUG 2 解决方案:针对这个情况,我研发了一个新的功能,在这里先保密,如有想知道者,请自己编译程序并运行。BUG 1 解决方案:将控制台的大小进行调整,使其大小合理,不仅增加了美观性,还让 BUG 1 得以解决。BUG 2:上程序输入难度虽然超过20,但程序会自动把他设为20,就会让别人非常嚣张。BUG 2 原因:当杯子数量多时,移动距离变长,时间也会变长,导致猜位置变得更简单。BUG 1:当输入杯子个数较大时,会导致输出出现问题。变量的名字有点奇怪,因为我是乱打的,请见谅。.........https://blog.csdn.net/DUXS11/article/details/126556343?spm=1001.2014.3001.5501       好了,现在我们来对程序进行分析,错误的原因非常简单,那就是:C 一动的次数没有赋值。

极其离谱,那么,程序十分简单:

某不知名人士:(终于来了,你写那么多没用的干嘛!)

#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];
		}
	else
		for (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;
	do
		b=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);
		}
	else
		for (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=30,kl=1;
	Sleep (500); 
	cls();
	xy(0,5); cout <<"转杯子猜球:请选择杯子个数:3 ~ 10";
	xy(1,5);
	c=(in+5)*3; 
	cin >>n;
	if (n<3) n=3;
	if (n>10) n=10; 
	sudu=round(30/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 <<"恭喜你猜对了!!";
	else
		cout <<"很遗憾,正确答案是" <<d;
	Sleep(1000);
	xy(30,100); 
	return 0;
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sirius·Black

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值