![]() |
![]() |
Олежечег(быв. Олежик) |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 24 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Всем привет...
В институте курсовой работой будет игра. Я предложил свой варант игры....и преподы дали мне согласие. Игра будет реализовывать перемещение мячиков( 3 штуки ) по доске 3х3..( т.е. 9 сегментов )..... ОПИСАНИЕ. 1.на поле 3х3 расположены 3 шарика разного цвета.... - СИНИЙ - КРАСНЫЙ - ЗЕЛЁНЫЙ 2.на поле 3х3 есть 3 сегмента разного цвета... - СИНИЙ - КРАСНЫЙ - ЗЕЛЁНЫЙ 3. КРАСНЫЙ шарик расположен на ЗЁЛЁНОМ сегменте..... СИНИЙ шарик расположен на СИНЕМ сегменте(т.е. на своём месте он находится)............ ЗЕЛЁНЫЙ шарик расположен на КРАСНОМ сегменте......... 3.Их месторасположение вы увидите на картинках, скачав предварительно АРХИВ с этими картинками..... ![]() ( В архиве содержатся 6 картинок, последовательностью от 1 до 6 ) 4.Представьте, что это как доска, которую вы держите в руках....и при наклоне ВПЕРЁД( а на экране вверх ) перемещаются все шарики ВПЕРЁД( Если , конечно, перед этим шариком нет препятствия )... 5.На поле расположены несколько стенок, через которые шарики перекатиться не могут ЗАДАЧА ( В чём же заключается победа игры) Надо, путём совместного передвигания шариков, поставить каждый шарик на свой сегмент.... Хотелось бы услышать ваши предложения...... А сделать я бы хотел её совместно с вами.... Меню хотелось бы найти на вашем форуме (ЕДИНСТВЕННЫЙ МИНУС....модуль ГРАФ будем тока проходить в инсте в этот понедельник, поэтому особо незнаю, как там что =) ) Сообщение отредактировано: Олежечег(быв. Олежик) - 15.04.2007 18:08 |
![]() ![]() |
Олежечег(быв. Олежик) |
![]() ![]()
Сообщение
#2
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 24 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
LAPP...
Посмотри пожалуйста.... Да и все.. посмотрите это пожалуйста.... )) Я сделал реализацию своей игры... Впринципе работает.. Но вот в чём глюк.. в некоторых моментах Шарик двигаться не хочет..... Или наоборот.. исчезает.. в основном исчезает на синей позиции....... Т.е. на синем квадратике.... Посмотрите пожалуйста........ Заранее скажу.. В процедуре драг...... На каждую клавишу ставлю проверку... Конечно длинная... но как смог.. Вот.. ))) ![]() Код Program shar; uses crt,graph; type PCircle = ^TCircle; Tcircle = object x,y,Radius,rradius : integer; color:byte; visible:boolean; Constructor Init(ix,iy:integer; iRadius:integer; icolor: byte); procedure Show;virtual; procedure hide; virtual; procedure drag(step:integer;ch:char); procedure MoveTo(xnew,ynew:integer); function isvisible:boolean; end; var driver,i,mode,y,x:integer; p1,p2,p3:pcircle; Ch,Q:char; procedure igrpole; begin setbkcolor(black); setcolor(darkgray); setfillstyle(solidfill,4); bar(120,6,276,162); setfillstyle(solidfill,15); bar(276,6,432,162); setfillstyle(solidfill,15); bar(432,6,588,162); setfillstyle(solidfill,1); bar(276,162,432,318); setfillstyle(solidfill,15); bar(120,162,276,318); setfillstyle(solidfill,15); bar(432,162,588,318); setfillstyle(solidfill,2); bar(432,318,588,474); setfillstyle(solidfill,15); bar(120,318,276,474); setfillstyle(solidfill,15); bar(276,318,432,474); for i:=157 to 167 do line(120,i,276,i); for i:=427 to 437 do line(i,6,i,162); for i:=313 to 323 do line(120,i,432,i); line(120,6,588,6); line(120,6,120,474); line(120,474,588,474); line(588,6,588,474); line(276,6,276,474); line(432,6,432,474); line(120,162,588,162); line(120,318,588,318); end; constructor Tcircle.init; begin x:=ix; y:=iy; radius:=iradius; color:=icolor; visible:=false; end; function Tcircle.IsVisible; begin IsVisible:=visible; end; procedure Tcircle.show; var tempcolor:byte; begin tempcolor:=getcolor; setcolor(color); setfillstyle(solidfill,color); fillellipse(x,y,radius,radius); visible:=true; setcolor(tempcolor); end; procedure Tcircle.Hide; var tempColor:byte; begin tempColor:=color; color:=getpixel(x+radius+5,y+radius+5); setfillstyle(solidfill,color); show; visible:=false; color:=TempColor; end; procedure Tcircle.Drag(Step:integer;ch:char); const centr1x=198; centr2x=354; centr3x=510; centr1y=84; centr2y=240; centr3y=396; begin Case Ord(Ch) of 72:if (x<>198) and (y<>84) and ((x<>354) or (y<>396)) and (((p1^.x<>centr2x) or (p1^.y<>centr1y)) or {Ќ з «® Їа®ўҐаЄЁ Єа б®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 354} ((p2^.x<>centr2x) or (p2^.y<>centr2y))) and (((p1^.x<>centr2x) or (p1^.y<>centr2y)) or ((p2^.x<>centr2x) or (p2^.y<>centr1y))) and {Љ®Ґж Їа®ўҐаЄЁ Єа б®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 354} (((p1^.x<>centr3x) or (p1^.y<>centr1y)) or {Ќ з «® Їа®ўҐаЄЁ Єа б®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 510} ((p2^.x<>centr3x) or (p2^.y<>centr2y))) and (((p1^.x<>centr3x) or (p1^.y<>centr2y)) or ((p2^.x<>centr3x) or (p2^.y<>centr1y))) and {Љ®Ґж Їа®ўҐаЄЁ Єа б®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 510} (((p1^.x<>centr2x) or (p1^.y<>centr1y)) or {Ќ з «® Їа®ўҐаЄЁ Єа б®Ј® Ё §Ґ«Ґ®Ј® и аЁЄ Ї®§ЁжЁЁ 354} ((p3^.x<>centr2x) or (p3^.y<>centr2y))) and (((p1^.x<>centr2x) or (p1^.y<>centr2y)) or ((p3^.x<>centr2x) or (p3^.y<>centr1y))) and {Љ®Ґж Їа®ўҐаЄЁ Єа б®Ј® Ё §Ґ«Ґ®Ј® и аЁЄ Ї®§ЁжЁЁ 354} (((p1^.x<>centr3x) or (p1^.y<>centr1y)) or {Ќ з «® Їа®ўҐаЄЁ Єа б®Ј® Ё §Ґ«Ґ®Ј® и аЁЄ Ї®§ЁжЁЁ 510} ((p3^.x<>centr3x) or (p3^.y<>centr2y))) and (((p1^.x<>centr3x) or (p1^.y<>centr2y)) or ((p3^.x<>centr3x) or (p3^.y<>centr1y))) and {Љ®Ґж Їа®ўҐаЄЁ Єа б®Ј® Ё §Ґ«Ґ®Ј® и аЁЄ Ї®§ЁжЁЁ 510} (((p3^.x<>centr2x) or (p3^.y<>centr1y)) or {Ќ з «® Їа®ўҐаЄЁ §Ґ«Ґ®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 354} ((p2^.x<>centr2x) or (p2^.y<>centr2y))) and (((p3^.x<>centr2x) or (p3^.y<>centr2y)) or ((p2^.x<>centr2x) or (p2^.y<>centr1y))) and {Љ®Ґж Їа®ўҐаЄЁ §Ґ«Ґ®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 354} (((p3^.x<>centr3x) or (p3^.y<>centr1y)) or {Ќ з «® Їа®ўҐаЄЁ §Ґ«Ґ®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 510} ((p2^.x<>centr3x) or (p2^.y<>centr2y))) and (((p3^.x<>centr3x) or (p3^.y<>centr2y)) or ((p2^.x<>centr3x) or (p2^.y<>centr1y))) then {Љ®Ґж Їа®ўҐаЄЁ §Ґ«Ґ®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 510} MoveTo(x, y-Step); {Up} 75:if (x<>198) and ((x<>510) or (y<>84)) and (((p1^.x<>centr1x) or (p1^.y<>centr1y)) or {na4alo proverki 2-h sharikov na pozicii 354} ((p2^.x<>centr2x) or (p2^.y<>centr1y))) and (((p1^.x<>centr2x) or (p1^.y<>centr1y)) or ((p2^.x<>centr1x) or (p2^.y<>centr1y))) and {konec proverki 2-h sharikov na pozicii 354} (((p1^.x<>centr1x) or (p1^.y<>centr2y)) or {na4alo proverki 2-h sharikov na pozicii 550} ((p2^.x<>centr2x) or (p2^.y<>centr2y))) and (((p1^.x<>centr2x) or (p1^.y<>centr2y)) or ((p2^.x<>centr1x) or (p2^.y<>centr2y))) and {konec proverki 2-h sharikov na pozicii 550} (((p1^.x<>centr1x) or (p1^.y<>centr3y)) or {na4alo proverki 2-h sharikov na pozicii 354} ((p2^.x<>centr2x) or (p2^.y<>centr3y))) and (((p1^.x<>centr2x) or (p1^.y<>centr3y)) or ((p2^.x<>centr1x) or (p2^.y<>centr3y))) and (((p1^.x<>centr1x) or (p1^.y<>centr1y)) or {na4alo proverki 2-h sharikov na pozicii 354} ((p3^.x<>centr2x) or (p3^.y<>centr1y))) and (((p1^.x<>centr2x) or (p1^.y<>centr1y)) or ((p3^.x<>centr1x) or (p3^.y<>centr1y))) and {konec proverki 2-h sharikov na pozicii 354} (((p1^.x<>centr1x) or (p1^.y<>centr2y)) or {na4alo proverki 2-h sharikov na pozicii 550} ((p3^.x<>centr2x) or (p3^.y<>centr2y))) and (((p1^.x<>centr2x) or (p1^.y<>centr2y)) or ((p3^.x<>centr1x) or (p3^.y<>centr2y))) and (((p1^.x<>centr1x) or (p1^.y<>centr3y)) or {na4alo proverki 2-h sharikov na pozicii 354} ((p3^.x<>centr2x) or (p2^.y<>centr3y))) and (((p1^.x<>centr2x) or (p1^.y<>centr3y)) or ((p3^.x<>centr1x) or (p2^.y<>centr3y))) and (((p3^.x<>centr1x) or (p3^.y<>centr1y)) or {na4alo proverki 2-h sharikov na pozicii 354} ((p2^.x<>centr2x) or (p2^.y<>centr1y))) and (((p3^.x<>centr2x) or (p3^.y<>centr1y)) or ((p2^.x<>centr1x) or (p2^.y<>centr1y))) and {konec proverki 2-h sharikov na pozicii 354} (((p3^.x<>centr1x) or (p3^.y<>centr2y)) or {na4alo proverki 2-h sharikov na pozicii 550} ((p2^.x<>centr2x) or (p2^.y<>centr2y))) and (((p3^.x<>centr2x) or (p3^.y<>centr2y)) or ((p2^.x<>centr1x) or (p2^.y<>centr2y))) and (((p3^.x<>centr1x) or (p1^.y<>centr3y)) or {na4alo proverki 2-h sharikov na pozicii 354} ((p2^.x<>centr2x) or (p2^.y<>centr3y))) and (((p3^.x<>centr2x) or (p1^.y<>centr3y)) or ((p2^.x<>centr1x) or (p2^.y<>centr3y))) then {konec proverki 2-h sharikov na pozicii 354} MoveTo(x-Step, y); {Left} 77:if (x<>510) and ((x<>354) or (y<>84)) and (((p1^.x<>centr1x) or (p1^.y<>centr1y)) or {na4alo proverki 2-h sharikov na pozicii 354} ((p2^.x<>centr2x) or (p2^.y<>centr1y))) and (((p1^.x<>centr2x) or (p1^.y<>centr1y)) or ((p2^.x<>centr1x) or (p2^.y<>centr1y))) and {konec proverki 2-h sharikov na pozicii 354} (((p1^.x<>centr3x) or (p1^.y<>centr2y)) or {na4alo proverki 2-h sharikov na pozicii 550} ((p2^.x<>centr2x) or (p2^.y<>centr2y))) and (((p1^.x<>centr2x) or (p1^.y<>centr2y)) or ((p2^.x<>centr3x) or (p2^.y<>centr2y))) and {konec proverki 2-h sharikov na pozicii 550} (((p1^.x<>centr3x) or (p1^.y<>centr3y)) or {na4alo proverki 2-h sharikov na pozicii 354} ((p2^.x<>centr2x) or (p2^.y<>centr3y))) and (((p1^.x<>centr2x) or (p1^.y<>centr3y)) or ((p2^.x<>centr3x) or (p2^.y<>centr3y))) and (((p1^.x<>centr1x) or (p1^.y<>centr1y)) or {na4alo proverki 2-h sharikov na pozicii 354} ((p3^.x<>centr2x) or (p3^.y<>centr1y))) and (((p1^.x<>centr2x) or (p1^.y<>centr1y)) or ((p3^.x<>centr1x) or (p3^.y<>centr1y))) and {konec proverki 2-h sharikov na pozicii 354} (((p1^.x<>centr3x) or (p1^.y<>centr2y)) or {na4alo proverki 2-h sharikov na pozicii 550} ((p3^.x<>centr2x) or (p3^.y<>centr2y))) and (((p1^.x<>centr2x) or (p1^.y<>centr2y)) or ((p3^.x<>centr3x) or (p3^.y<>centr2y))) and (((p1^.x<>centr3x) or (p1^.y<>centr3y)) or {na4alo proverki 2-h sharikov na pozicii 354} ((p3^.x<>centr2x) or (p2^.y<>centr3y))) and (((p1^.x<>centr2x) or (p1^.y<>centr3y)) or ((p3^.x<>centr3x) or (p2^.y<>centr3y))) and (((p3^.x<>centr1x) or (p3^.y<>centr1y)) or {na4alo proverki 2-h sharikov na pozicii 354} ((p2^.x<>centr2x) or (p2^.y<>centr1y))) and (((p3^.x<>centr2x) or (p3^.y<>centr1y)) or ((p2^.x<>centr1x) or (p2^.y<>centr1y))) and {konec proverki 2-h sharikov na pozicii 354} (((p3^.x<>centr3x) or (p3^.y<>centr2y)) or {na4alo proverki 2-h sharikov na pozicii 550} ((p2^.x<>centr2x) or (p2^.y<>centr2y))) and (((p3^.x<>centr2x) or (p3^.y<>centr2y)) or ((p2^.x<>centr3x) or (p2^.y<>centr2y))) and (((p3^.x<>centr3x) or (p1^.y<>centr3y)) or {na4alo proverki 2-h sharikov na pozicii 354} ((p2^.x<>centr2x) or (p2^.y<>centr3y))) and (((p3^.x<>centr2x) or (p1^.y<>centr3y)) or ((p2^.x<>centr3x) or (p2^.y<>centr3y))) then MoveTo(x+Step, y); {Right} 80:if (x<>198) and (y<>396) and ((x<>354) or (y<>240)) and (((p1^.x<>centr2x) or (p1^.y<>centr1y)) or {Ќ з «® Їа®ўҐаЄЁ Єа б®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 354} ((p2^.x<>centr2x) or (p2^.y<>centr2y))) and (((p1^.x<>centr2x) or (p1^.y<>centr2y)) or ((p2^.x<>centr2x) or (p2^.y<>centr1y))) and {Љ®Ґж Їа®ўҐаЄЁ Єа б®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 354} (((p1^.x<>centr3x) or (p1^.y<>centr3y)) or {Ќ з «® Їа®ўҐаЄЁ Єа б®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 510} ((p2^.x<>centr3x) or (p2^.y<>centr2y))) and (((p1^.x<>centr3x) or (p1^.y<>centr2y)) or ((p2^.x<>centr3x) or (p2^.y<>centr3y))) and {Љ®Ґж Їа®ўҐаЄЁ Єа б®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 510} (((p1^.x<>centr2x) or (p1^.y<>centr1y)) or {Ќ з «® Їа®ўҐаЄЁ Єа б®Ј® Ё §Ґ«Ґ®Ј® и аЁЄ Ї®§ЁжЁЁ 354} ((p3^.x<>centr2x) or (p3^.y<>centr2y))) and (((p1^.x<>centr2x) or (p1^.y<>centr2y)) or ((p3^.x<>centr2x) or (p3^.y<>centr1y))) and {Љ®Ґж Їа®ўҐаЄЁ Єа б®Ј® Ё §Ґ«Ґ®Ј® и аЁЄ Ї®§ЁжЁЁ 354} (((p1^.x<>centr3x) or (p1^.y<>centr3y)) or {Ќ з «® Їа®ўҐаЄЁ Єа б®Ј® Ё §Ґ«Ґ®Ј® и аЁЄ Ї®§ЁжЁЁ 510} ((p3^.x<>centr3x) or (p3^.y<>centr2y))) and (((p1^.x<>centr3x) or (p1^.y<>centr2y)) or ((p3^.x<>centr3x) or (p3^.y<>centr3y))) and {Љ®Ґж Їа®ўҐаЄЁ Єа б®Ј® Ё §Ґ«Ґ®Ј® и аЁЄ Ї®§ЁжЁЁ 510} (((p3^.x<>centr2x) or (p3^.y<>centr1y)) or {Ќ з «® Їа®ўҐаЄЁ §Ґ«Ґ®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 354} ((p2^.x<>centr2x) or (p2^.y<>centr2y))) and (((p3^.x<>centr2x) or (p3^.y<>centr2y)) or ((p2^.x<>centr2x) or (p2^.y<>centr1y))) and {Љ®Ґж Їа®ўҐаЄЁ §Ґ«Ґ®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 354} (((p3^.x<>centr3x) or (p3^.y<>centr3y)) or {Ќ з «® Їа®ўҐаЄЁ §Ґ«Ґ®Ј® Ё бЁҐЈ® и аЁЄ Ї®§ЁжЁЁ 510} ((p2^.x<>centr3x) or (p2^.y<>centr2y))) and (((p3^.x<>centr3x) or (p3^.y<>centr2y)) or ((p2^.x<>centr3x) or (p2^.y<>centr3y))) then MoveTo(x, y+Step); {Down} end; { case} end; procedure Tcircle.MoveTo(xnew,ynew:integer); var Flag:boolean; begin Flag:=IsVisible; if Flag then Hide; x:=xnew; y:=ynew; if Flag then Show; end; begin driver:=vga; mode:=2; initgraph(driver,mode,'c:\bp\bgi'); igrpole; new(p1,init(198,84,25,10)); new(p2,init(354,240,25,9)); new(p3,init(510,396,25,12)); p1^.show; p2^.show; p3^.show; repeat ch:=readkey; if ord(ch)=0 then ch:=readkey; p1^.drag(156,ch); p2^.drag(156,ch); p3^.drag(156,ch); until (((p1^.x=510) and (p1^.y=396)) and ((p2^.x=354) and (p2^.y=240)) and ((p3^.x=198) and (p3^.y=84))) or (ord(ch)=13);; closegraph; end. Вот сама прога Попробуйте её....ПЛИЗ!!! А то не хочется проблем потом от преподователя!!! ))) ![]() |
Олежечег(быв. Олежик) |
![]() ![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 24 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Я отладил её..а он пишет что очень большая строка..т.е. цикл ИФ..
Как мне сделать его меньше? |
![]() ![]() |
![]() |
Текстовая версия | 14.07.2025 23:23 |