Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2013, 01:32   #1
monchess
Новичок
Джуниор
 
Регистрация: 23.12.2013
Сообщений: 1
Вопрос Хвост змейки

Всем привет! Прошу вашей помощи, начал писать змейку на c, всё было хорошо, пока не встал вопрос насчёт хвоста, алгоритм в голове есть, но не могу это программно закрепить.

Вот фрагмент кода, если вас не затруднит, напишите для хвоста функцию, отталкиваясь от этого кода:

Код:
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#include <ctime>
 
using namespace std;
 
enum keys
{
    Top = 119,
    Down = 115,
    Left = 97,
    Right = 100
};
 
int move_Y(int pos_Y, int key_pressed)
{
    switch (key_pressed)
    {
        case Top:
            --pos_Y;
            break;
        case Down:
            ++pos_Y;
            break;
    }
 
    return pos_Y;
}
 
int move_X(int pos_X, int key_pressed)
{
    switch (key_pressed)
    {
        case Left:
            --pos_X;
            break;
        case Right:
            ++pos_X;
            break;
    }
 
    return pos_X;
}
 
int main()
{
    COORD cursor = { 0, 0 };
 
    const int width = 30;
    const int height = 20;
 
    char plane[width][height] = {0};
 
    int pos_Y = height / 2;
    int pos_X = 0;
 
    int key_pressed = Right;
 
    while (true)
    {
        Sleep(100);
 
        if (_kbhit() == true)
        {
            key_pressed = _getch();
        }
 
        pos_Y = move_Y(pos_Y, key_pressed);
        pos_X = move_X(pos_X, key_pressed);
 
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cursor);
 
        for (int i = 0; i < height; ++i)
        {
            for (int j = 0; j < width; ++j)
            {
                plane[j][i] = 0;
 
                plane[pos_X][pos_Y] = 1;
            }
        }
 
        for (int i = 0; i < height; ++i)
        {
            for (int j = 0; j < width; ++j)
            {
                cout << plane[j][i];
            }
            cout << endl;
        }
    }
 
    return 0;
}
monchess вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исправить хвост acheron1757 Общие вопросы Delphi 1 24.06.2013 11:07
Рисуется хвост за текстом (TextOut) artemavd Общие вопросы Delphi 19 17.05.2012 10:29
Pascal хвост змейки zhenka619 Помощь студентам 1 30.12.2011 14:01
Хвост для кометы X@OC JavaScript, Ajax 0 29.07.2011 10:34
очередь с указателем на хвост и голову Anny_Apple Паскаль, Turbo Pascal, PascalABC.NET 0 02.05.2011 21:04