午间节目主持人.酒吧填充游戏

Noobie programer. Bar filling game

本文关键字:填充 游戏 酒吧 节目主持人      更新时间:2023-10-16

我目前正在用C++开发一款迷你游戏。我正在使用代码::块。游戏应该是这样进行的,屏幕上会显示一个酒吧。它会装满的。当用户按下空格键时,空格键将清空。这个酒吧程序是我为一个更大的基于故事的程序编写的一个小程序。所以我试着让它变得这样,如果酒吧空了,故事就朝着一个方向发展,但如果酒吧满了,故事就会朝着另一个方向前进。我的问题是,我似乎无法让酒吧填满或清空。我对编程很陌生。如有任何帮助,我们将不胜感激。我目前正在尝试制作的酒吧:

##################################################
#MMMMMMMMMMMMMMMMMMMMMMMMM                       #
##################################################

我计划在酒吧装满和清空后制作的酒吧:

##################################################
#MMMMMMMMMMMMMMMMMMMMMMMMM                       #
#MMMMMMMMMMMMMMMMMMMMMMMMM                       #
#MMMMMMMMMMMMMMMMMMMMMMMMM                       #
#MMMMMMMMMMMMMMMMMMMMMMMMM                       #
##################################################

所有的"M"字符都是清空和填充栏的字符。

以下是我迄今为止得到的代码。

#include <iostream>
#include <time.h>
void delay(unsigned int mseconds)
{
    clock_t goal = mseconds + clock();
    while (goal > clock());
}
using namespace std;
int main()
{
    char ch = 'a';
    cout << "##################################################" << endl;
    cout << "#";
    for (int j = 25; j < 50 || j > 0; j++)
    {
        while (j >=0 || j <= 50)
        {
            cin >> ch
            if (ch == ' ')
            {
                j--;
                ch = 'a';
            }
            else
            {
                cout << "M";
                delay(200);
            }
        }
    }
    cout << "#" << endl;
    return 0;
}
//Output
/*
##################################################
##
Process returned 0 (0x0)   execution time : 0.156 s
Press any key to continue.
*/

使用while (j >=0 || j <= 50)的while循环是一个无限循环。您可能想将其更改为while (j >= 0 && j <= 50),以便它在您想要的范围内。此外,你的for (int j = 25; j < 50 || j > 0; j++)转化为一个无限循环,因为j总是小于50,转化为所有负数,或者大于0,转化为全部正数。您可能希望将其更改为for (int j = 25; j < 50 && j > 0; j++)。然而,我认为你应该重新思考你试图解决这个问题的算法。祝你好运,我希望我帮了你。

 for (int j = 25; j > 50 || j < 0; j++)

您的for循环永远不会执行,因为我们看到j被初始化为25 int j = 2525 > 5025 < 0的计算结果都为false,所以它立即退出。

查看char[][]数组以显示这样的条形图可能会有所帮助。。您将首先查看char数组,然后再查看二维数组。这样做可以让你用行/列的方法来解决这个问题,而且你可以很容易地回溯(比如说,如果他们按下某个键,你想"清空栏"几个空格)

如果查看for循环,您会发现条件总是false。

那么,if (ch = ' ')条件将始终为真。您可能想要执行if (ch == ' ')来测试值,而不是分配它。

我认为你正在做的事情是不必要的复杂。试着重新思考你的算法。