Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Игра змейка на СИ, Игра змейка на СИ 
:(
    Опции темы
Цивильный
Дата 7.1.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 7.1.2007

Репутация: -2
Всего: нет



Привет, ребят. Подскажите пожалуйста. Как нарастить хвост змейке в моей программе. В долгу не останусь. Плачу 50 WMR (или ваша цена). 

Код

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <string.h>
//------------------------------------------------

void main(void)
{
int gdriver = DETECT, gmode;
initgraph(&gdriver, &gmode, "");
int i, j, x, y, x1, y1, k=0, l, m, r, t;
char s[2], c[31]={"0123456789"};
randomize();
int Ax[63]={10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370,380,390,400,410,420,430,440,450,460,470,480,490,500,510,520,530,540,550,560,570,580,590,600,610,620,630};
int Ay[40]={10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370,380,390,400};


rectangle(13,13,627,397);
s[0]=c[k];
s[1]='\0';
outtextxy(290,450,"Score: ");
outtextxy(347,450,s);
l=random(62);
m=random(39);
if (l==0) l++;
if (l==62) l--;
if (m==0) m++;
if (m==39) m--;
x1=Ax[l];
y1=Ay[m];


i=31;
j=19;
circle(Ax[i],Ay[j],5);
putpixel(Ax[i]-2,Ay[j]-2,15);
putpixel(Ax[i]+2,Ay[j]-2,15);
putpixel(Ax[i],Ay[j],15);
line(Ax[i]-1,Ay[j]+2,Ax[i]+1,Ay[j]+2);

int key;
do
{
setcolor(7);
circle(x1,y1,5);
setfillstyle(1,7);
floodfill(x1,y1,7);
r=i;
t=j;
if(kbhit()) key=getch();
if(key==80) j++;
if(key==72) j--;
if(key==77) i++;
if(key==75) i--;
delay(150);


setcolor(0);
circle(Ax[r],Ay[t],5);
putpixel(Ax[r]-2,Ay[t]-2,0);
putpixel(Ax[r]+2,Ay[t]-2,0);
putpixel(Ax[r],Ay[t],0);
line(Ax[r]-1,Ay[t]+2,Ax[r]+1,Ay[t]+2);

setcolor(7);
circle(Ax[i],Ay[j],5);
putpixel(Ax[i]-2,Ay[j]-2,15);
putpixel(Ax[i]+2,Ay[j]-2,15);
putpixel(Ax[i],Ay[j],15);
line(Ax[i]-1,Ay[j]+2,Ax[i]+1,Ay[j]+2);

if (getpixel(Ax[i]+3,Ay[j])==15 | getpixel(Ax[i]-3,Ay[j])==15 | getpixel(Ax[i],Ay[j]+3)==15 |  getpixel(Ax[i],Ay[j]-3)==15)
{
outtextxy(240,200,"Snake left for border");
getch();
closegraph();
}

if (Ax[i]==x1 && Ay[j]==y1)
{

circle(x1,y1,5);
setfillstyle(1,0);
floodfill(x1,y1,0);

l=random(62);
m=random(39);
if (l==0 ) l++;
if (l==62) l--;
if (m==0 ) m++;
if (m==39) m--;
x1=Ax[l];
y1=Ay[m];

circle(x1,y1,5);
setfillstyle(1,7);
floodfill(x1,y1,7);

setcolor(0);
s[0]=c[k++];
s[1]='\0';
outtextxy(347,450,s);

setcolor(7);
s[0]=c[k];
s[1]='\0';
outtextxy(347,450,s);
}


}
while(key!=27);
getch();
closegraph();
}


PM MAIL   Вверх
Alexey_2007
Дата 7.1.2007, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 30.12.2006

Репутация: 1
Всего: 1



храни не просто координату головы своей змейки, а массив содержащий координаты всех ее элементов


И при каждом перемещении змейки делай следующее:
(вдобавок к уже написанному)

1) Если змейка не наступила на новый элемент(прирост длины)
То рисуй черным цветом шарик хвоста(стирай), и белым - шарик куда она попала(головы)

2) Если змейка наступила на новый элемент(прирост длины), то НЕ стирай хвостовой элемент змейки.


Подробнее можешь посмотреть здесь: 

http://rsc-team.ru/cgi-bin/index.pl?rzd=2&...18a20e&bk=0

Добавлено @ 19:41 
если надумаешь - вот кстати
R284300567172
--------------------
Святая простота
PM MAIL   Вверх
KpoHyc
Дата 7.1.2007, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 23.12.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 5



Alexey_2007,  smile 


Цивильный, 
http://forum.vingrad.ru/topic-7158.html
http://forum.vingrad.ru/topic-14830.html

на 50 баксов лучше книгу купи по поиску в интернете  smile 
В нете к тому же полно реализаций твоей игры... вот например http://chihpyh.far.ru/snake/

Это сообщение отредактировал(а) KpoHyc - 7.1.2007, 20:35
--------------------
AScript + Pascal + C -> C++ ->C#Adobe Photoshop 7.0/CS 2.0 + GIMP+ Visual Studio .NET(sp1)/2005 pro(sp1)
PM MAIL ICQ Skype GTalk Jabber   Вверх
Alexey_2007
Дата 7.1.2007, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 30.12.2006

Репутация: 1
Всего: 1



50 рублей а не баксовsmilesmilesmile
--------------------
Святая простота
PM MAIL   Вверх
KpoHyc
Дата 7.1.2007, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 23.12.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 5



Alexey_2007, тем более)))) книжка 70т стоит...
--------------------
AScript + Pascal + C -> C++ ->C#Adobe Photoshop 7.0/CS 2.0 + GIMP+ Visual Studio .NET(sp1)/2005 pro(sp1)
PM MAIL ICQ Skype GTalk Jabber   Вверх
Maxx
Дата 18.1.2007, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.11.2006

Репутация: нет
Всего: нет



Ух ти,  а я ее писал на 1 курсе... Хорошее время было... Препод при тестировании 20 минут рубился)))

Добавлено @ 08:43 
Тебе в любом случае надо хранить массив с координатами всех элементов змеи, т.к. ты должен проверять наезд на самое себя
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.