On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 14.12.08 19:11. Заголовок: Пятнашки


Игра 15:


 цитата:

scene_init.script

#include "scripts\base.inc"

actor.SkipTo(685, 220);

actor.Active = false;


// here comes the stuff which initializes the scene
global aa = Scene.LoadEntity("entities\aa.entity");
aa.dest_stat=1;
aa.dest_win=13;
aa.SkipTo(505, 130);

global ab = Scene.LoadEntity("entities\ab.entity");
ab.dest_stat=2;
ab.dest_win=3;
ab.SkipTo(595, 130);

global ac = Scene.LoadEntity("entities\ac.entity");
ac.dest_stat=3;
ac.dest_win=15;
ac.SkipTo(685, 130);

global ad = Scene.LoadEntity("entities\ad.entity");
ad.dest_stat=4;
ad.dest_win=7;
ad.SkipTo(775, 130);

global ba = Scene.LoadEntity("entities\ba.entity");
ba.dest_stat=5;
ba.dest_win=11;
ba.SkipTo(505, 220);

global bb = Scene.LoadEntity("entities\bb.entity");
bb.dest_stat=6;
bb.dest_win=12;
bb.SkipTo(595, 220);

global bc = Scene.LoadEntity("entities\bc.entity");
bc.dest_stat=7;
bc.dest_win=14;
bc.SkipTo(685, 220);

global bd = Scene.LoadEntity("entities\bd.entity");
bd.dest_stat=8;
bd.dest_win=4;
bd.SkipTo(775, 220);

global ca = Scene.LoadEntity("entities\ca.entity");
ca.dest_stat=9;
ca.dest_win=1;
ca.SkipTo(505, 310);

global cb = Scene.LoadEntity("entities\cb.entity");
cb.dest_stat=10;
cb.dest_win=10;
cb.SkipTo(595, 310);

global cc = Scene.LoadEntity("entities\cc.entity");
cc.dest_stat=11;
cc.dest_win=9;
cc.SkipTo(685, 310);

global cd = Scene.LoadEntity("entities\cd.entity");
cd.dest_stat=12;
cd.dest_win=8;
cd.SkipTo(775, 310);

global da = Scene.LoadEntity("entities\da.entity");
da.dest_stat=13;
da.dest_win=5;
da.SkipTo(505, 400);

global db = Scene.LoadEntity("entities\db.entity");
db.dest_stat=14;
db.dest_win=2;
db.SkipTo(595, 400);

global dc = Scene.LoadEntity("entities\dc.entity");
dc.dest_stat=15;
dc.dest_win=6;
dc.SkipTo(685, 400);

global dd = Scene.LoadEntity("entities\dd.entity");
dd.dest_stat=16;
dd.dest_win=16;
dd.SkipTo(775, 400);

global taken;
taken[0]=aa;
taken[1]=ab;
taken[2]=ac;
taken[3]=ad;
taken[4]=ba;
taken[5]=bb;
taken[6]=bc;
taken[7]=bd;
taken[8]=ca;
taken[9]=cb;
taken[10]=cc;
taken[11]=cd;
taken[12]=da;
taken[13]=db;
taken[14]=dc;
taken[15]=dd;
////////////////////////////////////////////////////////////////////////////////
// scene state
global StateRoom;


// default values
if(StateRoom==null)
{
StateRoom.Visited = false;
// add scene states here
}


taken.script

#include "scripts\base.inc"


