解决  带循环的测试代码不起作用。

状态
不接受进一步答复。

波兰斯基箭

新成员
已加入
2019年12月1日
留言内容
3
编程经验
Beginner
嗨,我在下面编写了该代码,并将其构建并编译为控制台程序。
这是我在控制台中进行策略游戏的测试代码。在这里,我必须通过输入X和Y坐标来选择区域。 Areas是int变量,可以表示带有典当数(1-25)的空白区域(0)和广告区域。

应该如何运作?
当我通过键入坐标选择area [x] [y] int时,程序检查就是该面积值。如果为空(0),程序将给出错误信息并重复问题。如果值是1到25,请对所选区域周围的空白区域进行程序检查,以便我选择一种移动方式。

实际如何运作?
当我选择area [x] [y]时,无论我选择空白区域还是1-25,程序都会给我有关错误的信息消息。

感谢所有帮助我的人。  :)

代码如下:
C#:
#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <time.h>
#include <stdio.h>
#include <iomanip>
#include <conio.h>

using namespace std;

int area[15][15];
int armour[15][15];
int damage[15][15];
int soldier[5];
int vehicle[5];
int tank[5];
int cannon[5];
int rocket[5];
int counter, i, x, y;
bool up;
bool down;
bool l;
bool r;
bool lup;
bool rup;
bool ldown;
bool rdown;

int main()
{
    for (counter = 0; counter <= 4; counter += 1)
    {
        soldier[counter] = counter + 1;
        vehicle[counter] = counter + 6;
        tank[counter] = counter + 11;
        cannon[counter] = counter + 16;
        rocket[counter] = counter + 21;
    }

    for (x = 0; x <= 14; x += 1)
    {
        area[x][13] = 1;
    }

    for (x = 0; x <= 2; x += 1)
    {
        area[x][14] = 6;
    }

    for (x = 3; x <= 4; x += 1)
    {
        area[x][14] = 11;
    }

    for (x = 5; x <= 6; x += 1)
    {
        area[x][14] = 16;
    }

    area[7][14] = 21;

    for (x = 8; x <= 9; x += 1)
    {
        area[x][14] = 16;
    }

    for (x = 10; x <= 11; x += 1)
    {
        area[x][14] = 11;
    }

    for (x = 12; x <= 14; x += 1)
    {
        area[x][14] = 6;
    }

    for (y = 0; y <= 14; y += 1)
    {
        if (y < 10)
        {
            cout << "| Y" << y << "  |";
        }
        else
        {
            cout << "| Y" << y << " |";
        }
        for (x = 0; x <= 14; x += 1)
        {
            if (area[x][y] < 10)
            {
                cout << "| " << area[x][y] << "  |";
            }
            else
            {
                cout << "| " << area[x][y] << " |";
            }
        }
        cout << endl;
    }
    cout << endl << "       ";
    for (x = 0; x <= 14; x += 1)
    {
        if (x < 10)
        {
            cout << "| X" << x << " |";
        }
        else
        {
            cout << "| X" << x << "|";
        }
    }
    cout << endl << endl;

    for (y = 0; y <= 14; y += 1)
    {
        for (x = 0; x <= 14; x += 1)
        {
            if (area[x][y] = 0)
            {
                armour[x][y] = 0;
                damage[x][y] = 0;
            }
            else if (area[x][y] >= 1 && area[x][y] <= 5)
            {
                armour[x][y] = area[x][y];
                damage[x][y] = area[x][y];
            }
            else if (area[x][y] >= 6 && area[x][y] <= 10)
            {
                armour[x][y] = (area[x][y] - 6) * 2;
                damage[x][y] = (area[x][y] - 6) * 2;
            }
            else if (area[x][y] >= 11 && area[x][y] <= 15)
            {
                armour[x][y] = (area[x][y] - 11) * 3;
                damage[x][y] = (area[x][y] - 11) * 3;
            }
            else if (area[x][y] >= 16 && area[x][y] <= 20)
            {
                armour[x][y] = (area[x][y] - 16) * 4;
                damage[x][y] = (area[x][y] - 16) * 4;
            }
            else if (area[x][y] >= 21 && area[x][y] <= 25)
            {
                armour[x][y] = (area[x][y] - 21) * 5;
                damage[x][y] = (area[x][y] - 21) * 5;
            }
        }
    }

    cout << "Choose area (X): ";
    cin >> x;
    cout << endl;
    cout << "Choose area (Y): ";
    cin >> y;
    cout << endl << endl;

    while (area[x][y] == 0)
    {
        cout << "ERROR! Chosen area can not be equal to 0!" << endl << endl;
        cout << "Choose area (X): ";
        cin >> x;
        cout << endl;
        cout << "Choose area (Y): ";
        cin >> y;
        cout << endl << endl;
    }

    if (area[x][y] > 0 && area[x][y] <= 20)
    {
        up = false;
        down = false;
        l = false;
        r = false;
        lup = false;
        rup = false;
        ldown = false;
        rdown = false;
        if (area[x][y-1] == 0)
        {
            up = true;
        }
        if (area[x+1][y-1] == 0)
        {
            rup = true;
        }
        if (area[x+1][y] == 0)
        {
            r = true;
        }
        if (area[x+1][y+1] == 0)
        {
            rdown = true;
        }
        if (area[x][y+1] == 0)
        {
            down = true;
        }
        if (area[x-1][y+1] == 0)
        {
            ldown = true;
        }
        if (area[x-1][y] == 0)
        {
            l = true;
        }
        if (area[x-1][y-1] == 0)
        {
            lup = true;
        }
    }

    cout << "You can move: " << endl;

    if (up == true)
    {
        cout << "up" << endl;
    }
    if (rup == true)
    {
        cout << "up right" << endl;
    }
    if (r == true)
    {
        cout << "right" << endl;
    }
    if (rdown == true)
    {
        cout << "down right" << endl;
    }
    if (down == true)
    {
        cout << "down" << endl;
    }
    if (ldown == true)
    {
        cout << "down left" << endl;
    }
    if (l == true)
    {
        cout << "left" << endl;
    }
    if (lup == true)
    {
        cout << "up left" << endl;
    }
    return 0;
}

附加信息:
编码程序:Code :: Blocks v20.03
选择语言:C ++
编译器:GNU GCC编译器
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
C#和C ++是相同的语言,但是它们都是相同语言的不同版本。如果主持人不批准进一步的回复,我将停止使用此网站,并且我将尽一切努力使该网站的信誉下降。我不想这样做,但我认为这是必要的。无缘无故关闭线程是不公平的。

说C#和C ++是同一语言,就好像说法语和西班牙语是同一罗曼语/拉丁语的版本。是的,C#和C ++可能都起源于C,但是两种语言之间的差异足够大,以至您不会期望说法语的人能够自动理解西班牙语,反之亦然。但是,实际上,许多C#概念更多地来自Java,而不是C。
 
状态
不接受进一步答复。
最佳 底部