![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 15.11.2009
Сообщений: 2
|
![]()
#include <stdlib.h>
#include <stdio.h> #include <conio.h> #include <dos.h> #include <time.h> unsigned char far *screen = MK_FP (0xA000,0); void SetMode (int Mode) { union REGS regs; regs.h.ah = 0; regs.h.al = Mode; int86 (0x10, ®s, ®s); } void ClearScreen (void) { unsigned i; for (i=0; i<64000l; i++) screen [i]=0; } void drawBody (int x, int y, unsigned char *draw) { int x1,y1; x += 2; y += 3; for (y1=0;y1<14;y1++) for (x1=0;x1<17;x1++) if (draw[y1*17+x1] !=0) screen[320*(y1+y)+x1+x] = draw[y1*17+x1]; } void clearBody (int x, int y) { int x1,y1; x += 2; y += 3; for (y1=0;y1<14;y1++) for (x1=0;x1<17;x1++) screen[320*(y1+y)+x1+x] = 0; } void drawObstacle (int x, int y, unsigned char *draw) { int x1,y1; x += 4; y += 5; for (y1=0;y1<10;y1++) for (x1=0;x1<12;x1++) if (draw[y1*12+x1] !=0) screen[320*(y1+y)+x1+x] = draw[y1*12+x1]; } void WaitSync(void) { while(inportb(0x3DA) &0x8); while(!(inportb(0x3Da)&0x8)); } void drawLine1 (int x) { int y; for (y=0;y<=200;y++) screen[320*y+x] = 8; } void drawLine2 (int y) { int x; for (x=0;x<=320;x++) screen[320*y+x] = 8; } unsigned char robot[17*14] = { 0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0, 0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0, 0,1,1,1,1,0,0,1,1,1,0,0,1,1,1,1,0, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1, 1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1, 1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0, 0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0, 0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0, 0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0, 1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1 }; unsigned char obstacle[12*10] = { 8,8,8,8,8,8,8,8,8,8,8,8, 8,3,1,1,1,1,1,1,1,1,3,8, 8,1,3,1,1,1,1,1,1,3,1,8, 8,1,1,3,1,1,1,1,3,1,1,8, 8,1,1,1,3,3,3,3,1,1,1,8, 8,1,1,1,3,3,3,3,1,1,1,8, 8,1,1,3,1,1,1,1,3,1,1,8, 8,1,3,1,1,1,1,1,1,3,1,8, 8,3,1,1,1,1,1,1,1,1,3,8, 8,8,8,8,8,8,8,8,8,8,8,8 }; void goNow(int go, int *kx, int *ky ) { int x = *kx; int y = *ky; if( go == 1) y--; else if( go == 2) {y--; x++;} else if( go == 3) {x++;} else if( go == 4) {x++; y++;} else if( go == 5) {y++;} else if( go == 6) {y++; x--;} else if( go == 7) {x--;} else if( go == 8) {x--; y--;} *kx = x; *ky = y; } void main () { int x, y, i = 1; int up = 0; int r_max = 0; int kx = 0, ky = 0; int r = 0; int go = 0; // все шаги int xs[1000]; int xy[1000]; //препятствия int ss[161]; int xx; long j; time_t t; SetMode (0x13); srand((unsigned) time(&t) ); r = rand() % 1000000; //for(x=0; x <= 320; x += 20) drawLine1(x); //for(y=0; y <= 200; y += 20) drawLine2(y); for (xx=0; xx < 160; xx++) ss[i] = 0; xs[0] = 0; xy[0] = 0; while (kx != 15 || ky != 9) { srand(i * i * r * r); if (ky == 0 && kx == 0) { up = 2; r_max = 3; } else if (ky == 0 && kx == 15) { up = 4; r_max = 2; } else if (ky == 9 && kx == 15) { up = 1; r_max = 2; } else { if (ky == 0) {up = 2; r_max = 4;} else if (kx == 0) {up = 1; r_max = 4;} else if (kx == 15) {up = 4; r_max = 2;} else if (ky == 9) {up = 0; r_max = 3;} else { up = 1; r_max = 5;} } go = (rand() % (r_max - 1) ) + up + 1; goNow( go, &kx, &ky ); xs[i] = kx; xy[i] = ky; ss[ky*16+kx] = 1; i++; } for (xx=0; xx < 160; xx++) { if (ss[xx] == 0) { srand(r * r * xx * xx); go = rand() % 5; if (go > 1) drawObstacle( (xx % 16) * 20, (xx / 16) * 20, obstacle); } } for(xx = 0 ; xx < i; xx++) { drawBody( xs[xx]*20, xy[xx]*20, robot); for (j = 0; j < 200000000; j++) {} clearBody(xs[xx]*20, xy[xx]*20); } SetMode(3); } |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
проверти,файлы,паскаль!! | DjDeniels-61 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 01.07.2009 18:36 |
Подскажите тему для моделирования | Кирилл13 | Помощь студентам | 1 | 14.02.2009 21:10 |
Проверти код! на паскале! Спасибо! | Impulsive | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 10.03.2008 21:54 |