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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gennadich_
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 3
#1

Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ) - C++

17.01.2013, 12:08. Просмотров 564. Ответов 4
Метки нет (Все метки)

Решил спустя некоторый промежуток времени попрактиковаться в c++.
Написать программу, где при нажатии кнопок со стрелками по консоли движется символ.
Вроде бы все должно работать хорошо, если рассуждать логически, но не работает.
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
#include <iostream>
#include <clocale>
#include <conio.h>
using namespace std;
 
int main()
{
    int key;
    char act;
    char map[50][50];
    int i,j,x=0,y=0;
    for(j=0;j<50;j++)
    {
        for(i=0;i<50;i++)
        {
            map[i][j]=' ';
        }
    }
    map[0][0]='0';
    while(1)
    {
        system("cls");
        for(j=0;j<50;j++)
        {
            for(i=0;i<50;i++)
            {
                cout<<map[i][j];
            }
            cout<<"\n";
        }
        act=_getch();
        key=static_cast<int>(act);
        switch(key)
        {
            case 72:
                map[x][y]=' ';
                y--;
                map[x][y]='0';
                break;
            case 75:
                map[x][y]=' ';
                x--;
                map[x][y]='0';
                break;
            case 77:
                map[x][y]=' ';
                x++;
                map[x][y]='0';
                break;
            case 80:
                map[x][y]=' ';
                y++;
                map[x][y]='0';
                break;
                default:
                    break;
        }
        
    }
    system("pause");
    return EXIT_SUCCESS;
}
скажите народ, почему она сразу же стирает карту? Хотя должна стереть, перерисовать и ждать нажатия клавиши, чтобы снова стереть и перерисовать.
Сделано на dev-cpp. Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 12:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ) (C++):

Необходимо, чтобы при нажатии на одну из кнопок меню, фрейм с рекламой сворачивался, и разворачивался снова при нажатии на другую кнопку - JavaScript
Задача такая: Есть три фрейма (расположены друг под другом) - это реклама (вверху), меню (посередке) и главная страница (внизу)....

Как сделать так, чтобы, работая в программе, при нажатии на кнопку открывалась другая миниатюрная программа? - Delphi
как сделать так чтобы работая в программе при нажатии на кнопку открывалась другая миниатюрная программа в Daelphi (например открыта одна...

Сделать так что бы при запуске форма становилась большая, а при нажатии на форму исчезала! - Delphi
Всем привет! Народ помогите решить задачу, я начинающий.Задача сформулирована так:Сделать так что бы при запуске форма становилась большая,...

что не так в программе? Виснет при компиляции - C++
Найти в массиве: 1) сумму элементов с нечётными номерами 2) Сумму элементов между первым и последним отрицательными элементами 3) в...

Ребят, что не так?(Хочу, чтобы при нажатии, Изменялся размер) - Unity, Unity3D
using System.Collections; using System.Collections.Generic; using UnityEngine; public class tap : MonoBehaviour { public...

Как сделать так, что при нажатии клавиши ( не могу сформулировать) - C++
Всем привет, как бы сделать так, что допустим я ввожу длину и ширину, затем я нажимаю &quot;P&quot; и он считает периметр или &quot;S&quot; и он считает...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
17.01.2013, 12:14 #2
Gennadich_, помнеяй очистку экрана и взятие клавиши местами.
Gennadich_
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 3
17.01.2013, 13:20  [ТС] #3
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Gennadich_, помнеяй очистку экрана и взятие клавиши местами.
увы, не помогло
FreeMinder
36 / 36 / 2
Регистрация: 29.08.2012
Сообщений: 59
17.01.2013, 13:26 #4
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
70
71
#include <iostream>
#include <conio.h>
using namespace std;
 
const int MAX_ROW = 23;
const int MAX_COL = 78;
 
int main()
{
    int key;
    char act;
    char map[MAX_ROW+1][MAX_COL+1];
    int row = 0, col = 0;
 
    for(int i=0;i<=MAX_ROW;i++)
    {
        for(int j=0;j<=MAX_COL;j++)
        {
            map[i][j]=' ';
        }
    }
 
    map[0][0]='0';
 
    while(true)
    {
        system("cls");
        for(int i=0;i<=MAX_ROW;i++)
        {
            for(int j=0;j<=MAX_COL;j++)
            {
                cout<<map[i][j];
            }
            cout<<"\n";
        }
        act=_getch();
        key=static_cast<int>(act);
        switch(key)
        {
            case 72: // вверх
                map[row--][col]=' ';
                if(row < 0 ) 
                    row = MAX_ROW;
                map[row][col]='0';
                break;
            case 75: // влево
                map[row][col--]=' ';
                if(col < 0) 
                    col = MAX_COL;
                map[row][col]='0';
                break;
            case 77: // вправо
                map[row][col++]=' ';
                if( col > MAX_COL)
                    col = 0;
                map[row][col]='0';
                break;
            case 80: // вниз
                map[row++][col]=' ';
                if(row > MAX_ROW) 
                    row = 0;
                map[row][col]='0';
                break;
                default:
                    break;
        }
        
    }
    system("pause");
    return EXIT_SUCCESS;
}
FreeMinder
36 / 36 / 2
Регистрация: 29.08.2012
Сообщений: 59
17.01.2013, 13:32 #5
Gennadich_, ваш код тоже работоспособен, только добавить проверку на выход за пределы массива.
А для того, чтобы увидеть его работу нужно растянуть консоль, так как туда не влезет 50 строк
Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2013, 13:32
Привет! Вот еще темы с ответами:

Как сделать так что бы при нажатии на shift ничего не происходило? - C#
Доброго времени суток! Подскажите как сделать так что бы при нажатии на shift ничего не происходило? То есть что бы шифт игнорировался?

При нажатии сделать так что бы числа выводились в label по очереди - C#
при нажатии сделать так что бы числа выводились в label по очереди . то есть нажал на кнопку и через цикл выводятся числа , но вот у меня...

Как сделать так, что при нажатии на ComboBox он автоматом заполнялся - C#
как сделать так, что при нажатии на combobox он автоматом заполнялся вот код MySql.Data.MySqlClient.MySqlCommand MyCommand10 = new...

Сделать так, что бы при нажатии на на кнопку высвечивался код программмы - Visual Basic
хочу сделать, что бы при нажатии на на кнопку высвечивался код программмы можно такое замутить?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.01.2013, 13:32
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru