Мне нужна помощь с изучением синтаксиса.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Мне нужна помощь с изучением синтаксиса.

Post by Фант »

Tantrixx wrote:
Fri Apr 14, 2017 5:38 am
Спасибо, я зафиксировал в портретной, но ещё не зациклил :)))
А задумка, это игровое поле из спрайтов. Просто спрайтов так много получилось, ещё 10 будет по мимо тех, которые созданы, но ещё не показал на поле. А с фишками, ещё 8. Хотел сначала просто нарисовать графикой, но не понял, как буду нахождение фишек на поле отмечать. По координатам показалось сложно для меня. По спрайтам проще :)
Спрайты для игрового поля наверное это не лучший вариант, хотя хозяин-барин))
Вот моя программка для крестиков и ноликов для двух человек. Посмотри может чтото тебе будет полезно здесь.

Code: Select all

'стандартный набор стартовых команд
GRAPHICS
'SET TOOLBAR OFF
GET ORIENTATION P
IF p=1 OR p=3 THEN
SET ORIENTATION PORTRAIT
ELSE
SET ORIENTATION LANDSCAPE
ENDIF

RANDOMIZE
OPTION BASE 1
OPTION ANGLE DEGREES
OPTION TEXT POS CENTRAL
OPTION SPRITE POS CENTRAL
OPTION IMAGE POS CENTRAL
SET LISTS CUSTOM
SET BUTTONS CUSTOM
OPTION SORT DESCENDING
REFRESH OFF
maxx=SCREEN_WIDTH()
maxy=SCREEN_HEIGHT()
kof=maxy/768
kof1=maxx/1024
SHADOW OFFSET 2*.kof,2*.kof

'исходные данные для начертания игрового поля
kol=3
st=.maxy/(kol+1)
otst=(maxx-maxy)/2
DIM gor(kol)
DIM ver(kol)
FOR i=1 TO kol
FOR i1=1 TO kol
gor(i1)=otst+st*i1
ver(i)=st*i
NEXT i1
NEXT i

'обнуляем массив поля и переменные для начала новой партии
10 DIM mas(kol,kol)
stoper=0
n=0

'рисуем игровое поле
GRAPHICS CLEAR 0,0,0
DRAW COLOR 1,1,1
DRAW SIZE 2*.kof
FOR i=1 TO kol
FOR i1=1 TO kol
DRAW RECT gor(i1),ver(i) SIZE st/2
NEXT i1
NEXT i
REFRESH
DRAW COLOR 0,0,0
DRAW SIZE 6*.kof

'основной цикл. определяем точки касания экрана и рисуем крестики и нолики на игровом поле
LOOP:
GET TOUCH 0 AS x,y
FOR i=1 TO kol
FOR i1=1 TO kol
      IF x>gor(i1)-st/2 AND x<gor(i1)+st/2 AND y>ver(i)-st/2 AND y<ver(i)+st/2 THEN
             IF n%2=0 THEN 
             FILL COLOR 1,.5,.5
             FILL RECT gor(i1),ver(i) SIZE st/2.1
             DRAW CIRCLE gor(i1),ver(i) SIZE st/2.5
             mas(i,i1)=1
             ELSE
             FILL COLOR .5,.5,1
             FILL RECT gor(i1),ver(i) SIZE st/2.1
             DRAW LINE gor(i1)-st/2.2,ver(i)-st/2.2 TO gor(i1)+st/2.2,ver(i)+st/2.2
             DRAW LINE gor(i1)+st/2.2,ver(i)-st/2.2 TO gor(i1)-st/2.2,ver(i)+st/2.2
             mas(i,i1)=10
             ENDIF
      REFRESH
      n+=1
      nazh
      prov
      BREAK i
      ENDIF
NEXT i1
NEXT i
IF stoper=1 THEN 10
GOTO LOOP

'функция нажатия
DEF nazh
1 GET TOUCH 0 AS x,y
SLOWDOWN
IF x>-1 THEN 1
END DEF

'проверка выигрышных позиций
DEF prov
n=0
k=0
FOR i=1 TO .kol
k+=1
n+=.mas(i,k)
NEXT i
IF n=.kol OR n=10*.kol THEN ! stopigra ! RETURN! ENDIF
n=0
k=.kol+1
FOR i=1 TO .kol
k-=1
n+=.mas(i,k)
NEXT i
IF n=.kol OR n=10*.kol THEN ! stopigra ! RETURN! ENDIF
FOR i=1 TO .kol
n=0
FOR i1=1 TO .kol
IF .mas(i,i1)=0 THEN BREAK
n+=.mas(i,i1)
IF n=.kol OR n=10*.kol THEN ! stopigra ! RETURN! ENDIF
NEXT i1
NEXT i
FOR i1=1 TO .kol
n=0
FOR i=1 TO .kol
IF .mas(i,i1)=0 THEN BREAK
n+=.mas(i,i1)
IF n=.kol OR n=10*.kol THEN ! stopigra ! RETURN! ENDIF
NEXT i
NEXT i1
IF .n=9 THEN 
.ravenstvo=1
stopigra
ENDIF
END DEF

'вывод результата игры
DEF sTOPigra
DRAW COLOR 1,1,1
IF .ravenstvo=0 THEN
IF prov.n=3 THEN DRAW TEXT "ПОБЕДА НОЛИКА!" AT .maxx/2,.st/4 ELSE DRAW TEXT "ПОБЕДА КРЕСТИКА!" AT .maxx/2,.st/4
ELSE
DRAW TEXT "НИЧЬЯ!" AT .maxx/2,.st/4
.ravenstvo=0
ENDIF
REFRESH
5
GET TOUCH 0 AS x,y
SLOWDOWN
IF x=-1 THEN 5
nazh
.stoper=1
END DEF


User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Мне нужна помощь с изучением синтаксиса.

Post by Фант »

Наверное так будет лучше выглядеть
'стандартный набор стартовых команд
GRAPHICS
'SET TOOLBAR OFF
GET ORIENTATION P
IF p=1 OR p=3 THEN
SET ORIENTATION PORTRAIT
ELSE
SET ORIENTATION LANDSCAPE
ENDIF

RANDOMIZE
OPTION BASE 1
OPTION ANGLE DEGREES
OPTION TEXT POS CENTRAL
OPTION SPRITE POS CENTRAL
OPTION IMAGE POS CENTRAL
SET LISTS CUSTOM
SET BUTTONS CUSTOM
OPTION SORT DESCENDING
REFRESH OFF
maxx=SCREEN_WIDTH()
maxy=SCREEN_HEIGHT()
kof=maxy/768
kof1=maxx/1024
SHADOW OFFSET 2*.kof,2*.kof

'исходные данные для начертания игрового поля
kol=3
st=.maxy/(kol+1)
otst=(maxx-maxy)/2
DIM gor(kol)
DIM ver(kol)
FOR i=1 TO kol
FOR i1=1 TO kol
gor(i1)=otst+st*i1
ver(i)=st*i
NEXT i1
NEXT i

'обнуляем массив поля и переменные для начала новой партии
10 DIM mas(kol,kol)
stoper=0
n=0

'рисуем игровое поле
GRAPHICS CLEAR 0,0,0
DRAW COLOR 1,1,1
DRAW SIZE 2*.kof
FOR i=1 TO kol
FOR i1=1 TO kol
DRAW RECT gor(i1),ver(i) SIZE st/2
NEXT i1
NEXT i
REFRESH
DRAW COLOR 0,0,0
DRAW SIZE 6*.kof

'основной цикл. определяем точки касания экрана и рисуем крестики и нолики на игровом поле
LOOP:
GET TOUCH 0 AS x,y
FOR i=1 TO kol
FOR i1=1 TO kol
IF x>gor(i1)-st/2 AND x<gor(i1)+st/2 AND y>ver(i)-st/2 AND y<ver(i)+st/2 THEN
IF n%2=0 THEN
FILL COLOR 1,.5,.5
FILL RECT gor(i1),ver(i) SIZE st/2.1
DRAW CIRCLE gor(i1),ver(i) SIZE st/2.5
mas(i,i1)=1
ELSE
FILL COLOR .5,.5,1
FILL RECT gor(i1),ver(i) SIZE st/2.1
DRAW LINE gor(i1)-st/2.2,ver(i)-st/2.2 TO gor(i1)+st/2.2,ver(i)+st/2.2
DRAW LINE gor(i1)+st/2.2,ver(i)-st/2.2 TO gor(i1)-st/2.2,ver(i)+st/2.2
mas(i,i1)=10
ENDIF
REFRESH
n+=1
nazh
prov
BREAK i
ENDIF
NEXT i1
NEXT i
IF stoper=1 THEN 10
GOTO LOOP

'функция нажатия
DEF nazh
1 GET TOUCH 0 AS x,y
SLOWDOWN
IF x>-1 THEN 1
END DEF

'проверка выигрышных позиций
DEF prov
n=0
k=0
FOR i=1 TO .kol
k+=1
n+=.mas(i,k)
NEXT i
IF n=.kol OR n=10*.kol THEN ! stopigra ! RETURN! ENDIF
n=0
k=.kol+1
FOR i=1 TO .kol
k-=1
n+=.mas(i,k)
NEXT i
IF n=.kol OR n=10*.kol THEN ! stopigra ! RETURN! ENDIF
FOR i=1 TO .kol
n=0
FOR i1=1 TO .kol
IF .mas(i,i1)=0 THEN BREAK
n+=.mas(i,i1)
IF n=.kol OR n=10*.kol THEN ! stopigra ! RETURN! ENDIF
NEXT i1
NEXT i
FOR i1=1 TO .kol
n=0
FOR i=1 TO .kol
IF .mas(i,i1)=0 THEN BREAK
n+=.mas(i,i1)
IF n=.kol OR n=10*.kol THEN ! stopigra ! RETURN! ENDIF
NEXT i
NEXT i1
IF .n=9 THEN
.ravenstvo=1
stopigra
ENDIF
END DEF

'вывод результата игры
DEF sTOPigra
DRAW COLOR 1,1,1
IF .ravenstvo=0 THEN
IF prov.n=3 THEN DRAW TEXT "ПОБЕДА НОЛИКА!" AT .maxx/2,.st/4 ELSE DRAW TEXT "ПОБЕДА КРЕСТИКА!" AT .maxx/2,.st/4
ELSE
DRAW TEXT "НИЧЬЯ!" AT .maxx/2,.st/4
.ravenstvo=0
ENDIF
REFRESH
5
GET TOUCH 0 AS x,y
SLOWDOWN
IF x=-1 THEN 5
nazh
.stoper=1
END DEF

Tantrixx
Posts: 119
Joined: Sun Nov 22, 2015 11:24 am
My devices: iPhone 5

Re: Мне нужна помощь с изучением синтаксиса.

Post by Tantrixx »

Спасибо. Думаю, что очень пригодится твой пример :)))
Ещё программа игральные кости есть, там тоже странно у меня окончательный результат получился :)))

Code: Select all



GRAPHICS
GRAPHICS CLEAR 1,1,1
OPTION ANGLE DEGREES
OPTION SPRITE POS CENTRAL
OPTION IMAGE POS CENTRAL
OPTION TEXT POS CENTRAL
maxx=SCREEN_WIDTH()
maxy=SCREEN_HEIGHT()

a$="kost"
MUSIC a$ LOAD "MY_System/Kost1_1.mp3"

SPRITE 0 LOAD "MY_System/Gk.png",6,1

GET SPRITE 0 SIZE w,h
s=MIN(maxx,maxy)/w/9

SPRITE 0 AT maxx/2-20,maxy/2 SCALE s 

SPRITE 0 SHOW 

SPRITE 1 LOAD "MY_System/Gk.png",6,1

GET SPRITE 1 SIZE w,h

SPRITE 1 AT maxx/2+20,maxy/2 SCALE s

SPRITE 1 SHOW 

4
GET TOUCH 0 AS h,w

IF SPRITE_HIT ("1",h,w)=1 OR SPRITE_HIT ("0",h,w)=1 THEN
GOSUB 3

ENDIF

GOTO 4

3
MUSIC a$ PLAY

1
RANDOMIZE
f=RND(5)
d=RND(5)
fd=f+1
df=d+1
PAUSE .1
SPRITE 1 FRAME fd
SPRITE 0 FRAME df
IF MUSIC_PLAYING (a$)=0 THEN GOTO 2

GOTO 1

2 
df$=df+1 ! fd$=fd+1

GRAPHICS CLEAR 1,1,1
DRAW COLOR 0,0,0
DRAW TEXT df$ AT 10,10
DRAW TEXT fd$ AT 50,10

RETURN

Attachments
Gk.png
Gk.png (27.6 KiB) Viewed 5523 times

Tantrixx
Posts: 119
Joined: Sun Nov 22, 2015 11:24 am
My devices: iPhone 5

Re: Мне нужна помощь с изучением синтаксиса.

Post by Tantrixx »

Добрый день, Фант.
Задумка моя оказалась мне ещё не по силам :)))
Пробовал с твоим примером, не получилось.
Продолжил со спрайтами экспериментировать.
Суть в том, чтобы когда кидал кости, появлялись спрайты с вариантами, куда я могу поставить фишку и при нажатии на этот спрайт, туда переходила фишка- спрайт. Пока что сделал со случайными числами и дальше 14 ходов не получилось.

Code: Select all

GRAPHICS
GRAPHICS CLEAR 1,1,1
OPTION ANGLE DEGREES
OPTION SPRITE POS CENTRAL
OPTION IMAGE POS CENTRAL
OPTION TEXT POS CENTRAL
SET ORIENTATION PORTRAIT

maxx=SCREEN_WIDTH()
maxy=SCREEN_HEIGHT()

x1=maxx/2
x=maxx/16
y=maxy/2

REM iPad - 48('1024'980 x 768) iphone - 20 ('568'524 x 320)

'Ресуем спрайты
FOR k=1 TO 14
k$=k
SPRITE k$ BEGIN x,x
DRAW COLOR 0,0,0
DRAW SIZE x/10
DRAW RECT x/2,x/2 SIZE x/2
FILL COLOR 1,1,1
FILL RECT x/2,x/2 SIZE x/2-4
DRAW FONT SIZE x-10
DRAW TEXT k$ AT x/2,x/2
SPRITE END
NEXT k

SPRITE 15 BEGIN x,x
DRAW COLOR 0,0,0
DRAW SIZE x/10
DRAW RECT x/2,x/2 SIZE x/2
FILL COLOR 1,1,1
FILL RECT x/2,x/2 SIZE x/2-4
DRAW FONT SIZE x-6
DRAW TEXT "Д" AT x/2,x/2
SPRITE END 


'спрайт дом
FOR dd=15 TO 75 STEP 20
SPRITE dd COPY dd+20
NEXT dd

FOR dd=15 TO 75 STEP 20
SPRITE dd COPY dd+1
NEXT dd

'Рисуем поле

FOR kk=1 TO 7
SPRITE kk AT kk*x,y+x
SPRITE kk SHOW
NEXT kk

FOR kk=8 TO 13
SPRITE kk AT kk*x+x*2,y+x
SPRITE kk SHOW
NEXT kk

FOR aa=1 TO 14
SPRITE aa COPY aa+20
NEXT aa


FOR kk=21 TO 27
SPRITE kk AT x1+x,(y+x*8)-x*(kk-20)
SPRITE kk SHOW
NEXT kk

FOR kk=28 TO 33
SPRITE kk AT x1+x,((y+x*8)-x*(kk-20))-x*2
SPRITE kk SHOW
NEXT kk


FOR a=1 TO 14
SPRITE a COPY a+40
NEXT a



FOR kk=41 TO 47
SPRITE kk AT (x1+x*8)-x*(kk-40),y-x
SPRITE kk SHOW
NEXT kk

FOR kk=48 TO 53
SPRITE kk AT ((x1+x*8)-x*(kk-40))-2*x,y-x
SPRITE kk SHOW
NEXT kk

FOR a1=1 TO 14
SPRITE a1 COPY a1+60
NEXT a1

FOR kk=61 TO 67
SPRITE kk AT x1-x,(y+x*(kk-60))-x*8
SPRITE kk SHOW
NEXT kk

FOR kk=68 TO 73
SPRITE kk AT x1-x,(y+x*(kk-60))-x*6
SPRITE kk SHOW
NEXT kk

' рисуем на поле 14 номер
SPRITE 14 AT x,y
SPRITE 14 SHOW


SPRITE 34 AT x*15,y
SPRITE 34 SHOW


SPRITE 54 AT x1,(y+x)-x*8
SPRITE 54 SHOW


SPRITE 74 AT x1,(y+x)+x*6
SPRITE 74 SHOW

'рисуем Дом
SPRITE 15 AT 3*x,y+2*x
SPRITE 15 SHOW

SPRITE 16 AT 4*x+x*2,y+x*4
SPRITE 16 SHOW

SPRITE 35 AT 8*x+x*2,y+x*5
SPRITE 35 SHOW

SPRITE 36 AT 12*x,y+2*x
SPRITE 36 SHOW

SPRITE 55 AT 13*x,y-2*x
SPRITE 55 SHOW

SPRITE 56 AT 8*x+x*2,y-x*4
SPRITE 56 SHOW

SPRITE 75 AT 4*x+x*2,y-x*5
SPRITE 75 SHOW

SPRITE 76 AT 4*x,y-2*x
SPRITE 76 SHOW


'спрайт точки перемещения

SPRITE 0 BEGIN x,x
FILL COLOR 1,1,0
FILL ALPHA 0.6
FILL RECT x/2,x/2 SIZE x/2-4
SPRITE END



' спрайт фишки


SPRITE 80 BEGIN x,x
FILL COLOR 0,0,1
FILL ALPHA 0.6
FILL CIRCLE x/2,x/2 SIZE x/2-6
SPRITE END


SPRITE 80 AT x1+2*x,(y+x*8)-x
SPRITE 80 SHOW

'движение

1
GET TOUCH 0 AS xx,yy
IF xx>-1 THEN 
GOSUB 2

dv$=dv
GRAPHICS CLEAR 1,1,1
 DRAW TEXT dv$ AT x,x
 ENDIF
 
 IF dv=14 THEN
 GOSUB 7
 ELSE
 IF dv<=7 THEN
 GOSUB 5
 ELSE
 GOSUB 6
 
 
 ENDIF ! ENDIF
 
GOTO 1

5
SPRITE 0 AT  x1+2*x-x,(y+x*8)-x*dv
SPRITE 0 SHOW
RETURN


6
SPRITE 0 AT  x1+(dv-5)*x-x,(y+x*8)-x*7
SPRITE 0 SHOW
RETURN 

7
SPRITE 0 AT  x1+8*x-x,(y+x*8)-x*8
SPRITE 0 SHOW
RETURN



2
RANDOMIZE
PAUSE .1
dv=RND(14)
dv=dv+1
RETURN 




User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Мне нужна помощь с изучением синтаксиса.

Post by Фант »

Я бы подумал на счет массива размером с игровое поле(у тебя вроде равносторонний квадрат). Каждой ячейке определи свои координаты(два массива одномерных координаты Х и Y)
Все пустоты-это нолики(по умолчанию при создании массива), а ячейки игрового поля заполняй цифрами в порядке клеток игрового поля.
Допустим фишка в начале стоит на стартовой клетке(ячейка с определенным значением). Кости выкидывают определенное число n. После этого начинай поиск пути-путь должен быть равен значению n. Правил я не знаю игры, поэтому в какие направления может идти фишка-столько пускай волн с поиском кратчайшего пути.

Tantrixx
Posts: 119
Joined: Sun Nov 22, 2015 11:24 am
My devices: iPhone 5

Re: Мне нужна помощь с изучением синтаксиса.

Post by Tantrixx »

Попробую с массивом :)
Поле не пойму как рисовать или значение по координатам только нужны для считывания? Как не хватает понимания :((( особенно массивов :) Попробую ещё раз :)

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Мне нужна помощь с изучением синтаксиса.

Post by Фант »

Tantrixx wrote:
Wed Apr 19, 2017 6:07 pm
Попробую с массивом :)
Поле не пойму как рисовать или значение по координатам только нужны для считывания? Как не хватает понимания :((( особенно массивов :) Попробую ещё раз :)
У тебя массив получается 15 на 15.
Dim mas(15,15)
после создания массив автоматом заполнен у тебя нолями. Теперь в этом "пустом поле" заполняй цифры в соответствии с рисунком игрового поля.
Координаты тоже dim xx(15) ! Dim yy(15)
Теперь каждой координате присвой значение (посмотри простой пример мой с крестиками ноликами как создается клетчатое поле 3 на 3. У тебя это поле 15 на 15 будет но принцип тот же самый.
Теперь делаешь цикл в цикле по координатам х и у (тоже смотри пример крестики нолики) и в соответствии с заполнением массива рисуй клетки с нужными цифрами.
Это оформление поля. Как сделаешь поле с помощью массива-дальше будем думать как "гнать" волны по массиву для поиска нужного пути :D

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Мне нужна помощь с изучением синтаксиса.

Post by Фант »

Также можншь посмотреть мою программу В Клетке. Ее открытый код есть в смарт бейсик в примерах вроде. Но там правда черт ногу сломит)) хотя вроде там все подписано. Вот там есть и поле и поиск короткого пути)

Tantrixx
Posts: 119
Joined: Sun Nov 22, 2015 11:24 am
My devices: iPhone 5

Re: Мне нужна помощь с изучением синтаксиса.

Post by Tantrixx »

Всё перепробовал, получается только квадрат 15х15
Через data массив могу заполнить, но нарисовать не понимаю как.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Мне нужна помощь с изучением синтаксиса.

Post by Фант »

Tantrixx wrote:
Wed Apr 19, 2017 8:31 pm
Всё перепробовал, получается только квадрат 15х15
Через data массив могу заполнить, но нарисовать не понимаю как.
Разбирайся-все тебе подписал. Здесь только один спрайт-фишка. Он будет занимать клетку игрового поля по касанию пальца.
GRAPHICS
OPTION BASE 1
OPTION ANGLE DEGREES
OPTION SPRITE POS CENTRAL
OPTION IMAGE POS CENTRAL
OPTION TEXT POS CENTRAL
REFRESH OFF
GET ORIENTATION P
IF p=1 OR p=3 THEN SET ORIENTATION PORTRAIT ELSE SET ORIENTATION LANDSCAPE

maxx=SCREEN_WIDTH()
maxy=SCREEN_HEIGHT()

'сторона клетки
st=MIN(maxx,maxy)/16
'коэффициент для пересчета координат при портрете или ландшафте
kofr=st*16

'создаем спрайт хода
SPRITE 1 BEGIN st,st
GRAPHICS CLEAR 1,1,0,.4
DRAW COLOR 0,0,0
DRAW RECT st/2,st/2 SIZE st/2
SPRITE END

'задаем двумерный массив игрового поля
DIM mas(15,15)
'задаем одномерные массивы координат клеток по х и у
DIM gor(15)
DIM ver(15)

'присваиваем массиву значения игрового поля
n=0
FOR i=1 TO 15
IF i=8 THEN CONTINUE
IF i=9 THEN n-=1
n+=1
mas(i,7)=n
mas(7,i)=14-n
mas(i,9)=14-n
mas(9,i)=n
NEXT i
mas(1,8)=14 ! mas(8,1)=14 ! mas(15,8)=14 ! mas(8,15)=14
mas(3,6)=100 ! mas(4,10)=100 ! mas(6,4)=100 ! mas(10,3)=100 ! mas(6,13)=100 ! mas(10,12)=100 ! mas(12,6)=100 ! mas(13,10)=100

'рисуем игровое поле
GRAPHICS CLEAR .9,.9,.9
DRAW FONT SIZE st*.7
DRAW FONT NAME "palatino"
DRAW COLOR 0,0,0
FILL ALPHA .5
FOR i=1 TO 15
FOR i1=1 TO 15
gor(i1)=(maxx-kofr)/2+st*i1
ver(i)=(maxy-kofr)/2+st*i
IF mas(i,i1)<>100 THEN ! FILL COLOR .4,.4,.4 ! k$=mas(i,i1) ! ELSE ! k$="Д" ! FILL COLOR 1,0,0 ! ENDIF
IF mas(i,i1)>0 THEN ! FILL RECT gor(i1),ver(i) SIZE st/2 ! DRAW RECT gor(i1),ver(i) SIZE st/2 ! DRAW TEXT k$ AT gor(i1),ver(i) ! ENDIF
NEXT i1
NEXT i
FILL ALPHA 1
REFRESH

'устанавливаем спрайт в начало поля
SPRITE 1 AT gor(10),ver(15)
SPRITE 1 SHOW

'главный цикл касания клеток поля
LOOP:
GET TOUCH 0 AS x,y
SLOWDOWN
FOR i=1 TO 15
FOR i1=1 TO 15
IF mas(i,i1)=0 THEN CONTINUE
'проверка касания клетки игрового поля
IF x>gor(i1)-st/2 AND x<gor(i1)+st/2 AND y>ver(i)-st/2 AND y<ver(i)+st/2 THEN SPRITE 1 AT gor(i1),ver(i)
NEXT i1
NEXT i
GOTO LOOP

Post Reply