////////////////////////////////////////////////////////////////////////////////
on "LeftClick"
{
global dd;

if (dd.X == this.X)
{
switch (dd.Y - this.Y)
{
case 90:
this.SkipTo(this.X, this.Y+90);
Game.Msg(this.dest_stat);
this.dest_stat = this.dest_stat + 4;
Game.Msg(this.dest_stat);
dd.SkipTo(dd.X, dd.Y-90);
dd.dest_stat = dd.dest_stat - 4;
this.PlaySound("sounds\click.ogg");
break;

case (-90):
this.SkipTo(this.X, this.Y-90);
this.dest_stat = this.dest_stat - 4;
dd.SkipTo(dd.X, dd.Y+90);
dd.dest_stat = dd.dest_stat + 4;
this.PlaySound("sounds\click.ogg");
break;
};
};

if (dd.Y == this.Y)
{
switch (dd.X - this.X)
{
case 90:
this.SkipTo(this.X+90, this.Y);
this.dest_stat = this.dest_stat + 1;
dd.SkipTo(dd.X-90, dd.Y);
dd.dest_stat = dd.dest_stat - 1;
this.PlaySound("sounds\click.ogg");
break;

case (-90):
this.SkipTo(this.X-90, this.Y);
this.dest_stat = this.dest_stat -1;
dd.SkipTo(dd.X+90, dd.Y);
dd.dest_stat = dd.dest_stat + 1;
this.PlaySound("sounds\click.ogg");
break;
};
};
Game.Msg(this.rotate);
//check win;

global taken;
var cost = 0;
for(var i=0; i<16; i=i+1)
{
var tmp = taken;
if (tmp.dest_stat == tmp.dest_win)
{
cost=cost+1;
};
};
if (cost == 16)
{
Game.Msg("wine" + cost);
}
else
{
Game.Msg(cost);
};
};



aa.entity

ENTITY
{
NAME="aa"
CAPTION="taken_aa"
X=80
Y=80
SCALABLE=TRUE
INTERACTIVE=TRUE
COLORABLE=TRUE
SOUND_PANNING=TRUE
SPRITE="entities\aa.sprite"
TALK="entities\aa.sprite"
SCRIPT="entities\taken.script"
FONT = "fonts\outline_white.font"
}


aa.sprite

; generated by SpriteEdit

; $EDITOR_PROJECT_ROOT_DIR$ ..\..\

SPRITE {
NAME="aa"
LOOPING=TRUE
CONTINUOUS=FALSE
PRECISE=TRUE
FRAME {
DELAY = 0
KEYFRAME=FALSE
IMAGE = "scenes\Room\taken\aa.png"
EDITOR_SELECTED=TRUE
}

}





Рисуем 16 картинок 80х80 пикселей. Одна из них прозрачная. Жмём все картинки в *.png формат с а-каналом. Называем их aa.png, ab.png, ... , dd.png.
Делаем спрайты с т.ж. именами. Делаем ENTITY с т.ж. именами.
К каждому ENTITY подцепляем taken.script.
В scene_init.script прописываем код, расставляющий ENTITY по местам и прячущий Молли.
Жмём Run

Спасибо: 0 
Цитата Ответить
Ответов - 3 [только новые]







Сообщение: 21
Зарегистрирован: 22.09.08
Откуда: Ленинград
Репутация: 0
ссылка на сообщение  Отправлено: 20.12.08 02:43. Заголовок: осмелюсь по коду выл..


осмелюсь по коду выложить исходники с небольшими коррективами.
игра в окне 320-320px, убрано Game.Msg после каждого хода, и убрано расстояние между кусочками паззла в 10px, расположение теперь идёт из левого верхнего угла (x=0,y=0).
на мой взгляд не хватает рандомного расположения фрагментов при загрузке (и опции показа готовой картинки)


http://ifolder.ru/9648056

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 20.12.08 15:53. Заголовок: рандомное расположение фрагментов


Тут вот в чём затык: если сделать совсем рандомное расположение фрагментов, то картинку можно и не собрать. Так называемая "Проблема чётности перестановок". Буду думать, шыбко думать, однако.
P.S. За исходники с коррективами спасибо.

Спасибо: 0 
Цитата Ответить





Сообщение: 22
Зарегистрирован: 22.09.08
Откуда: Ленинград
Репутация: 0
ссылка на сообщение  Отправлено: 20.12.08 22:16. Заголовок: у пятнашек есть толь..


у пятнашек есть только 1 случай невозможности собрать последовательность - это чередование последних фрагментов.
вместо 13, 14, 15, идёт вариант 14, 13, 15 или по аналогии.
кстати, имхо, простейший вариант сборки финального результата - кнопка, выстраивающая фрагменты в нужной последовательости, на определённое время, чтобы игрок видел, что должно получиться, и по истечении времени, возвращающая исходное расположение фрагментов.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 2
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет