#include<stdio.h>
#include<conio.h>
#include<dos.h>
#define pos(I,n) gotoxy((I&255)*2,I>>8 ),printf("%c%c",n,n)
void main()
{
int I[21],d=1,*i;
for(i=I;i<I+20;i++)*i=276+I-i;
clrscr();
for(;; )
{
if(kbhit()&&!(d=0))switch(getch())
{
case 27 : return;
case 0 : continue;
case 72 : d-=512;
case 80 : d+=257;
case 75 : d-=2;
case 77 : d+=1;
}
pos(I[20],32);
for(i=I+20;i>I;i--)pos((*i=*(i-1)),219);
*I+=d;
pos(*I,219);
delay(50);
}
}
Кто угадает, что это за код?=)
Код:
Если вы хотите наисать "Фуу! Да это же ...! И это очевидно", то лучше промолчите=))))).
Цитата:
Originally posted by lord Kelvin
Поробуйте понять, что жта программа делает (ясное дело не компилируя=) )
Поробуйте понять, что жта программа делает (ясное дело не компилируя=) )
Ну, змею по экрану гоняет с управлением стрелками и некорректной обработкой достижения границ экрана.
Кстати, вычитание указателя из указателя не есть гуд, особенно под ДОСом и не в модели памяти Huge.
Цитата:
Originally posted by Plisteron
Ну, змею по экрану гоняет с управлением стрелками и некорректной обработкой достижения границ экрана.
Кстати, вычитание указателя из указателя не есть гуд, особенно под ДОСом и не в модели памяти Huge.
Ну, змею по экрану гоняет с управлением стрелками и некорректной обработкой достижения границ экрана.
Кстати, вычитание указателя из указателя не есть гуд, особенно под ДОСом и не в модели памяти Huge.
Все же, я думаю, стоило сказать, что некорректно не обрабатывает пересечения...=)
Код:
#include<conio.h>
#include<dos.h>
unsigned long far *S=(unsigned long*)3087007744L;
void main()
{
unsigned int I[21],*i,d=1,q;
for(i=I;i<I+21;i++)*i=276+I-i;
clrscr();
for(;; )
{
if(kbhit())if(!(q=getch()))continue;
else d=(21L*q*q*q-4788L*q*q+363872L*q)/5-1843456L;
S[(I[20]&255)+(I[20]>>8 )*40]=119539488L;
for(i=I+20;i>I;i--)S[((*i=*(i-1))&255)+((*(i-1))>>8 )*40]=131794907L;
if(S[((*I+d)&255)+((*I+d)>>8 )*40]!=119539488L)return;
S[((*I+=d)&255)+(*I>>8 )*40]=131794907L;
if((*I&255)<1||(*I&255)>38||(*I>>8 )<1||(*I>>8 )>24)return;
delay(50);
}
}
#include<dos.h>
unsigned long far *S=(unsigned long*)3087007744L;
void main()
{
unsigned int I[21],*i,d=1,q;
for(i=I;i<I+21;i++)*i=276+I-i;
clrscr();
for(;; )
{
if(kbhit())if(!(q=getch()))continue;
else d=(21L*q*q*q-4788L*q*q+363872L*q)/5-1843456L;
S[(I[20]&255)+(I[20]>>8 )*40]=119539488L;
for(i=I+20;i>I;i--)S[((*i=*(i-1))&255)+((*(i-1))>>8 )*40]=131794907L;
if(S[((*I+d)&255)+((*I+d)>>8 )*40]!=119539488L)return;
S[((*I+=d)&255)+(*I>>8 )*40]=131794907L;
if((*I&255)<1||(*I&255)>38||(*I>>8 )<1||(*I>>8 )>24)return;
delay(50);
}
}
Цитата:
Originally posted by lord Kelvin
Последняя версия. Что добавилось?
Последняя версия. Что добавилось?
Убавились функции printf();
Положа руку на сердце, просто лень разбираться.
Цитата:
Originally posted by Plisteron
Убавились функции printf();
Положа руку на сердце, просто лень разбираться.
Убавились функции printf();
Положа руку на сердце, просто лень разбираться.
А еще добавились проверки на столкновение и на выход за пределы.
Цитата:
Originally posted by lord Kelvin
А еще добавились проверки на столкновение и на выход за пределы.
А еще добавились проверки на столкновение и на выход за пределы.
Ну и к чему ты все это ведешь?
Цитата:
Originally posted by pacific_7
Ну и к чему ты все это ведешь?
Ну и к чему ты все это ведешь?
Я? Ну... Пытаюсь сделать короткий и сложный код. Мне это удовольствие доставляет.
Код:
#include<conio.h>
#include<dos.h>
void main()
{
unsigned int I[64]={258,257,256},*i,d=1,q,l=2,R=12;
clrscr();
((long far*)0xB8000000)[(R=(R*9301+49267)%233280)%1000]=0x7440743;
for(;; )
{
if(kbhit())if(!(q=getch()))continue;
else d=(21L*q*q*q-4788L*q*q+363872L*q)/5-1843456L;
((long far*)0xB8000000)[(I[l]&255)+(I[l]>>8 )*40]=0x7200720;
for(i=I+l;i>I;i--)
((long far*)0xB8000000)[((*i=*(i-1))&255)+(*(i-1)>>8 )*40]=0x7DB07DB;
if(((long far*)0xB8000000)[(*I+d&255)+(*I+d>>8 )*40]==0x7440743)
((long far*)0xB8000000)[(R=(R*9301+49267)%233280)%1000]= 0x7440743,l++;
else if(((long far*)0xB8000000)[(*I+d&255)+(*I+d>>8 )*40]!=0x7200720)return;
if(((*I+d)&255)>39||(*I+d)>6400)return;
((long far*)0xB8000000)[((*I+=d)&255)+(*I>>8 )*40]=0x7DB07DB;
delay(75);
}
}
#include<dos.h>
void main()
{
unsigned int I[64]={258,257,256},*i,d=1,q,l=2,R=12;
clrscr();
((long far*)0xB8000000)[(R=(R*9301+49267)%233280)%1000]=0x7440743;
for(;; )
{
if(kbhit())if(!(q=getch()))continue;
else d=(21L*q*q*q-4788L*q*q+363872L*q)/5-1843456L;
((long far*)0xB8000000)[(I[l]&255)+(I[l]>>8 )*40]=0x7200720;
for(i=I+l;i>I;i--)
((long far*)0xB8000000)[((*i=*(i-1))&255)+(*(i-1)>>8 )*40]=0x7DB07DB;
if(((long far*)0xB8000000)[(*I+d&255)+(*I+d>>8 )*40]==0x7440743)
((long far*)0xB8000000)[(R=(R*9301+49267)%233280)%1000]= 0x7440743,l++;
else if(((long far*)0xB8000000)[(*I+d&255)+(*I+d>>8 )*40]!=0x7200720)return;
if(((*I+d)&255)>39||(*I+d)>6400)return;
((long far*)0xB8000000)[((*I+=d)&255)+(*I>>8 )*40]=0x7DB07DB;
delay(75);
}
}
Теперь можно есть яблоки. Вот.
Вот через полгодика вернёшься к этакому коду, и будешь тупо пялиться на листинг, недоумевая, как это тебя могло так расплющить... :D
Цитата:
Originally posted by fellow
Вот через полгодика вернёшься к этакому коду, и будешь тупо пялиться на листинг, недоумевая, как это тебя могло так расплющить... :D
Вот через полгодика вернёшься к этакому коду, и будешь тупо пялиться на листинг, недоумевая, как это тебя могло так расплющить... :D
Fellow! Ты чертовски прав! Я именно так себя ощущаю сейчас.=)
Цитата:
Originally posted by lord Kelvin
Fellow! Ты чертовски прав! Я именно так себя ощущаю сейчас.=)
Fellow! Ты чертовски прав! Я именно так себя ощущаю сейчас.=)
Вот что бывает, когда медведь летает...
Это тебе наверное очень сильно нечего делать. Мне бы так: даже в инет времени выйти не хватает.