Форум программистов, компьютерный форум CyberForum.ru

Консольный Сапер - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дан файл целых чисел. Создать новый файл, содержащий те же элементы, что и исходный файл, но в обратном порядке http://www.cyberforum.ru/cpp-beginners/thread127337.html
Пожалуйста, помогите решить задачу в C++!!! Дан файл целых чисел. Создать новый файл, содержащий те же элементы, что и исходный файл, но в обратном порядке
C++ графика на С (анимация) Прошу помочь, кто знает, решить задачу. Вообщем вот моя задача - Три собаки расположены в вершинах равностороннего треугольника.(собак можно точками обозначить) Они движутся так, что первая собака все время держит курс на вторую, вторая – на третью, а третья – на первую. В конце концов они оказываются в центре треугольника. Нарисовать данное движение. Заранее огромнейшее спасибо! http://www.cyberforum.ru/cpp-beginners/thread127335.html
C++ хеш функции
здраствуйте! собственно проблема в хеш функциях. не могу разобратся в принципе (гугль и книги читал). сам принцип хеширования понятен, а вот его программная реализация не очень. например если у меня есть ряд целых чисел и мне надо распределить эти числа по блокам. то для каждого блока нужен массив? условие задачи таково: Дан ряд чисел, использую хэш функции распределить это число по n...
C++ добавление в контейнер без указания типов данных?
Привет, у меня проблема. Сразу перейду к коду: template <class structType> class CMyExperimentator { private: structType myStruct;
C++ Сумма цифр, стоящих на четных местах http://www.cyberforum.ru/cpp-beginners/thread127326.html
Дано число. Посчитать сумму цифр, стоящих на четных местах числа. #include<conio.h> #include<stdio.h> #include<stdio.h> #include<conio.h> main() { int n,a,summa=0,N; cout<<"Vvedite kol-vo cifr n"; cin>>n;
C++ попадание чисел в интервал Последовательность n целых чисел, n-задано. Определить,все ли числа попадают в заданный интервал . Помогите найти ошибку, всегда выводит,что "не все числа попадают в интервал" #include<iostream.h> #include<math.h> #include<conio.h> #include<stdio.h> main() { int n,k,x,y,a; cout<<"vvedite n "; подробнее

Показать сообщение отдельно
Oconor
Сообщений: n/a

Консольный Сапер - C++

09.05.2010, 23:41. Просмотров 2492. Ответов 1
Метки (Все метки)

Пишу консольного сапера, не могу организовать вывод на консоль поля, мин и движение по полю, точнее что то я организовал, но что именно трудно сказать, по тому что, то что я сделал работать особо не хочет.
Подскажите что я не так делаю или вариант вывода на консоль подскажите другой.
Если вкратце то программа генерирует два числа(координаты х у), и по этим координатам вписывает 0 т.е бомба остальные заполняются -2.
-2 - закрытая, пустая клетка
-1 - открытая, пустая клетка
0 - мина
1 - одна мина рядом
2 - две мины рядом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void Mines()
{
    srand((unsigned)time(0));
 
    int x, y;
    for(int j = 0; j < 8; j++)
    {
        for(int i = 0; i < 8; i++)
        {
            Mine[i][j] = -2;
        }
    }
 
    for(int i = 0; i != 10;)
    {
        x = rand() % 9;
        y = rand() % 9;
 
        if(Mine[x][y] == 0)
        {
            continue;
        }
        else
        {
            Mine[x][y] = 0;
            i++;
        }
    }
Вот это отвечает за вывод, на консоль и движение по полю:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
void Move()
{
    const int Esc = 27, Enter = 13;
    int key;
    Pole();
    ShowCursor(false);
    do
    {
        key = _getch();
 
        if (key == Enter)
        {
            Game();
        }
        if (key == 0 || key == 0xe0)
        {
            key = _getch();
 
            if(Mine[x][y] == -2)
            {
                WriteStr(x, y, "+");
            }
            else
            {
                GotoXY(x, y);
                cout << Mine[x][y];
            }
            WriteStr(x, y, "A");
            switch (key)
            {
            case 72:        // up
                if (y > 0) y--;
                break;
            case 75:        // left
                if (x > 0) x--;
                break;
            case 77:        // right
                if (x < 16) x++;
                break;
            case 80:        // down
                if (y < 8) y++;
                break;
            }
            
        }
    }
    while (key != Esc);
 
}
Вот это реагирует на нажатие энтра на поле и должна открывать клетки, я не могу понять работает она или нет, поскольку с выводом проблемма.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
void Game()
{
    int bx = x, by = y;
 
    if(Mine[x][y] == -1 || Mine[x][y] == -2)
    {
        if(Mine[x++][y] == 0) 
        {
            Mine[x++][y] = 0;
            GotoXY(x, y);
            cout << Mine[x][y];
            GotoXY(bx, by);
        }
        if(Mine[x][y++] == 0) 
        {
            Mine[x][y++] = 0;
            GotoXY(x, y);
            cout << Mine[x][y];
            GotoXY(bx, by);
        }
        if(Mine[x--][y] == 0)
        {
            Mine[x--][y] = 0;
            GotoXY(x, y);
            cout << Mine[x][y];
            GotoXY(bx, by);
        }
        if(Mine[x][y--] == 0) 
        {
            Mine[x][y--] = 0;
            GotoXY(x, y);
            cout << Mine[x][y];
            GotoXY(bx, by);
        }
        if(Mine[x++][y++] == 0) 
        {
            Mine[x++][y++] = 0;
            GotoXY(x, y);
            cout << Mine[x][y];
            GotoXY(bx, by);
        }
        if(Mine[x--][y--] == 0) 
        {
            Mine[x--][y--] = 0;
            GotoXY(x, y);
            cout << Mine[x][y];
            GotoXY(bx, by);
        }
        if(Mine[x--][y++] == 0)
        {
            Mine[x--][y++] = 0;
            GotoXY(x, y);
            cout << Mine[x][y];
            GotoXY(bx, by);
        }
        if(Mine[x++][y--] == 0) 
        {
            Mine[x++][y--] = 0;
            GotoXY(x, y);
            cout << Mine[x][y];
            GotoXY(bx, by);
        }
    }
    if(Mine[x][y] == 0)
    {
        GotoXY(x, y);
        cout << Mine[x][y];
    }
}
GotoXY, WriteStr, и еще несколько прописаны в другой библиотеке.
Исходя отсюда выложу весь проект.
<приаттачьте к сообщению>
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru