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

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:
Sun Apr 09, 2017 1:02 pm
Спасибо.
Я на англоязычном нашёл пример, по его подобию сделал, но вроде перемудрил.
Можно проще сделать? Я принцип не совсем понял. Но конечная фигура у меня получилась. А через data можно сделать, чтоб меньше код получился?
GRAPHICS

h=8

DIM x1(h+1), y1(h+1), x2(h+1), y2(h+1), x3(h+1), y3(h+1), x4(h+1), y4(h+1), x5(h+1), y5(h+1), x6(h+1), y6(h+1), x7(h+1), y7(h+1), x8(h+1), y8(h+1)
FOR i=1 TO 8
trix(0)=x1(i)+20
triy(0)=y1(i)+20
trix(1)=x2(i)+40
triy(1)=y2(i)+20
trix(2)=x3(i)+45
triy(2)=y3(i)+25
trix(3)=x4(i)+45
triy(3)=y4(i)+45
trix(4)=x5(i)+40
triy(4)=y5(i)+50
trix(5)=x6(i)+20
triy(5)=y6(i)+50
trix(6)=x7(i)+15
triy(6)=y7(i)+45
trix(7)=x8(i)+15
triy(7)=y8(i)+25
DRAW COLOR 1,1,1
DRAW POLY trix,triy COUNT 8
NEXT i
Привет! Да много лишнего.
1.Командой dim ты определил размерность для 16(!!!)массивов, которые вообще не нужны. В цикле ты подставляешь нулевые значения этих массивов и прибавляешь к ним фиксированные значения. командой dim тебе наверное надо определить размерность для двух реально использованных массивов trix() ,triy(), но и команду dim в данном случае использовать не надо, так как массивы размерностью 10 создаются автоматически и для твоего восьмиугольника этого хватит. В общем с массивами ты чуть не разобрался)
2. что касается фиксированных значений, то их конечно проще вставить в data и в цикле считывать сразу парами командой : read trix(i),triy(i)
3. Команда draw poly ... у тебя находится в цикле. Вот представь что 8 раз эта команда исполняется!
4. Ну и еще раз о твоем цикле. Внимательно подумай что ты там выполняешь?)) у тебя каждый виток цикла исполняется ровно одно и тоже! То есть ты восемь раз подряд присваиваешь для восьми точек одни и те же координаты и восемь раз рисуешь один и тот же восьмиугольник.

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

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

Post by Tantrixx »

Спасибо за подсказку. Вот так сделал, нужно что нибудь править?
GRAPHICS


FOR i=0 TO 7

DATA 20,20,40,20,45,25,45,45,40,50,20,50,15,45,15,25

READ trix(i), triy(i)
NEXT i
DRAW COLOR 1,1,1

DRAW POLY trix,triy COUNT 8

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 12, 2017 4:22 pm
Спасибо за подсказку. Вот так сделал, нужно что нибудь править?
GRAPHICS


FOR i=0 TO 7

DATA 20,20,40,20,45,25,45,45,40,50,20,50,15,45,15,25

READ trix(i), triy(i)
NEXT i
DRAW COLOR 1,1,1

DRAW POLY trix,triy COUNT 8
Все правильно. Оптимальный код.

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 Фант »

Единственное замечание: data лучше вытащить из цикла. Так будет логичнее, понятнее и красивее. В принципе data.. можно размещать в любом месте программы, команда read "сама найдет" ее и считает числа.

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:
Thu Apr 13, 2017 5:17 am
Спасибо за помощь. А с массивами у меня проблема, в самом деле не совсем понимаю. Понимаю, что создаём ячейки, где будут хранится наши данные. Это как дата, только можно в любой последовательности достать? Вроде есть образцы программ, но не понятно до конца.
Без массивов в программировании никуда. Одномерный и двумерный массивы используются очень часто. Главное понять как хранить информацию в массивах, менять ее и извлекать-это не сложно. Вот урок про массивы. http://www.kibernetik.pro/forum/viewtop ... f=32&t=688 Если будут не понятки спрашивай.

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

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

Post by Tantrixx »

Спасибо. Попробую ещё разобраться с массивами.
Теперь мне нужна помощь в следующем коде, и кажется мне, что без массива не обойтись :))) Но для начала на ошибки проверьте пожалуйста, спросить больше не у кого.
Может код упростить или усложнить нужно. Сам не знаю, как получилось. Ещё там 10 спрайтов добавится, а может даже 18.
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 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

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 Фант »

Ну пока не понятно какая задумка программы. Кстати, если хочется зафиксировать устройство в вертикальном положении, то для этого есть специальные команды. Их можно увидеть в документации в разделе РАЗНОЕ. Думаю здесь не помешала бы команда SET ORIENTATION PORTRAIT.

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

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

Post by Tantrixx »

Спасибо, я зафиксировал в портретной, но ещё не зациклил :)))
А задумка, это игровое поле из спрайтов. Просто спрайтов так много получилось, ещё 10 будет по мимо тех, которые созданы, но ещё не показал на поле. А с фишками, ещё 8. Хотел сначала просто нарисовать графикой, но не понял, как буду нахождение фишек на поле отмечать. По координатам показалось сложно для меня. По спрайтам проще :)

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

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

Post by Tantrixx »

Будет более правильным, если спрайты потом покажу, а не сразу таким циклом:

Code: Select all

for pp=1 to 74
If pp=15 then pp=pp+6
If pp=35 then pp=pp+6
If pp=55 then pp=pp+6
sprite pp show
next pp
Этот цикл работает и выводит на экран спрайты. Но почему то ругается, если я ставлю команду endif

Post Reply