Исходник игры "Найди парные картинки"

исходники и примеры в формате .capx

Сообщение Исходник игры "Найди парные картинки"
» 23 янв 2013, 06:15

Изображение


Сделал пример игры, где надо кликать по клеткам и искать одинаковые картинки. Не знаю, как называется этот жанр игр, поэтому кто знает напишите в комментариях.

Исходник:
game.capx
(209.36 КБ) Скачиваний: 661
Release 116

Сразу говорю, что код не оптимизирован и может глючить, поэтому если обнаружите ошибки пишите, постараюсь исправить. А вообще, я уверен, что есть способ сделать код проще и стабильнее, чем у меня.
Аватара пользователя

Игродел
Сообщений: 494
Я тут с 04 янв 2013
Репутация 66 [ ? ]

Сообщение Re: Исходник игры "Найди парные картинки"
» 23 янв 2013, 14:22

у меня невсегда парные картинки пропадают, особенно если быстро тыкать мышкой. а так зачет! и плюс :good2:
Аватара пользователя

Администратор
Сообщений: 5466
Я тут с 05 сен 2012
Двиг: Construct2
Лицензия: Personal
Skype: c2community
VK: gabrielsailergray
Репутация 365 [ ? ]

Сообщение Re: Исходник игры "Найди парные картинки"
» 23 янв 2013, 15:42

Я бы делал вот так:

PictureFinder.capx
(208.48 КБ) Скачиваний: 346
C2 - Release 116


Немного оптимизировал код, убрал пару лишних объектов, добавил комментарии. Хотел сделать еще рандомное выставление объектов на уровне, но пока не получилось)

 
Прошу прощения, если в комментариях какие-то ошибки, тороплюсь в универ, а вернусь уже поздно :biggrin: :biggrin: :biggrin:
Аватара пользователя

Игродел
Сообщений: 405
Я тут с 08 янв 2013
Откуда: Мск
Репутация 205 [ ? ]

Сообщение Re: Исходник игры "Найди парные картинки"
» 23 янв 2013, 17:15

Ilyko96 писал(а):Я бы делал вот так:

PictureFinder.capx
C2 - Release 116
(208.48 КБ) Скачиваний: 2


Хороший исходник, только вот не пойму как разместить кадры на холсте?вообще метода этого не понял, если не сложно объясни?
Аватара пользователя

Участник
Сообщений: 189
Я тут с 14 сен 2012
Откуда: Россия г. Томск
Репутация 5 [ ? ]

Сообщение Re: Исходник игры "Найди парные картинки"
» 23 янв 2013, 20:02

Ilyko96, ты молодец! Я бы не додумался сделать это через анимацию. +
Аватара пользователя

Игродел
Сообщений: 494
Я тут с 04 янв 2013
Репутация 66 [ ? ]

Сообщение Re: Исходник игры "Найди парные картинки"
» 23 янв 2013, 20:58

degortg, в примере используется всего один объект типа Sprite. Для различных элементов игры используются кадры анимации, скорость которой равна 0 (т.е. анимация не проигрывается).
Суть в том, что у каждой копии спрайта есть переменная ID. В нее мы изначально записываем (в каждую копию отдельно) номер кадра анимации, элемент которого эта копия будет показывать (начиная с 0). Ну т.е. на кадре анимации №1 (втором по счету) у нас желтый человечек. Мы в переменную ID записываем 1, на кадре анимации №2 - зеленый монстр, в переменной ID этой копии лежит значение 2 и т.д. для каждой копии спрайта (причем попарно).
Дальше выставляем кадр анимации всех копий на 0 (т.е. самый первый кадр - с синим квадратом). Теперь, если мы нажали на одну из копий (в тот момент, когда Temp = -1, т.е. изначальное состояние игры), то мы в эту переменную Temp записываем значение из переменной ID, и выставляем кадр анимации, равный переменной ID. Поскольку Temp изменился (теперь он либо равен 1, либо 2 и т.д. - одним словом, больше 0), то игра перешла во второе состояние (т.е. подчиняется действиям в событии Temp > 0). Здесь же, при нажатии на копию спрайта, кадр анимации которой равен 0 (т.е. при нажатии на синий квадрат), мы сравниваем значение переменной ID этого спрайта и то, что записано в переменной Temp. Если они равны, то система переходит в состояние -2 (Temp = -2), и соответственно выполняется условие ожидания 0,8 сек и удаление этих двух копий, в ином случае (ID не равен Temp), игра переходит в состояние -3, т.е. происходит ожидание 0,8 сек и игра возвращается в исходное состояние (Temp = -1).
На самом деле, мне очень нравится использовать глобальные переменные в качестве некоторых переключателей/тумблеров состояния программы. Т.е. события проверки этих переменных ограничивают набор некоторых действий для каждого состояния игры. :biggrin:
Аватара пользователя

Игродел
Сообщений: 405
Я тут с 08 янв 2013
Откуда: Мск
Репутация 205 [ ? ]

Сообщение Re: Исходник игры "Найди парные картинки"
» 24 янв 2013, 04:56

Все спасибо разобрался,сразу просто что то с кадрами не понял:)
Аватара пользователя

Участник
Сообщений: 189
Я тут с 14 сен 2012
Откуда: Россия г. Томск
Репутация 5 [ ? ]

Сообщение Re: Исходник игры "Найди парные картинки"
» 13 фев 2013, 22:25

Меня попросили еще раз вернуться к теме создания случайным образом объектов и присваивания им случайным образом попарно выбранных кадров анимации и я вернулся :biggrin: :biggrin: :cool:
К этой идее я шел довольно долго и очень мучительно, потому как вложенный цикл не работал так, как этого требовалось. Тем не менее, у меня все-таки получилось настроить его "правильно" и теперь все работает как надо :biggrin:
 Суть цикла
Суть цикла в том, что цикл пробегает 20 раз при старте уровня и на каждом витке анимация созданного спрайта выставляется на последнюю цифру текущего индекса цикла. Поскольку цикл пробежит 20 раз, то чисел с последней цифрой 0 будет два (10 и 20), с последней цифрой 1 тоже два (1 и 11), с последней цифрой 5 тоже два (5 и 15) и т.д. Получается, что все двадцать спрайтов выставят кадры своих анимаций на числа от 0 до 9 (нам надо от 1 до 10, но никто не мешает прибавлять единичку :biggrin: ), причем спрайтов с одинаковым кадрами будет ровно по 2 штуки. Этого мы и добивались.

Теперь следующий момент. Кадры выставляются последовательно, т.е. на первом витке цикла будет 1ый кадр анимации, на втором - 2ой, на третьем - 3ий, на 12ом - 2ой и т.д. Но нам же нужна была случайная генерация уровня. Поэтому я, используя метод выбора всех чисел из промежутка в случайном порядке ссылка сделал вложенный цикл, который как бы "раскидывает" последовательно заполненные спрайты по уровню.

Поскольку спрайтов на уровне 20 (5 шт по ширине и 4 по высоте), то их можно пронумеровать от 0 до 19 включительно. Т.е. можно каждому спрайту дать свой идентификационный номер. В результате довольно долгих размышлений я нашел закономерность между номером спрайта и его координатой. В итоге, каждый последовательно заполненный спрайт на каждом витке цикла отправляется на позицию на уровне, связанную с случайно выбранным числом от 0 до 19, а значит, как я уже сказал, спрайты как бы "разбрасываются" в случайном порядке по уровню


Кстати, я добавил в события проверки переменной Temp (Temp = -2 и Temp = -3) совместное событие Trigger Once, чтобы избавиться от моргания спрайта при быстрых кликах по "рубашке" каждого элемента. Вот так вот :cool:

PictureFinder&Random.capx
(209.18 КБ) Скачиваний: 373
C2 - r116 Игра на запоминание и случайная генерация уровня
Аватара пользователя

Игродел
Сообщений: 405
Я тут с 08 янв 2013
Откуда: Мск
Репутация 205 [ ? ]



Вернуться в Исходники и Примеры для Construct 2

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх