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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2014, 14:41   #1
g[]Iz
 
Регистрация: 28.04.2014
Сообщений: 3
По умолчанию Управление змейкой

Код:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <graphics.h>
#define N 30
#define M 20
#define Scale 25//размер квадратика
 
 
int w = Scale*N;//ширина окна
int h = Scale*M;//высота окна
int dir, num=4; //dir направление, num=4 количество квадратиков на змейке
 
struct{
int x;
int y;
}s[100];// макс количество квадроат на змейке
 
/*void DrawField()//сетка
{
     setcolor(COLOR(0,0,255));
     for(int i=0; i<w; i+=Scale)
     {
             line(i, 0, i, h);
     }
     for(int j=0; j<h; j+=Scale)
     line(0, j, w, j);
}*/
 
void Tick()//движение змейки
{
     for(int i=num; i>0; --i)
     {
             s[i].x=s[i-1].x;
             s[i].y=s[i-1].y;
     }
     if(dir==0) s[0].y+=1;
     if(dir==1) s[0].x-=1;
     if(dir==2) s[0].x+=1;
     if(dir==3) s[0].y-=1;
}
 
 
void DrawSnake()
{     
     setfillstyle(1,2);
     for(int i=0; i<num; i++)
     {
             bar(s[i].x*Scale, s[i].y*Scale, (s[i].x+0.9)*Scale, (s[i].y+0.9)*Scale);
     }     
}
 
void display()
{ 
     cleardevice();
    // DrawField();
     DrawSnake();       
}
 
void timer(int = 0)// то что изменяется
{    
     int code;
     display();
     Tick();
     if(kbhit())
     {
                code=getch();
                switch(code)
      {
                case 72: dir = 3; break;
                case 75: dir = 1; break;
                case 77: dir = 2; break; 
                case 80: dir = 0; break;
      }
     }
     delay(400);
     timer();     
}   
int main()
{   
    s[0].x=10;//начальные координаты
    s[0].y=10;
    initwindow(w, h);
    timer();    
    getch();
}
как написать управление змейкой? Что бы в любой момент она начинала поворачивать???
g[]Iz вне форума Ответить с цитированием
Старый 10.05.2014, 08:13   #2
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

функция kbhit, для ее использования подключай conio.h. Гугл тебе в помощь
SAMOUCHKA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заполнить массив змейкой ШВиктория Помощь студентам 2 18.12.2012 18:30
С++ заполнение змейкой prettynetty Помощь студентам 3 10.07.2012 16:25
Матрица змейкой Axrik Общие вопросы C/C++ 0 17.12.2011 01:40
Проблема со змейкой Walker32 C++ Builder 0 15.05.2011 17:38