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

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

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

Post by Tantrixx » Thu Apr 20, 2017 4:50 am

Спасибо. Буду разбираться.
У меня появились мысли, как сделать с массивом поле, сегодня допишу и выложу. Даже если не получится :) потому что иначе если своей головой не пойму, так и буду чайником :(
У меня такая странность с Бейсиком, размер экрана 320х524 хотя у меня сейчас 6s а был 5 ??? У них одинаковый размер экрана? Сомневаюсь. Может нужно перезагрузить Бейсик ? Я восстанавливал его с 5 через Айтюнс.

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

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

Post by Tantrixx » Thu Apr 20, 2017 11:35 am

Как интересно получается. Вроде понимаю.
Не понял этот цикл
FOR i=1 TO 15
IF i=8 THEN CONTINUE
IF i=9 THEN n-=1
n+=1
Для чего цикл, я понимаю, я не понял действие continue. То есть когда цикл дошёл до 8, он начинается с начала? А как он до 9 дойдёт и до 15?
С ними экспериментировал, сдвигалось поле в середине и цифры.

А ещё не совсем понял :
mas(4,10)=100 ! mas(6,4)=100 И др.
Это для Д - отмечено координатами, а сто это для if...then??? Если не равняется 100(т.е. этим координатам, то рисуем поле и нумеруем, если равняется, то рисуем Д боковые клетки?

User avatar
Фант
Posts: 1352
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 Фант » Thu Apr 20, 2017 12:37 pm

Tantrixx wrote:
Thu Apr 20, 2017 11:35 am
Как интересно получается. Вроде понимаю.
Не понял этот цикл
FOR i=1 TO 15
IF i=8 THEN CONTINUE
IF i=9 THEN n-=1
n+=1
Для чего цикл, я понимаю, я не понял действие continue. То есть когда цикл дошёл до 8, он начинается с начала? А как он до 9 дойдёт и до 15?
С ними экспериментировал, сдвигалось поле в середине и цифры.

А ещё не совсем понял :
mas(4,10)=100 ! mas(6,4)=100 И др.
Это для Д - отмечено координатами, а сто это для if...then??? Если не равняется 100(т.е. этим координатам, то рисуем поле и нумеруем, если равняется, то рисуем Д боковые клетки?
1. Я таким замысловатым циклом присвоил ячейкам массива значения соответствующие твоему игровому полю.
2. Я прогоняю нужные вертикали и горизонтали массива(те в которых надо указать значения от 1 до 13). N+=1- переменная n изменяется на каждый виток цикла на 1 единичку. Если i=8(у тебя это пустая центральная горизонталь и вертикаль) включается команда continue, которая перекидывает цикл на следующий виток,тоесть пропускаются все вычисления и цикл продолжается уже с i=9 и идет до окончания до 15.
3. На i=9 у тебя идет повтор числа что и на i=7, поэтому я понижаю переменную n на 1 и потом сразу опять прибавляю единичку)
4. Ячейкам массива я присваиваю 100-таким образом указываю где находится дом. Этим ячейкам надо присвоить цифровые значения, так как массив у тебя задан числовой а не строковый. Если мы присвоили этим клеткам букву Д, то считывалось бы с этой ячейки-0, но ноль у нас в массиве присвоен всем незадействованным ячейкам. это потом понадобится как я думаю для поиска пути к дому. Так как эти ячейки у тебя содержат букву Д на игровом поле(тоесть строковую переменную) я сделал условие, что для ячейки со значением 100-мы рисуем букву "Д".

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

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

Post by Tantrixx » Thu Apr 20, 2017 7:27 pm

Спасибо Фант. Я почти разобрался с массивом :))
Даже по своему через data прописал значения в массив и по твоему примеру вывел уже окончательное игровое поле.

Code: Select all

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)

'присваиваем массиву значения игрового поля
FOR i=1 TO 15
FOR i1=1 TO 15
DATA 0,0,0,0,0,0,1,14,13,0,0,0,0,0,0
DATA 0,0,0,0,0,0,2,21,12,0,0,0,0,0,0
DATA 0,0,0,0,0,15,3,22,11,0,0,0,0,0,0
DATA 0,0,0,0,0,0,4,23,10,15,0,0,0,0,0
DATA 0,0,0,0,0,0,5,24,9,0,0,0,0,0,0
DATA 0,0,0,15,0,0,6,25,8,0,0,0,15,0,0
DATA 13,12,11,10,9,8,7,0,7,6,5,4,3,2,1
DATA 14,21,22,23,24,25,0,0,0,25,24,23,22,21,14
DATA 1,2,3,4,5,6,7,0,7,8,9,10,11,12,13
DATA 0,0,15,0,0,0,8,25,6,0,0,15,0,0,0
DATA 0,0,0,0,0,0,9,24,5,0,0,0,0,0,0
DATA 0,0,0,0,0,15,10,23,4,0,0,0,0,0,0
DATA 0,0,0,0,0,0,11,22,3,15,0,0,0,0,0
DATA 0,0,0,0,0,0,12,21,2,0,0,0,0,0,0
DATA 0,0,0,0,0,0,13,14,1,0,0,0,0,0,0

READ mas(i1,i)

NEXT i1
NEXT i

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(i1,i)<>15 THEN ! FILL COLOR .4,.4,.4 ! k$=mas(i1,i) ! ELSE ! k$="Д" ! FILL COLOR 1,0,0 ! ENDIF

IF mas(i1,i)=21 THEN ! k$="I" ! ENDIF

IF mas(i1,i)=22 THEN ! k$="II" ! ENDIF

IF mas(i1,i)=23 THEN ! k$="III" ! ENDIF

IF mas(i1,i)=24 THEN ! k$="IV" ! ENDIF

IF mas(i1,i)=25 THEN ! k$="V" ! ENDIF

IF mas(i1,i)>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


/*IF mas(i1,i)=0 THEN ! k$=mas(i1,i)
DRAW COLOR 1,0,0
DRAW TEXT k$ AT gor(i1),ver(i)
ENDIF */

NEXT i1
NEXT i

FILL ALPHA 1
REFRESH


Теперь значения, равные выбросу кубика буду пробовать продвигать по полю. Выложу, что получится в программах на форуме, но чувствую, ещё к тебе обращусь :)))

User avatar
Фант
Posts: 1352
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 Фант » Thu Apr 20, 2017 8:41 pm

Ну нормуль :!:

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

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

Post by Tantrixx » Sat Apr 22, 2017 10:38 am

https://www.dropbox.com/sh/m4qoxwln08gt ... VjtSa?dl=0

Это то, что у меня получилось. А точнее не получилось.
Там должно быть так, когда выпадет любой дубль, одна из 5 фишек встаёт на поле. При следующем броске отмечается поле, куда можно поставить фишку.
При следующем дубле должен подключиться один из вариантов на поле, плюс вариант выставить фишку к полю. Для первой актуальна сумма двух кубиков, но если фишек больше одной на поле, то для каждой появляется один из трёх вариантов хода. При нажатии на поле, фишка перемешается на отмеченный участок. Плюс если ход выпадает на поле соседствующее с домиком, можно вместо поля пойти в дом. Например поле 3 выпало, которое соседствует с домиком, вместо поля 3 идёшь в домик. Ещё броски кубика поочереди для каждого игрока как то отмечать. Плюс фишку соперника срубить нужно обязательно, если она впереди. Через неё ходить нельзя. Срубленную фишку можно выкупить дублем, который ты даришь игроку, у которого фишку выкупаешь. Фишка, находящаяся в домике не рубится и мимо неё можно пройти. По окончании круга нужно завести фишки на римские цифры.
Думал просто будет, оказалось ещё на этапе рисования не смог ничего без массива сделать. :(((

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

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

Post by Tantrixx » Tue Apr 25, 2017 2:18 pm

Это пока что всё, что я смог сделать с передвижением. Почему-то при дубле 1 или 2 появляются сразу по мимо фишки метки для передвижения. С двух до семи перемещается, а если больше семи, нет 😳

Code: Select all

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


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

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

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


'создаем спрайт хода
SPRITE 2 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

SPRITE 2 COPY 4
SPRITE 4 COPY 5

'спрайт фишки
SPRITE 3 BEGIN st,st
FILL COLOR 0,0,1
FILL ALPHA 0.6
FILL CIRCLE st/2,st/2 SIZE st/2-6
SPRITE END
SPRITE 3 COPY 6
SPRITE 6 SHOW
SPRITE 6 ALPHA 0


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

'присваиваем массиву значения игрового поля
FOR i=1 TO 15
FOR i1=1 TO 15
DATA 0,0,0,0,0,0,1,14,13,0,0,0,0,0,0
DATA 0,0,0,0,0,0,2,21,12,0,0,0,0,0,0
DATA 0,0,0,0,0,15,3,22,11,0,0,0,0,0,0
DATA 0,0,0,0,0,0,4,23,10,15,0,0,0,0,0
DATA 0,0,0,0,0,0,5,24,9,0,0,0,0,0,0
DATA 0,0,0,15,0,0,6,25,8,0,0,0,15,0,0
DATA 13,12,11,10,9,8,7,0,7,6,5,4,3,2,1
DATA 14,21,22,23,24,25,0,0,0,25,24,23,22,21,14
DATA 1,2,3,4,5,6,7,0,7,8,9,10,11,12,13
DATA 0,0,15,0,0,0,8,25,6,0,0,15,0,0,0
DATA 0,0,0,0,0,0,9,24,5,0,0,0,0,0,0
DATA 0,0,0,0,0,15,10,23,4,0,0,0,0,0,0
DATA 0,0,0,0,0,0,11,22,3,15,0,0,0,0,0
DATA 0,0,0,0,0,0,12,21,2,0,0,0,0,0,0
DATA 0,0,0,0,0,0,13,14,1,0,0,0,0,0,0

READ mas(i1,i)

NEXT i1
NEXT i

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(i1,i)<>15 THEN ! FILL COLOR .4,.4,.4 ! k$=mas(i1,i) ! ELSE ! k$="Д" ! FILL COLOR 1,0,0 ! ENDIF


IF mas(i1,i)=21 THEN ! FILL COLOR .4,0,.4 !k$="I" ! ENDIF

IF mas(i1,i)=22 THEN ! FILL COLOR .4,0,.4 ! k$="II" ! ENDIF

IF mas(i1,i)=23 THEN ! FILL COLOR .4,0,.4 !k$="III" ! ENDIF

IF mas(i1,i)=24 THEN ! FILL COLOR .4,0,.4 ! k$="IV" ! ENDIF

IF mas(i1,i)=25 THEN ! FILL COLOR .4,0,.4 !  k$="V" ! ENDIF

IF mas(i1,i)>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 3 AT gor(10),ver(15)



'главный цикл касания клеток поля
/*LOOP:
GET TOUCH 0 AS x,y
SLOWDOWN
FOR i=1 TO 15
FOR i1=1 TO 15
IF mas(i1,i)=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 2 AT gor(i1),ver(i)
NEXT i1
NEXT i
GOTO LOOP
*/



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

SPRITE 0 AT maxx/2-st,maxy-st*2 SCALE s 
SPRITE 0 SHOW 


GET SPRITE 1 SIZE w,h
SPRITE 1 AT maxx/2+st,maxy-st*2 SCALE s
SPRITE 1 SHOW 

4
GET TOUCH 0 AS h,w
SPRITE 6 AT h,w

/*IF SPRITE_HIT ("1",h,w)=1 OR SPRITE_HIT ("0",h,w)=1 THEN */

IF SPRITES_COLLIDE ("6","1") OR SPRITES_COLLIDE ("6","0") THEN

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 ! fd$=fd
ff=df+fd
'ff=ff-1
df-=1
fd-=1
ss=0
GRAPHICS CLEAR 1,1,1
DRAW COLOR 0,0,0
DRAW TEXT df$ AT 10,10
DRAW TEXT fd$ AT 50,10

'устанавливаем фишку при дубле
IF df$=fd$ THEN
SPRITE 3 SHOW
ENDIF

IF SPRITE_VISIBLE ("3")=1 THEN

SPRITE 2 AT gor(9),ver(15-df)
SPRITE 4 AT gor(9),ver(15-fd)

IF ff>7 THEN

ss=ff-7
fs=9+ss
sf=9
SPRITE 5 AT gor(fs),ver(sf)

ELSE
fs=9
sf=16-ff
SPRITE 5 AT gor(fs),ver(sf)
GET SPRITE 5 POS x,y

SPRITE 2 SHOW
SPRITE 4 SHOW
SPRITE 5 SHOW

ENDIF
ENDIF
ENDIF

IF SPRITE_VISIBLE ("5")=1 THEN 
GOSUB 10
ENDIF

GOTO 4

10
IF SPRITES_COLLIDE ("6","5")=1 THEN
SPRITE 3 HIDE
SPRITE 5 HIDE
SPRITE 2 HIDE
SPRITE 4 HIDE

SPRITE 3 AT x,y
SPRITE 3 SHOW
ENDIF
RETURN


Post Reply