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

Как сделать управление стрелками в консольной змейке? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Исправить код: распечатать анкетные данные студентов, успевающих на 4 и 5 http://www.cyberforum.ru/cpp-beginners/thread1308849.html
Скажите, пожалуйста, как сделать, чтобы выводились все студенты, у кого 4 и 5. Не получается, выводится только один по этому коду. //Распечатать анкетные данные студентов, успевающих на 4 и 5. #include "stdafx.h" #include <stdio.h> #include <ctype.h> #include <math.h> #include <stdlib.h> #include <iostream> #include <conio.h>
C++ Найти количество повторений цифр в числе Найти количество повторений каждой цифры у заданного натурального числа (не используя массивов). http://www.cyberforum.ru/cpp-beginners/thread1308846.html
Распечатать анкетные данные студентов, успевающих на 4 и 5 C++
Скажите, пожалуйста, как сделать, чтобы выводились все студенты, у кого 4 и 5. Не получается, выводится только один по этому коду. //Распечатать анкетные данные студентов, успевающих на 4 и 5. #include "stdafx.h" #include <stdio.h> #include <ctype.h> #include <math.h> #include <stdlib.h> #include <iostream> #include <conio.h>
Зашифровать все строки из файла C++
делаю не сложный шифр текстового файла,и такая проблема. работает только с одной строкой. прикрутил считывание до конца файла,и теперь текст не шифруется. кто что подскажет? #include "stdafx.h" #include <iostream> #include <stdlib.h> #include <conio.h> #include <iostream> #include <string> #include <fstream> #include <string>
C++ Массив структур. Вышел бесконечный цикл http://www.cyberforum.ru/cpp-beginners/thread1308826.html
даже если убрать строку i++, всё равно бесконечно выдаёт одно и тоже #include <iostream> #include <string.h> #include <math.h> using namespace std; struct vlad{ char fam, im, ot;
C++ Найти минимальные элементы в каждом столбце произвольного двумерного массива и записать их в виде одномерного Найти минимальные элементы в каждом столбце произвольного двумерного массива и записать их в виде одномерного массива есть код в c#, но не знаю как переделать( using System; class ConsoleApp { public static void Main() { Console.Write("m: "); подробнее

Показать сообщение отдельно
Mr_Progger
23 / 23 / 9
Регистрация: 01.11.2013
Сообщений: 170
24.11.2014, 21:50  [ТС]     Как сделать управление стрелками в консольной змейке?
Поправил, теперь змейка ест и растёт. Как сделать управление стрелками?

snake.h
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
#include <deque>
#include "Point.h"
class Snake
{
    std::deque<Point> snake;
    Point hvost, golova;   //коородината хвоста и головы змеи
public:
    void AddSnake(const Point&);        //увеличение змеи
    std::deque<std::pair<int,int>> pr();
    void MoveSnake();
    void Eat();
    void Hvost();
    void Golova();
    Point GetHvost();
    Point GetGolova();
    Snake();
    ~Snake();
};


shake.cpp
Кликните здесь для просмотра всего текста

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 "Snake.h"
 
 
void Snake::AddSnake(const Point& p ) //Создание 
{
    snake.push_front(p);
}
 
void Snake::Eat()  // Ест
{
    snake.push_back(hvost);
}
 
 
std::deque<std::pair<int, int>> Snake::pr()  //Форимрование массива кородинат каждого куска змеи для дальнейшего занесения в массив поля
{
    std::deque<Point>::iterator iter;
    std::pair<int, int> xy;
    std::deque<std::pair<int, int>> dek;
    for (iter = snake.begin(); iter != snake.end(); iter++)
    {
        xy.first = (*iter).GetPointX();
        xy.second = (*iter).GetPointY();
        dek.push_back(xy);
    }
 
    return dek;
}
 
 
void Snake::MoveSnake()  // Двигаем змею. Голова получает новые координаты, каждый кусок змеи получет старые кородинаты впереди идущего куска
{
    for (size_t i = snake.size()-1; i > 0; --i)
        snake[i] = snake[i - 1];
    snake[0].SetPoint();
}
 
 
void Snake::Hvost()
{
    std::deque<Point>::iterator iter = --snake.end();
    Point temp((*iter).GetPointX(), (*iter).GetPointY());
    hvost = temp;
}
 
void Snake::Golova()
{
    std::deque<Point>::iterator iter = snake.begin();
    Point temp((*iter).GetPointX(), (*iter).GetPointY());
    golova = temp;
}
 
 
Point Snake::GetHvost()
{
    return hvost;
}
 
Point Snake::GetGolova()
{
    return golova;
}
 
Snake::Snake()
{
}
 
 
Snake::~Snake()
{
}


Point.h
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
class Point
{
    int x;
    int y;
public:
    Point(int xx = 0, int yy = 0) : x(xx), y(yy) {};
    Point(const Point&);
    void SetPoint();
    int GetPointX() { return x; };
    int GetPointY() { return y; };
};


Point.cpp
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "Point.h"
 
 
Point::Point(const Point& p)
{
    x = p.x;
    y = p.y;
}
 
 
void Point::SetPoint()
{
    if (x + 1 < 30)
        x++;
    else
        x = 0;
}


main.cpp
Кликните здесь для просмотра всего текста

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
#include <iostream>
#include <deque>
#include <Windows.h>
#include "Point.h"
#include "Snake.h"
 
 
int main()
{
    int const n = 30;
    char pole[n][n];
    Point snake1(0, 5);
    Point snake2(1, 5);
    Point snake3(2, 5);
    Point snake4(3, 5);
    Snake BigSnake;
 
    BigSnake.AddSnake(snake4);
    BigSnake.AddSnake(snake3);
    BigSnake.AddSnake(snake2);
    BigSnake.AddSnake(snake1);
    
    while (1)
    {   
            
        BigSnake.Golova();
        for (size_t i = 0; i < n; i++)
        for (size_t j = 0; j < n; j++)
            pole[i][j] = ' ';
        pole[5][9] = '*';
        if (BigSnake.GetGolova().GetPointX() == 9 && BigSnake.GetGolova().GetPointY() == 5)
            BigSnake.Eat();
        std::deque<std::pair<int, int>> dek = BigSnake.pr();
        std::deque<std::pair<int, int>>::iterator iter;
        for (iter = dek.begin(); iter!=dek.end(); iter++)
            pole[(*iter).second][(*iter).first] = '*';
 
 
        
        for (size_t i = 0; i < n; i++)
        {
            for (size_t j = 0; j < n; j++)
                std::cout << pole[i][j];
            std::cout << std::endl;
        }
 
 
        BigSnake.Hvost();
        Sleep(200);
        BigSnake.MoveSnake();
        system("cls");
    }  
 
    system("pause");
    return 0;
}
Вложения
Тип файла: rar ConsoleApplication14.rar (7.41 Мб, 6 просмотров)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru