Игра ЯЙЦА

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

И тут все логично!
У Вас в это ответвление будет забегать в цикле программа пока счет стоит 0,5,10,15 и так далее...
Принцип должен быть такой: в это ответвление программа должна заходить только один раз в данный счет. Подумайте над ключем.

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

Re: Игра ЯЙЦА

Post by Tantrixx »

Фант, я сейчас Работаю над iPad версией. Не понимаю, для чего вы пишите точку перед kof?
PRINT 20*.kof; 20*kof
Я проверил, ответ одинаковый получается.
Я так понимаю, на iPad kof будет равен единице?
Мне просто кажется, что нужно для айпад версии делать не в альбомной, как на айфон, а в книжной. Как вам кажется?

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:Фант, я сейчас Работаю над iPad версией. Не понимаю, для чего вы пишите точку перед kof?
PRINT 20*.kof; 20*kof
Я проверил, ответ одинаковый получается.
Я так понимаю, на iPad kof будет равен единице?
Мне просто кажется, что нужно для айпад версии делать не в альбомной, как на айфон, а в книжной. Как вам кажется?
1. Про точку. Точку у меня в привычке писать, даже если это как в данной программе-ничего не определяет. Прочитайте основы sB зональные переменные.
2. У меня никогда не было смартфона. Айпад я держу исключительно в ландшафте.. Может это привычка но любая игра в вертикальном положении меня очень сильно раздражает..
3. Для айпада kof равен 1 если отсутствует тулбар в программе. Размеры айпада в точках больше любого айфона, поэтому за 1 лучше держать размер айпада, так как при уменьшении любого изображения качество не изменится.

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

Re: Игра ЯЙЦА

Post by Tantrixx »

Пытаюсь адаптировать игру под iPad и сталкнулся со следующим, если maxx разделить на 768, у меня получается 0,359375.
Значит чтоб мои координаты встали на другом девайсе, мне нужно сначала мою цифру разделить на это число, а потом записать в самой программе и умножить на kof? Например с цифрой 398 получается цифра 1107,47826 мне до десятых округлять или до целых чисел? Например до 1107 если меньше 5 и до 1108, если больше 5 десятая часть? И зачем вам kof1? Я не видел, чтобы он использовался у вас в программе яйца. И про зональные переменные в описании вроде понял, а в вашем исполнении не понял :)

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

Конечно же ничего округлять не надо. Kof1 не нужен в данной игре. Я его использую редко: когда надо текстуру выровнять по ширине экрана, а не по высоте как это делает kof.
Значения на коэффициент умножайте только те, которые вы сами использовали, а не высчитанные от ширины или высоты экрана. К примеру вы поставили курицу на координату 20,20, значит пишите 20*.kof,20*.kof. А если координата у вас такая: .maxx/3,.maxy/2-здесь коэффициент не нужен.

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

Re: Игра ЯЙЦА

Post by Tantrixx »

Понятно, спасибо. Я сегодня или завтра закончу. Выложу в этой теме вам для проверке на iPad, если вы не против. Если все ок, тогда отдельной темой для всех девайсов поставлю, и буду дальше дорабатывать игру :) на сколько ума и фантазии хватит :)

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

Re: Игра ЯЙЦА

Post by Tantrixx »

Фант wrote:Конечно же ничего округлять не надо. Kof1 не нужен в данной игре. Я его использую редко: когда надо текстуру выровнять по ширине экрана, а не по высоте как это делает kof.
Значения на коэффициент умножайте только те, которые вы сами использовали, а не высчитанные от ширины или высоты экрана. К примеру вы поставили курицу на координату 20,20, значит пишите 20*.kof,20*.kof. А если координата у вас такая: .maxx/3,.maxy/2-здесь коэффициент не нужен.
Закончил :) очень надеюсь, что работает :)

Code: Select all

REM sB 5.0 / iPhone 5 / iOS 9.1 / by Tantrixx
GRAPHICS
GRAPHICS CLEAR 1,1,1
OPTION ANGLE DEGREES
OPTION SPRITE POS CENTRAL
OPTION IMAGE POS CENTRAL
OPTION TEXT POS CENTRAL
SET ORIENTATION LANDSCAPE
SET TOOLBAR OFF
RANDOMIZE
PAGE 2 SET
PAGE 2 COLOR 1,0,0,.7
PAGE 2 HIDE
PAGE 1 SET

maxx=SCREEN_WIDTH()
maxy=SCREEN_HEIGHT()
pady=maxy/768
padx=maxx/1024

DRAW ALPHA 0.8
DRAW IMAGE "System/grass.png" AT maxx/2,maxy/2 SCALE 3.6*pady

IF FILE_EXISTS ("System")=0 THEN DIR "System" CREATE
IF FILE_EXISTS ("System/Best")=0 THEN FILE "System/Best" PRINT 0
 FILE "System/Best" SETPOS 0 
 FILE "System/Best" READLINE best

d$="das"
BUTTON d$ TEXT "выход" AT 3/2*(maxx/23),(maxy-2*(maxx/23)) SIZE (maxx/23)*3,(maxx/23)*2

'данные игры
s=2.4*pady 
lv$="perch"
lvsz$="perchsz"
se=1.43*pady
sch$=0 ! sche$=" Счет: " ! best$="Best: "
speed=0.01
' размер экрана 568,320

'размещение кур

SPRITE "hen_pv" LOAD "System/hen3.png"
SPRITE "hen_pv" AT 1190*pady,226*pady SCALE s
SPRITE "hen_pv" COPY "hen_lv"
SPRITE "hen_lv" AT 167*pady,220*pady SCALE s FLIP 1
SPRITE "hen_pv" COPY "hen_ln"
SPRITE "hen_ln" AT 167*pady,366*pady SCALE s FLIP 1
SPRITE "hen_pv" COPY "hen_pn"
SPRITE "hen_pn" AT 1190*pady,370*pady SCALE s 

SPRITE "hen_pv" SHOW
SPRITE "hen_lv" SHOW
SPRITE "hen_ln" SHOW
SPRITE "hen_pn" SHOW

'рисование насеста

DRAW COLOR 0,0,0
SPRITE lv$ BEGIN 120*pady,24*pady
DRAW SIZE 24*pady
DRAW LINE 0,0 TO 108*pady,0
SPRITE END
SPRITE lv$ AT 167*pady,297*pady
SPRITE lv$ STAMP
SPRITE lv$ AT 1202*pady,303*pady
SPRITE lv$ STAMP
SPRITE lv$ AT 1202*pady,449*pady
SPRITE lv$ STAMP
SPRITE lv$ AT 167*pady,445*pady
SPRITE lv$ STAMP

SPRITE lv$ COPY lvsz$

SPRITE lvsz$ RESIZE 240*pady,24*pady
SPRITE lvsz$ AT 310*pady,355*pady ANGLE 30
SPRITE lvsz$ STAMP
SPRITE lvsz$ AT 310*pady,502*pady ANGLE 30
SPRITE lvsz$ STAMP
SPRITE lvsz$ AT 1070*pady,348*pady ANGLE -30
SPRITE lvsz$ STAMP
SPRITE lvsz$ AT 1070*pady,494*pady ANGLE -30
SPRITE lvsz$ STAMP

SPRITE "b_egg" LOAD "System/broken egg2.png"
SPRITE "b_egg" AT 420*pady,670*pady SCALE se
SPRITE "b_egg" SHOW
SPRITE "b_egg" ALPHA 0

SPRITE "b_egg" COPY "b_egg2"
SPRITE "b_egg2" AT 948*pady,670*pady SCALE se
SPRITE "b_egg2" SHOW
SPRITE "b_egg2" ALPHA 0

SPRITE "b_egg" COPY "dead_lives"
SPRITE "dead_lives" AT 786*pady,143*pady SCALE se
SPRITE "dead_lives" SHOW
SPRITE "dead_lives" ALPHA 1
SPRITE "dead_lives" HIDE

SPRITE "masha_up_pv" LOAD "System/Masha up.png"
SPRITE "masha_up_pv" AT 822*pady,490*pady SCALE s FLIP 1
SPRITE "masha_up_pv" SHOW
SPRITE "masha_up_pv" COPY "masha_up_lv"
SPRITE "masha_up_lv" AT 540*pady,490*pady SCALE s

SPRITE "masha_ln" LOAD "System/Masha.png"
SPRITE "masha_ln" AT 536*pady,490*pady SCALE s ANGLE 10
SPRITE "masha_ln" COPY "masha_pn"
SPRITE "masha_pn" AT 822*pady,494*pady SCALE s ANGLE 10 FLIP 1

SPRITE "masha_pn" SHOW
SPRITE "masha_pn" HIDE
SPRITE "masha_ln" SHOW
SPRITE "masha_ln" HIDE
SPRITE "masha_up_lv" SHOW
SPRITE "masha_up_lv" HIDE



i$="egg"
v$="egg2"
SPRITE i$ LOAD "System/egg2.png"

SPRITE i$ COPY v$

SPRITE i$ AT 780*pady,144*pady SCALE se
SPRITE i$ STAMP

SPRITE i$ AT 855*pady,144*pady SCALE se
SPRITE i$ STAMP

SPRITE i$ AT 925*pady,144*pady SCALE se
SPRITE i$ STAMP

PAGE 1 SHOW

LOOP:

SPRITE i$ DELAY speed
SPRITE v$ DELAY speed

DRAW COLOR 0,0,0
DRAW TEXT sche$ AT 835*pady,38*pady
FIELD "schet" BACK ALPHA 0
FIELD "schet" TEXT sch AT 905*pady,3*pady
DRAW COLOR 0,0,1
DRAW TEXT best$ AT 144*pady,38*pady
FIELD "best" BACK ALPHA 0
FIELD "best" TEXT best AT 214*pady,3*pady


GET TOUCH 0 AS h,w
IF SPRITE_HIT ("hen_lv",h,w)=1 THEN

SPRITE "masha_up_pv" HIDE
SPRITE "masha_pn" HIDE
SPRITE "masha_ln" HIDE
SPRITE "masha_up_lv" SHOW
ENDIF

IF SPRITE_HIT ("hen_pv",h,w)=1 THEN

SPRITE "masha_up_lv" HIDE
SPRITE "masha_pn" HIDE
SPRITE "masha_ln" HIDE
SPRITE "masha_up_pv" SHOW
ENDIF

IF SPRITE_HIT ("hen_ln",h,w)=1 THEN

SPRITE "masha_up_pv" HIDE
SPRITE "masha_pn" HIDE
SPRITE "masha_up_lv" HIDE
SPRITE "masha_ln" SHOW
ENDIF

IF SPRITE_HIT ("hen_pn",h,w)=1 THEN

SPRITE "masha_up_pv" HIDE
SPRITE "masha_ln" HIDE
SPRITE "masha_up_lv" HIDE
SPRITE "masha_pn" SHOW
ENDIF

'случайный выбор жердочки

5 IF SPRITE_VISIBLE (i$)=0 AND SPRITE_VISIBLE (v$)=0 THEN

ix=RND(4)+1

IF ix=1 THEN 
x2=245*pady ! y2=280*pady
x3=.2 ! y3=.12
SPRITE v$ AT x2,y2 SCALE se
SPRITE v$ DA 5 DX x3 DY y3
SPRITE v$ SHOW
SPRITE v$ LOOP
ENDIF

IF ix=2 THEN 
x1=245*pady ! y1=426*pady
x=.2 ! y=.12
SPRITE i$ AT x1,y1 SCALE se
SPRITE i$ DA 5 DX x DY y
SPRITE i$ SHOW
SPRITE i$ LOOP
ENDIF

IF ix=3 THEN 
x2=463 ! y2=286*pady
x3=-.2 ! y3=.12
SPRITE v$ AT x2,y2 SCALE se
SPRITE v$ DA -5 DX x3 DY y3
SPRITE v$ SHOW
SPRITE v$ LOOP
ENDIF

IF ix=4 THEN
x1=463 ! y1=432*pady
x=-.2 ! y=.12
SPRITE i$ AT x1,y1 SCALE se
SPRITE i$ DA -5 DX x DY y
SPRITE i$ SHOW
SPRITE i$ LOOP
ENDIF
ENDIF

GET SPRITE i$ POS x4,y4
IF x4 >= 417*pady AND x4<430*pady THEN 
x=0 ! y=1.5
SPRITE i$ DA 5 DX x DY y
ENDIF

GET SPRITE i$ POS x4,y4
IF x4 <= 946*pady AND x4>938*pady THEN 
x=0 ! y=1.5
SPRITE i$ DA -5 DX x DY y
ENDIF

GET SPRITE v$ POS x5,y5
IF x5 >= 417*pady AND x5<430*pady THEN 
x3=0 ! y3=1.5
SPRITE v$ DA 5 DX x3 DY y3
ENDIF

GET SPRITE v$ POS x5,y5
IF x5 <= 946*pady AND x5>938*pady THEN 
x3=0 ! y3=1.5
SPRITE v$ DA -5 DX x3 DY y3
ENDIF

IF SPRITES_COLLIDE (v$,"masha_up_lv")=1 THEN
SPRITE v$ HIDE
SPRITE v$ STOP
sch=sch+1
IF sch>best THEN
best+=1
ENDIF
GOSUB speedegg
GOTO 5
ENDIF

IF SPRITES_COLLIDE (i$,"masha_ln")=1 THEN
SPRITE i$ HIDE
SPRITE i$ STOP
sch=sch+1
IF sch>best THEN
best+=1
ENDIF
GOSUB speedegg
GO TO 5
ENDIF

IF SPRITES_COLLIDE (v$,"masha_up_pv")=1 THEN
SPRITE v$ HIDE
SPRITE v$ STOP
sch=sch+1
IF sch>best THEN
best+=1
ENDIF
GOSUB speedegg
GOTO 5
ENDIF

IF SPRITES_COLLIDE (i$,"masha_pn")=1 THEN
SPRITE i$ HIDE
SPRITE i$ STOP
sch=sch+1
IF sch>best THEN
best+=1
ENDIF
GOSUB speedegg
GO TO 5
ENDIF

IF SPRITES_COLLIDE (i$,"b_egg")=1 THEN 
SPRITE i$ HIDE
SPRITE i$ STOP
SPRITE "b_egg" ALPHA 1
deadEgg
nn+=30
SPRITE "dead_lives" AT 714*pady+nn,144*pady SCALE se
SPRITE "dead_lives" STAMP
ENDIF

IF SPRITES_COLLIDE (i$,"b_egg")=1 THEN 
SPRITE i$ HIDE
SPRITE i$ STOP
SPRITE "b_egg" ALPHA 1
deadEgg
nn+=30
SPRITE "dead_lives" AT 714*pady+nn,144*pady SCALE se
SPRITE "dead_lives" STAMP
ENDIF

IF SPRITES_COLLIDE (i$,"b_egg2")=1 THEN 
SPRITE i$ HIDE
SPRITE i$ STOP
SPRITE "b_egg2" ALPHA 1
deadEgg
nn+=30
SPRITE "dead_lives" AT 714*pady+nn,144*pady SCALE se
SPRITE "dead_lives" STAMP
ENDIF

IF SPRITES_COLLIDE (i$,"b_egg2")=1 THEN 
SPRITE i$ HIDE
SPRITE i$ STOP
SPRITE "b_egg2" ALPHA 1
deadEgg
nn+=30
SPRITE "dead_lives" AT 714*pady+nn,144*pady SCALE se
SPRITE "dead_lives" STAMP
ENDIF

IF SPRITES_COLLIDE (v$,"b_egg")=1 THEN 
SPRITE v$ HIDE
SPRITE v$ STOP
SPRITE "b_egg" ALPHA 1
deadEgg
nn+=30
SPRITE "dead_lives" AT 714*pady+nn,144*pady SCALE se
SPRITE "dead_lives" STAMP
ENDIF

IF SPRITES_COLLIDE (v$,"b_egg")=1 THEN 
SPRITE v$ HIDE
SPRITE v$ STOP
SPRITE "b_egg" ALPHA 1
deadEgg
nn+=30
SPRITE "dead_lives" AT 714*pady+nn,144*pady SCALE se
SPRITE "dead_lives" STAMP
ENDIF

IF SPRITES_COLLIDE (v$,"b_egg2")=1 THEN 
SPRITE v$ HIDE
SPRITE v$ STOP
SPRITE "b_egg2" ALPHA 1
deadEgg
nn+=30
SPRITE "dead_lives" AT 714*pady+nn,144*pady SCALE se
SPRITE "dead_lives" STAMP
ENDIF

IF SPRITES_COLLIDE (v$,"b_egg2")=1 THEN 
SPRITE v$ HIDE
SPRITE v$ STOP
SPRITE "b_egg2" ALPHA 1
deadEgg
nn+=30
SPRITE "dead_lives" AT 714*pady+nn,144*pady SCALE se
SPRITE "dead_lives" STAMP
ENDIF





'конец игры
IF nn=90 THEN 
GRAPHICS CLEAR .2,.2,.2
PAGE 1 HIDE
DRAW COLOR 0,0,0
'DRAW FONT SIZE 60*.kof
DRAW TEXT "КОНЕЦ ИГРЫ" AT .maxx/2,.maxy/2-25
'DRAW FONT SIZE 40*.kof
DRAW TEXT "Собранные ЯЙЦА: "&sch AT .maxx/2+18,.maxy/2
DRAW RECT .maxx/2,.maxy/2 SIZE 100*.kof,50*.kof
DRAW TEXT "OK" AT .maxx/2,.maxy/2+50
FILE "System/Best" TRIM 0
FILE "System/Best" PRINT best
DRAW COLOR 0,0,0
DRAW TEXT "Лучший результат: "&best AT .maxx/2+25,.maxy/2+25
REFRESH
PAUSE 1
nazh
loo:
GET TOUCH 0 AS xx,yy
IF xx>-1 THEN RUN "henhouse v1.txt"
GOTO loo
ENDIF 


'яйцо разбилось

DEF deadEgg
FOR ii=1 TO 10
IF ii%2=0 THEN PAGE 2 HIDE ELSE PAGE 2 SHOW
PAUSE .1
NEXT ii
SPRITE "b_egg2" ALPHA 0
SPRITE "b_egg" ALPHA 0
END DEF

'функция касания
DEF nazh
LOOP:
IF  NOT x>-1 THEN LOOP
END DEF

'включение туллбара
IF  BUTTON_PRESSED (d$) THEN
SET TOOLBAR ON
ENDIF

GOTO LOOP

speedegg: IF sch%17=0 THEN
speed-=0.001
ENDIF
IF sch=100 THEN
speed=0.009
ENDIF
IF sch=200 THEN
speed=0.008
ENDIF
IF sch=300 THEN
speed=0.007
ENDIF
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 Фант »

К сожалению не работает.. Абракадабра какаято.. На айфоне этот код работает нормально?

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

Re: Игра ЯЙЦА

Post by Tantrixx »

На айфоне да, проверял :cry:
Все работает.

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

Пока вижу проблемы:
1. Фон, изображения героев у Вас уже уменьшены под размер айфона. На айпаде благодаря коэффициентам пересчета картинки увеличиваются(растягиваются) под экран и в результате получаются размытыми-что не очень хорошо!
2. Если Вы хотите чтобы Ваш продукт был универсален под эраны разных девайсов, то забудьте про использование таких величин, которые расчитываются относительно конкретной величины Вашего айфона. К примеру правые курицы у Вас с координатами по ширине 1190. Ширина экрана всех айпад (pro не знаю размеры) 1024 точки. Получается из-за этого все действо не умещается на экране-часть игрового поля выходит вправо за его пределы.
Рекомендую что делать:
За основу в расчетах берите величины размеров экрана: maxx,maxy.
Можно делить экран на несколько частей и привязывать координаты к ним. Допустим xx=maxx/4. Слева получится координата xx, а справа его симметрия xx*3 или maxx-xx. Как Вам удобней так и считайте.
Или к примеру левые курицы у Вас сидят по координате x на величине 167. Значит должно быть так: левая координата 167*pady а правая maxx-167*pady.
3. Яйца катятся медленно. При увеличении экрана наверное надо учитывать и скорость движения яиц.
Как то так

Post Reply