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

Черепашья графика (язык Лого) - C++

Восстановить пароль Регистрация
 
ins1der
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 7
17.01.2013, 20:08     Черепашья графика (язык Лого) #1
Хочу смоделировать перемещение черепахи по полю. У черепахи есть перо. Если оно опущено, то на поле остается след, если поднято - следа не будет. При каждом вводе на экране должна отображаться текущая ситуация на поле.
Не могу понять, где совершил ошибку, выдает ошибку в стэке floor. Если есть идеи, подскажите, пожалуйста. Извиняюсь, что код скинул в таком виде, не нашел, как скинуть по другому.


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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <time.h>
#define SIZE 10
 
void move(char [SIZE][SIZE]); // моделирует перемещение черепахи
 
int main()
{
    char floor [SIZE][SIZE] = {0};
        move (floor); // вызов функции
        for (int i = 0; i <= SIZE - 1; i++) // печать на экран массива (поля)
        {
            for (int j = 0; j <= SIZE - 1; j++)
                std:: cout << floor [i][j];
            std::cout << "\n";
        }
    return 0;
}
 
void move (char [SIZE][SIZE])
{
    bool pero = 0;
    int count(0);
    char floor [SIZE][SIZE] = {0};
    int i(0),j(0);
    for (int i = 0; i <= SIZE - 1; i++) // инициализируем поле нулями
        for (int q = 0; q <= SIZE -1; q++)
            floor [i][q] = '0';
    floor [0][0] = '#'; // инициализируем элемент массива [0][0] значением # (черепаха)
    char ch;
    std::cin >> ch; // задаем перемещение черепахи
    switch (ch)
    {
        case '5': // перо вниз/вверх
            count++;
            if (count % 2 == 0)
                pero = 0;
            else
                pero = 1;
            break;
        case '4':
            if (floor [i][j] != floor [i][0]) // перемещение влево (на один столбец массива назад)
            {
                floor [i][j] = floor[i][j-1];
                floor [i][j] = '#';
                floor [i][j+1] = '0';
                if (pero)
                    floor [i][j+1] = '1';
                break;
            }
        case '6':
            if (floor [i][j] != floor [i][SIZE]) // перемещение вправо (на один столбец массива вперед)
            {
                floor [i][j] = floor[i][j+1];
                floor [i][j] = '#';
                floor [i][j-1] = '0';
                if (pero)
                    floor [i][j-1] = '1';
                break;
            }
        case '2':
            if (floor [i][j] != floor [0][j]) // перемещение вниз (на одну строку назад)
            {
                floor [i][j] = floor[i-1][j];
                floor [i][j] = '#';
                floor [i+1][j] = '0';
                if (pero)
                    floor [i+1][j] = '1';
                break;
            }
        case '8':
            if (floor [i][j] != floor [SIZE][j]) // перемещение вверх (на одну строку вперед)
            {
                floor [i][j] = floor [i+1][j];
                floor [i][j] = '#';
                floor [i-1][j] = '0';
                if (pero)
                    floor [i-1][j] = '1';
                break;
            }
        else
            break;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 20:08     Черепашья графика (язык Лого)
Посмотрите здесь:

C++ Черепашья графика
C++ Графика с++ (Реализовать эффект «язык пламени)
Черепашья графика C++
Язык С C++
C++ Черепашья графика
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11834 / 6813 / 769
Регистрация: 27.09.2012
Сообщений: 16,886
Записей в блоге: 2
Завершенные тесты: 1
17.01.2013, 20:14     Черепашья графика (язык Лого) #2
Черепашья графика
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
17.01.2013, 20:37     Черепашья графика (язык Лого) #3
break; стоят не там где надо из-за этого беда с массивом

Цитата Сообщение от ins1der Посмотреть сообщение
void move(char [SIZE][SIZE]); // моделирует перемещение черепахи
что-то непонятное. по значению что-то передаёте?

Добавлено через 52 секунды
тогда уж надо так передавать по ссылке
C++
1
void move(char (&floor)[SIZE][SIZE]); // моделирует перемещение черепахи
Добавлено через 1 минуту
и строка 26 не нужна, вы же массив пытаетесь передать в функцию
ins1der
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 7
17.01.2013, 20:50  [ТС]     Черепашья графика (язык Лого) #4
Спасибо за помощь.
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
17.01.2013, 20:55     Черепашья графика (язык Лого) #5
Цитата Сообщение от ins1der Посмотреть сообщение
for (int i = 0; i <= SIZE - 1; i++) // инициализируем поле нулями for (int q = 0; q <= SIZE -1; q++) floor [i][q] = '0';
вот ещё эта часть выглядит не на своём месте. точно надо каждый раз инициализировать?
ещё не хватает цикла в main который бы позволял программе работать, а не сразу закрываться

Добавлено через 3 минуты
черепаха не ползает
Yandex
Объявления
17.01.2013, 20:55     Черепашья графика (язык Лого)
Ответ Создать тему
Опции темы

Текущее время: 15:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru