Создаем объект obj_block с spr_block. Убираем видимость и ставим галочку на "Solid"(делаем твердым). Возвратимся к obj_fish, в столкновении с obj_block пишем:
Code
direction=random(360) speed=1
Все, закончили с рыбой и блоком. Новый объект obj_cav со спрайтом spr_cav. В событии мыши button release:
Code
global.money+=50 instance_destroy()
Теперь создадим фон bg_msg для сообщений и спрайт msg_btn для кнопок сообщений, шрифт font. Выберите любой шрифт и нажмите "All". Создадим объект obj_var, сюда будем записывать все переменные. Займемся деньгами, в смысле создадим переменную денег. В Create:
Code
global.money=500
В Step
Code
if room=level_1 if (instance_number(obj_fish)=5)and(global.money>=1000) room_goto_next()
В Draw:
Code
draw_set_font(font) draw_text(x,y,'Деньги: '+string(global.money)+'$') message_background(msg_bg) message_button(msg_btn) if room=level_1 draw_text(16,352,'Задания:#5 рыб#$1000')
Новый объект obj_buy, спрайт spr_buy. В событии мыши left released:
Code
if global.money>=200{ instance_create(irandom_range(144,448),irandom_range(160,336),obj_fish)//Создаем рыбу в случайном месте. Подберите диапазон под ваш водоем. global.money-=200 } else { show_message('Недостаточно денег!') }
Добавляем комнату (level_1), расставляем все объекты, тестим! Вам осталось только добавить уровней.
В этой части урока мы сделаем с вами склад, в котором будет хранится икра. Склад будет выглядеть в виде инвентаря. Создадим спрайт ячейки размером 32x32 и назовем spr_inv. Теперь еще два спрайта: inv_cav - спрайт икры в инвентаре и spr_arrow - спрайт стрелки(для скрывания инвентаря). Создаем объекты obj_inv со спрайтом spr_arrow и obj_cell со спрайтом spr_inv. obj_inv Create:
Так мы создаем 10 ячеек инвентаря, расположенных вертикально. Здесь же, только в событии отпущенной кнопки мыши:
Code
if obj_cell.visible=true obj_cell.visible=false else obj_cell.visible=true
Таким образом мы можем скрывать и открывать наш склад. Перейдем к объекту obj_cell м в отпущенной кнопки мыши напишем код:
Code
if sprite_index=inv_cav{ global.money+=50 sprite_index=spr_inv }
Объясню код: если спрайт ячейки - икра, то прибавляем $50. Идем к объекту икры (obj_cav), заменяем весь код объекта на
Code
for(i=0;i<10;i+=1){ if obj_inv.cell[i].sprite_index=spr_inv{ obj_inv.cell[i].sprite_index=inv_cav instance_destroy() exit } }
Таким образом мы ищем пустую ячейку и заполняем ее. Не забудьте прописать "exit"! Вот и все! Вторая часть закончена, удачи! Домашнее задание: сделайте так, что если икру не переместить в инвентарь, то она исчезнет.
Дополнительно: Добавьте в спрайт рыбы еще один кадр, только отраженный в другую сторону (Transform>Mirror/Flip>Mirror Horizontally). Уберите галочку с "Apply to all images in the sprite". Создайте событие шага (Step) в obj_fish и добавьте этот код:
Code
if direction<270 and direction>90 image_index=1 else image_index=0
Вот так гораздо лучше!
Давайте теперь в obj_var в Create добавим новую переменную, которая будет отображать сообщения.
Code
global.msg=''
А в событии Draw добавим вот это:
Code
draw_text(144,448,global.msg)
Чтобы добавить оригинальности, придумал вот что: в obj_cell в Step пишем:
Code
global.rmoney=irandom_range(40,60)
В том же obj_cell в событии отпущенной кнопки мыши (Left Released):
Code
if sprite_index=inv_cav{ alarm[1]=room_speed*irandom_range(10,30) global.msg='Будет продано за 10 или 30 секунд' sprite_index=spr_inv }
Если вы внинули в код, нужно сейчас создать таймер. Итак, создаем событие Alarm 1 и туда пишем код:
Code
alarm[1]=room_speed*irandom_range(10,30) global.money+=global.rmoney global.msg='Продано за '+string(global.rmoney)+'$'
Теперь мы продаем икру не за 50 баксов, а за случайное число от 40 до 60, и продается икра от 10 до 30 секунд. Домашнее задание: добавьте новый вид рыбы, который приносит другой вид икры.
Я решил продолжить серию уроков по созданию фермы на Game Maker. Сейчас мы создадим завод, который будет преобразовывать красную икру в консерву. Начнем-с. Необходимые спрайты: spr_fabric (спрайт заводика), spr_banka (банка с икрой), inv_banka (банка на складе). Объекты: obj_banka со спрайтом spr_banka, obj_fabric со спрайтом spr_fabric. Открываем obj_fabric. В событии Left Released пишем код:
Code
for(i=0;i<10;i+=1) { if obj_inv.cell[i].sprite_index=inv_cav { obj_inv.cell[i].sprite_index=spr_inv instance_create(x-40,y+10,obj_banka) exit } }
Здесь должно быть все понятно: ищем ячейку с икрой, опустошаем и создаем рядом с заводиком банку с икрой. В obj_banka тоже в Left Released:
Code
for(i=0;i<10;i+=1) { if obj_inv.cell[i].sprite_index=spr_inv { obj_inv.cell[i].sprite_index=inv_banka instance_destroy() exit } }
Я решил изменить код в событии Left Released (obj_cell) на такой:
Code
switch(sprite_index) { case inv_cav: alarm[1]=room_speed*irandom_range(10,30) global.msg='Будет продано в течение 30 секунд' sprite_index=spr_inv break
case inv_bcav: alarm[2]=room_speed*irandom_range(5,20) global.msg='Будет продано в течение 20 секунд' sprite_index=spr_inv break //Вот код банки case inv_banka: alarm[3]=room_speed*irandom_range(5,20) global.msg='Будет продано в течение 20 секунд' sprite_index=spr_inv break }
В obj_cell нужно добавить событие Alarm 3 и вписать код:
Code
global.money+=60 global.msg='Продано за 60 $'
Все, ставим завод в комнату и играем!
Домашние задание: сделать заводику анимацию и время упаковки икры.