forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на MidletPascal (http://forum.boolean.name/forumdisplay.php?f=88)
-   -   Игрушка для детей на mp (http://forum.boolean.name/showthread.php?t=5296)

Kurdt 14.12.2007 15:22

Игрушка для детей на mp
 
Вот давно писал одну игрушку выложу сорсы мож кому интиресно будет
Это сорсы для обычного телефона игра написана для управление таг ридером телефоном нокия тоесть к прикосновениям к магнитным карточкам на рисунках.
Весь прожект не выложу :dance:
Код:

program tag_game;
uses cnv2;
Const
                        {trueAnswer = 'Правильный ответ !!!'; // no comment
                        szInaccessibleState = 'переход к состоянию ID в данный момент невозможеH';//Текст, который будет выводиться, если переход к состоянию ID в данный момент невозможен.
                        SZstateNotYetVisited = 'Тут пока тебе еще нельзя ити'; // еще непосещенное место
                        szUsedState = 'Уже были тут'; //Текст, который будет выводиться, когда данный тэг и соответствующее ему состояние уже было использовано в игре.
                        szSearchFor = 'Ищите персонажа '; // +зайчик
                        szMountainText = 'szMountainText'; // текст на горе
                        szMountainGo  = 'Ответ неверен идем на гору там потусуемся 2 минуты'; // text before go to Mountain
                        szMountainHelp = 'szMountainHelp'; //
                        szNotAnswer =    'Не ответ на вопрос !!!!';          // Появляется, когда пользователь указал тег, который не является ответом на вопрос, заданный в данном состоянии.
                        szMessageNotHelpYet = 'Сава еще спит падайдите плиз папоже'; // если не прошло еще 3 минуты
                        szReturnFromMount = 'возвращаемся з горы '; // возвращаемся з горы когда подождали 2 минуты
                        imgMountain = 3; // номер Изображение горы, которое появляется, когда пользователя послали на гору, если он неправильно ответил на какой-то вопрос
                        imgFilin = 4 ;  // картинка филина справка
                        Mounttag = 11; // тег горы
                        helpTag = 0; // тег справки
                        Time2M = 120000 ; // две минуты
                        time3S =        3000 ; // 3 секунды
                        time3m = 180000; // 3 minutes
                        NcharOnline=20; // количество символов в строке
                        charheigh = 7; // высота символа
                        charwidth=6;
                        lineOnScreen=9; // количество строк на экране
                        }
                        trueAnswer = 'Hienoa! Oikea vastaus.';
szInaccessibleState = 'En voi auttaa sinua vielд.';
szUsedState = 'Olen jo auttanut sinua.';
szSearchFor = 'Right, but search for a character character_name';
szMountainText = 'Olette nyt vuorella. Teidдn tдytyy odottaa tддllд hiiren hiljaa kaksi minuuttia ennekuin voitte jatkaa peliд.';
szMountainGo  = 'Vastaus oli vддrд. Menkдд vuorelle mietiskelemддn.';
szMountainHelp = 'Vuori lцytyy saunasta.';
szNotAnswer =    'Tдmд ei ole vastaus kysymykseen.';
szMessageNotHelpYet = 'Pцllц on pдivдunilla. Tulkaa uudelleen hetken kuluttua.';
szReturnFromMount = ' odottaa vastaustanne. Voitte nyt mennд kokeilemaan uudestaan.';
                       
                       
                       
                        SZstateNotYetVisited = 'En voi auttaa sinua vielд'; // еще непосещенное место




                        imgMountain = 4; // номер Изображение горы, которое появляется, когда пользователя послали на гору, если он неправильно ответил на какой-то вопрос
                        imgFilin = 10 ;  // картинка филина справка
                        Mounttag = 11; // тег горы
                        helpTag = 1; // тег справки
                        Time2M = 84000 ; // две минуты
                        time3S =        3000 ; // 3 секунды
                        time3m = 180000; // 3 minutes
                        NcharOnline=20; // количество символов в строке
                        charheigh = 7; // высота символа
                        charwidth=6;
                        lineOnScreen=9; // количество строк на экране
                       
                       
                       
Type
                        tfont=record
                                x,y:integer;
                                im:image;
                        end;
                       
                                               
                        JStateInfo  = record
                       
                                stateTag :  integer;  //идентификатор тэга, при передаче которого приложению может быть вызвано соответствующее состояние.
                          id  :                          integer; //порядковый номер
                          Name :                        String;  //имя персонажа
                          typeS :    string;  // тип состояния стандартно question
                          IsDone  :  boolean; // выполнеятся ли уже
                          BackImg :          integer; //Фоновый рисунок                         
                                placeName : string;  // место, где живет кролик, строка.
                                FatherTag : string;        // сообщение
                                AlrearyWaitOnMountain:boolean; // уже отсидели на горе две минуты и принимаем следующий тег
                                timer :                integer;                // таймер хелпа
                               
                                questionHint:string;  // потсказка к вопросу
                               
                                moreHint :  string ; // сообщение, которе, будет выводиться, когда пользователь придет в состояние MessageHelp                               
                                isQuestion: boolean; // является ли это состояние вопросом
                                question :  string;        //вопрос
                                answers :  string;  // номера тегов ответов на вопрос
                                cAnswer:    integer; //номер тега правильного ответа               
                                npage:                        integer;//количество страниц
                          Curpage:                integer;//номер текущей страници
                          hint :      string; // текущая надпись в поле
                        end;
                       
Var
                img:                                array[1..2] of image;//база картинок
                State :                array [1..11] of JStateInfo; // масив состояний
                TecState :  integer; //Текущее нахождение
                i:integer;// для манипуляций
                last_tag:                integer; // последний тег
                font:                                tfont;// картинка с символами
                closeprogram,wasongora:boolean;//выход из програмы
                key:                                integer;// нажатая клавиша
               
//        --                --                --                --                --                --                --                --                --                --                --                       
//        --                --                --                --                --                --                --                --                --                --                --                       
//        --                --                --                --                --                --                --                --                --                --                --       
procedure initF(fn:string;x,y:integer);
Begin
        font.im:=loadimage(fn);
        font.x:=x;
        font.y:=y;
end;
//        --                --                --                --                --                --                --                --                --                --                --       

Procedure beep; // гудок
begin
if not openPlayer('/fire1.mid', 'audio/midi') then halt;   
    if not setPlayerCount(1) then halt;
    if not startPlayer then halt;
end;

Procedure beepfile(s:string); // гудок
begin
if not openPlayer('/'+s, 'audio/midi') then halt;   
    if not setPlayerCount(1) then halt;
    if not startPlayer then halt;
end;

procedure savestate; // сохранение позиции
  var rs: recordStore;
      index: integer;
      name: string;
Begin
rs := openRecordStore('names');
index := GetRecordStoreNextId(rs); 
if index = 1 then
    index := AddRecordStoreEntry(rs,integertostring(TecState))
                else ModifyRecordStoreEntry(rs,integertostring(TecState) , 1);

 { name := readRecordStoreEntry(rs, 1);
   
If name = '0' then index := AddRecordStoreEntry(rs, integertostring(TecState))
else        ModifyRecordStoreEntry(rs, integertostring(TecState),1); }
    closeRecordStore(rs);
   
end;

Function loadstateDisc:integer; // загрузка позиции
  var rs: recordStore;
      index: integer;
      name: string;
Begin
    rs := openRecordStore('names');
    name := readRecordStoreEntry(rs, 1);
    closeRecordStore(rs);
If name = '' then loadstateDisc:=1
        else loadstateDisc:=stringtointeger(name);
       
If stringtointeger(name)>=10 then loadstateDisc:=1


end;

//        --                --                --                --                --                --                --                --                --                --                --       

procedure textxy(str:string;x,y:integer);
Var
        i,xx,yy,x1,y1,x2,y2,a:integer;
begin
For i:= 0 to Length(str) - 1 do
        begin
        a:= Ord(GetChar(str, i));
        if a > 255 then a:= a - 848;
       
        for yy:= 0 to 13 do for xx:= 0 to 15 do
                        if (yy * 16 + xx + 32)=a then
                                Begin
                                        x1:=xx*font.x;
                                        y1:=yy*font.y;
                                        x2:=font.x;
                                        y2:=font.y;       
                                end;
                cnv2.draw_image((x + i *font.x ), y,font.im,x1,y1,x2,y2);
        end;
        cnv2.set_clip(0,0,128,128);
end;

//        --                --                --                --                --                --                --                --                --                --                --       

//        --                --                --                --                --                --                --                --                --                --                --               
//разбиваем текст по строкам и рисуем его
Procedure PaintText(text:string);
Var
                s,buf:string;
                strings:array[1..100] of string;
                len,nstrings,pr,index:integer;
                done,enter,up,down:boolean;
                r:real;
Begin
len:=length(text);
pr:=0;
nstrings:=0;
Repeat
len:=len+index;
index:=0;
enter:=false;
If (length(text)>NcharOnline) then
For i:=0 to NcharOnline-1 do
        Begin
        If not enter then If getchar(text,i)=' ' then index:=i;
       
if (getchar(text,i)='|') then
                begin
                        index:=i;
                        enter:=true;
                end;
       
        end;
       
if index=0 then index:=NcharOnline;
If (length(text)<=NcharOnline) then
        begin
                index:=length(text);
                done:=true;
        end;
       
buf:=copy(text,0,index);
nstrings:=nstrings+1;
strings[nstrings]:=copy(text,0,index);
if not done then
                text:=copy(text,index+1,length(text));
until done;

r:=(nstrings*10)/(lineOnScreen+1);
r:=r/10;
//        Количество страниц
For i:=0 to 10 do
        if r>i then state[TecState].npage:=i+1;

if state[TecState].Curpage=0 then state[TecState].Curpage:=1;
//state[TecState].Curpage:=2;//временно

//Вычисляем стрелки
//находимся на первой странице всего страниц больше чем 2
If (state[TecState].npage>1) and (state[TecState].Curpage=1)  then
        Begin
                up:=false;
                down:=true;
        end;

//середина
If (state[TecState].npage>state[TecState].Curpage) and (state[TecState].Curpage>1)  then
        Begin
                up:=true;
                down:=true;
        end;

//Конец
If (state[TecState].npage>1) and (state[TecState].Curpage=state[TecState].npage)  then
        Begin
                up:=true;
                down:=false;
        end;


//если одна страница
If state[TecState].npage=1 then
        Begin
                up:=false;
                down:=false;
        end;

if tecstate = 1 then DrawImage(loadimage('/10.jpg'),0,0);

If up then        DrawImage(img[1],121,39);
If down then        DrawImage(img[2],121,112);

pr:=0;
len:=lineOnScreen+1;
//Если количество страниц - одна, то выводим по центру
If (lineOnScreen >nstrings)  then
        Begin
                r:=(((lineOnScreen*9)+35) - ((nstrings*9)+35))/2;
                For i:=(lineOnScreen*state[TecState].Curpage)-lineOnScreen to (lineOnScreen*state[TecState].Curpage)
                                                do
                        Begin
                                textxy(strings[i+1], 3, 35+(trunc(r))+(9*(pr)));
                                pr:=pr+1;
                                end;
        end

{ELSE
        if  (state[TecState].Curpage=state[TecState].npage) then
                Begin
                r:=(((lineOnScreen*9)+35) - ((((lineOnScreen*state[TecState].npage-nstrings+2))*9)+35))/2;
                For i:=(lineOnScreen*state[TecState].Curpage)-lineOnScreen to (lineOnScreen*state[TecState].Curpage)
                                                do
                        Begin
                                textxy(strings[i+1], 3, 35+(trunc(r))+(9*(pr)));
                                pr:=pr+1;
                                end;
               
                end}
                else
       
For i:=(lineOnScreen*state[TecState].Curpage)-lineOnScreen to ((lineOnScreen)*state[TecState].Curpage)
                                                do
                        Begin
                       
                                if state[TecState].Curpage<>1 then textxy(strings[i+2], 3, 35+(9*(pr)));
                                        else textxy(strings[i+1], 3, 35+(9*(pr)));
                                pr:=pr+1;
                                end;
                       

repaint;
End;

//        --                --                --                --                --                --                --                --                --                --                --       

Procedure checkKey;
Begin

if keyToAction(key) =GA_DOWN then
                        If ((state[TecState].Curpage<>state[TecState].npage)and(state[TecState].npage>1))or (state[TecState].Curpage=0) then
                                Begin
                                //clrscr;
                                state[TecState].Curpage:=state[TecState].Curpage+1;
                                PaintText(state[TecState].hint);
                                delay(100);
                                // beep;
                        end;
                        //        else beep;

if keyToAction(key) =GA_up then
                        If state[TecState].Curpage>1 then
                                Begin
                                //clrscr;
                                state[TecState].Curpage:=state[TecState].Curpage-1;
                                PaintText(state[TecState].hint);
                                delay(100);
                        end;
                                //else playAlertSound;


end;
               
//        --                --                --                --                --                --                --                --                --                --                --                       

Function AnyOtherTag:boolean; // если номер тега <> текущему и ответам
Var s,s2:string;
                i3,i2:integer;
                b:boolean;
Begin
AnyOtherTag:=true;
if last_tag=state[TecState].stateTag then AnyOtherTag:=false;
        If state[TecState].isQuestion then
                                begin
                                s2:=state[TecState].answers;
                                For i3:=0 to length(s2) do
        Begin
        if getchar(s2,i3)<>',' then s:=s+getchar(s2,i3)
                else
                begin
                if last_tag=stringToInteger(s) then  AnyOtherTag:=false;
                s:='';
                end;
        end;
if last_tag=helpTag then AnyOtherTag:=true;
if TecState=10 then
if not wasongora then begin
//wasongora:=true;
AnyOtherTag:=false;
end;


end;
end;

//        --                --                --                --                --                --                --                --                --                --                --       

Function FalseAnswer:boolean; // // если неправильный ответ на вопрос true когда неправильно
Begin
if last_tag<>state[TecState].cAnswer then FalseAnswer:=true;

if TecState=10 then
        if wasongora then if not AnyOtherTag then  FalseAnswer:=false;


end;

Function stateAlreadyVisited:boolean;  // если место (тег) уже было пройдено или его вопросы включно с текущим
Var s,s2:string;
                i3,i2:integer;
Begin
For I:= 1 to TecState do
        begin
                if (last_tag=state[i].stateTag) and (i<>TecState) then stateAlreadyVisited:=true;
                        If state[i].isQuestion then
                                begin
                                s2:=state[i].answers;
                                For i3:=0 to length(s2) do
        Begin
        if getchar(s2,i3)<>',' then s:=s+getchar(s2,i3)
                else
                begin
                if last_tag=stringToInteger(s) then  stateAlreadyVisited:=true;
                s:='';
                end;
        end;
                               
                                end;
        end;
       
if last_tag=state[1].stateTag then stateAlreadyVisited:=false;

end;

//        --                --                --                --                --                --                --                --                --                --                --       


Function stateNotYetVisited:boolean;  // если место (тег) еще не пройдено  или его вопросы на один больше чем теперь
Var s,s2:string;
                i3,i2:integer;
Begin
If TecState<10 then
For i:= TecState+1 to 9 do
        begin
                if (last_tag=state[i].stateTag) and (i<>TecState) then stateNotYetVisited:=true;
                        If state[i].isQuestion then
                                begin
                                s2:=state[i].answers;
                                For i3:=0 to length(s2) do
        Begin
        if getchar(s2,i3)<>',' then s:=s+getchar(s2,i3)
                else
                begin
                if last_tag=stringToInteger(s) then  stateNotYetVisited:=true;
                s:='';
                end;
        end;
                               
                                end;
        end;
end;

//        --                --                --                --                --                --                --                --                --                --                --       

Function notNextTag:boolean;  //если номер нажатого тега не номер следующего тега следующий те
Begin
If TecState<>10 then
        If last_tag<>state[TecState+1].stateTag then notNextTag:=true;
end;

Function stateIsnotCharacter:boolean;  //если номер нажатого тега является одним из вариантов ответа следующего вопроса (есди оно есть вопрос)
Var s,s2:string;
                i3,i2:integer;
Begin
If TecState<10 then
        If state[TecState+1].isQuestion then
                                begin
                                s2:=state[TecState+1].answers;
                                For i3:=0 to length(s2) do
        Begin
        if getchar(s2,i3)<>',' then s:=s+getchar(s2,i3)
                else
                begin
                if last_tag=stringToInteger(s) then  stateIsnotCharacter:=true;
                s:='';
                end;
        end;
        end;
end;

//        --                --                --                --                --                --                --                --                --                --                --       

//        --                --                --                --                --                --                --                --                --                --                --       

Procedure FlashRed(int:integer); // горим красным цветом
Begin
beepfile('red.mid');
setColor(255, 0, 0);
fillRoundRect(120, 0, 8, 8, 4, 4);
    repaint;
delay(int);
setColor(155, 0, 0);
fillRoundRect(120, 0, 8, 8, 4, 4);
    repaint;
end;

//        --                --                --                --                --                --                --                --                --                --                --       

Procedure Flashgreen(int:integer); // горим зеденым цветом
Begin
beepfile('green.mid');
setColor(0, 255, 0);
fillRoundRect(120, 0, 8, 8, 4, 4);
    repaint;
delay(int);
setColor(0, 100, 0);
fillRoundRect(120, 0, 8, 8, 4, 4);
    repaint;
end;

//        --                --                --                --                --                --                --                --                --                --                --       

Procedure DoPrint(im:integer;ms:string); // вывод фонового рисунка и текста
Begin
setColor(255, 255, 255);
fillRect(0, 0, 128, 128);


drawimage(LoadImage('/'+integertostring(im)+'.jpg'),0,0);

state[TecState].hint:=ms;
state[TecState].Curpage:=0;
state[TecState].npage:=0;
PaintText(ms);

setColor(255, 255, 255);
fillRoundRect(100, 0, 8, 8, 4, 4);

setColor(155, 0, 0);
drawText(integertostring(TecState),1,1);repaint;
end;

//        --                --                --                --                --                --                --                --                --                --                --       


Procedure DoExit; // Конечные фанфары, все щасливы и довольны !!!
Var i1,i2:image;
Begin
//TecState:=10;
//DoPrint(state[TecState].BackImg,state[10].question);
TecState:=1;
savestate;
beepfile('ven.mid');
i1:=LoadImage('/princess3.jpg');
i2:=LoadImage('/princess4.jpg');
For i:=1 to 24 do begin
delay(500);
drawimage(i1,0,0);repaint;
delay(500);
drawimage(i2,0,0);repaint;
end;
halt;
end;


//                сидим на горе полоса прогресбара
Procedure dodalay(time:integer);
Var r:real;
                del:integer;
                ini:integer;
Begin
if not openPlayer('/gora.mid', 'audio/midi') then halt;   
    if not setPlayerCount(1) then halt;
    if not startPlayer then halt;


r:=time/129;
del:=trunc(r);

//153 173 194       

for i:= 0 to 128 do
        begin       
        ini:=0;
        for ini:=1 to 15 do
                begin
                setColor(153+ini*3, 173+ini*3, 190+ini*3);
                plot(i, 108+ini);
                end;
               
            repaint;
    delay(del);
        end;

stopPlayer;
end;
///////////////////////////////////////////////////////////////////////////////////////////////

               
Procedure DoState;
var
                b:boolean;  // временная
Begin


If not state[TecState].isQuestion then // если состояние не вопрос
        Begin       
        if state[TecState].timer= 0 then state[TecState].timer:=getRelativeTimeMs; // запускаем таймер
                If notNextTag then  //если номер нажатого тега не номер следующего тега следующий те
                        begin
                                If stateAlreadyVisited then // если место (тег) уже было пройдено
                                        begin
                                        DoPrint(imgFilin,szUsedState);
                                                FlashRed(time3S);                                                                                //фоновый рисунок ?? Messagecanthelp                                       
                                                end
                                        else
                                                If stateNotYetVisited then // если место (тег) еще небыл пройден
                                                        begin
                                                                DoPrint(imgFilin,SZstateNotYetVisited)                                          ;
                                                                FlashRed(time3S);
                                                        end
                                                else                                       
                                                If stateIsnotCharacter then
                                                        doPrint(imgFilin,szSearchFor+' '+state[TecState+1].name)
                                                                Else
                                                                        If last_tag=Mounttag        then  // красным горим если на горы снова
                                                                                FlashRed(time3S)
                                                                Else
                                                                        If last_tag=helpTag        then
                                                                                Begin
                                                                                if (getRelativeTimeMs-state[TecState].timer)> time3m                Then
                                                                                        DoPrint(imgFilin,state[TecState].moreHint)
                                                                                                Else
                                                                                                        DoPrint(imgFilin,szMessageNotHelpYet)
                                                                                end;
                                               
                  If last_tag=state[TecState].stateTag then
                        doPrint(state[TecState].BackImg, state[TecState].FatherTag);               
                                end  //
                                        Else //если номер нажатого тега  номер следующего состояния
                                                Begin
                                                        If TecState = 10 then  // если подошли до конца
                                                                DoExit
                                                                        Else
                                                                                Begin
                                                                                TecState:=TecState+1;
                                                                                savestate;
                                                                                Flashgreen(time3S);                       
                                                                                beepfile('level.mid');
                                                                                DoState;                                                                               
                                                                                end;
                                                end
        end 
        else // если состояние  вопрос
        If state[TecState].types='question' then // если тип вопрос, а не горы
        Begin
                DoPrint(state[TecState].BackImg,state[TecState].question);               
                        if last_tag<>state[TecState].stateTag then        If AnyOtherTag then // если номер тега <> текущему и ответам
                                        begin
                                        If wasongora then doexit;
                                       
                                        If last_tag = helpTag then
                                                DoPrint(imgFilin,state[TecState].questionHint)
                                                else begin
                                        DoPrint(state[TecState].BackImg,szNotAnswer);                                       
                                        FlashRed(time3S);
                                        DoPrint(state[TecState].BackImg,state[TecState].question);                                       
                                                        end;
                                        end
                                                else                                                        // если ответ не верен
                                                        If FalseAnswer Then  // если неправильный ответ на вопрос идем в горы
                                                                Begin
                                                                        DoPrint(imgFilin,szMountainGo);
                                                                        state[TecState].types:='mount';
                                                                        state[TecState].AlrearyWaitOnMountain:=false; // устанавливаем в лож пребывание на горе 2 минуты
                                                                        Flashred(3000);
                                                                        //last_tag:=Mounttag;
                                                                        //dostate;               
                                                                end
                                                                        Else // если ответ на вопрос  был правилный
                                                                                Begin
                                                                                DoPrint(state[TecState].BackImg,trueAnswer);
                                                                                Flashgreen(time3S);
                                                                                DoPrint(state[TecState].BackImg,state[TecState].FatherTag);
                                                                                state[TecState].isQuestion:=false; // теперь это пройденый этап потому считаем что не вопрос
                                                                                state[TecState].IsDone:=true; // вопрос пройден                                                                               
                                                                                end;
                                                       
                                       
                       
        end
                Else
                        If state[TecState].types='mount' then
                                Begin                                       
                                        If state[TecState].AlrearyWaitOnMountain then // если мы уже отбыли свое наказание на горе, однако
                                                If last_tag <>state[TecState].stateTag then
                                                        Begin
                                                        //DoPrint(imgFilin,'Это не '+state[TecState].name);
                                                        DoPrint(imgFilin,state[TecState].Name+szReturnFromMount);                                                       

                                                        Flashred(time3S);                                                       
                                                        end
                                                        Else
                                                                Begin
                                                                state[TecState].types:='question';                                                               
                                                                dostate;
                                                                end;
                                        If last_tag = Mounttag then
                                                If not state[TecState].AlrearyWaitOnMountain then //если мы еще не подождали на горе 2 минуты то
                                                        begin
                                                        DoPrint(imgMountain,szMountainText);                                                               
                                                        dodalay(Time2M);
                                                        state[TecState].AlrearyWaitOnMountain:=true;
                                                        DoPrint(imgFilin,state[TecState].Name+szReturnFromMount);               
                                                        if TecState=10 then wasongora:=true;
                                                        end;
                                end;
       
end;

//        --                --                --                --                --                --                --                --                --                --                --       


//        --                --                --                --                --                --                --                --                --                --                --       
Procedure Loadstate;
Begin

state[1].isQuestion := true;
state[1].name := 'pцllц';
state[1].moreHint := 'Hдnellд on pitkд kaula.';
state[1].FatherTag := 'Ystдvдni pitдд juoda jo aamulla jos hдn arvelee ettд illalla on jano. Kuka hдn on?';
state[1].cAnswer := 555;
state[1].answers := '555,';
state[1].question := 'Nдin juuri ilmojen korkeuksista, ettд Prinsessa Lilja joutui inhan lohikддrmeen vangiksi!  Hдnet pitдд vapauttaa linnasta, ennen kuin tulee yц. Linnalle on pitkд matka ja tarvitsette apua matkallanne sinne.  Tapaatte pelissд erilaisia hahmoja, jotka auttavat teitд eteenpдin.  Jos et millддn lцydд seuraavaa vihjettд, voit tulla tдnne kysymддn neuvoa minulta. Olen uninen enkд yleensд vastaa ihan heti, joten voit joutua odottamaan vastausta.  Pelin aikana voit myцs joutua vastaamaan johonkin kysymykseen valitsemalla oikean vastauksen. Oletteko lukeneet ohjeet  huolella?  Hyvд, koskekaa  sitten  vihreдд palloa,  niin peli  voi alkaa.                                                                                            ';


state[2].isQuestion := false;
state[2].name := 'kirahvi';
state[2].moreHint := 'Miettikдд, mitд lauletaan, kun karhunpoika on sairaana. Missд nдhdддn unta?';
state[2].FatherTag := 'Voitteko auttaa minua, ystдvдni karhunpoika on sairaana. Mistд lцytyy paras lддke?';

state[3].isQuestion := false;
state[3].name := 'Nukkumatti';
state[3].moreHint := 'Minkд vдrisellд autolla Nukkumatti kulkee laulussa Sininen uni.';
state[3].FatherTag := 'Millд kuljen nukkumaan menevien lasten luo?';

state[4].isQuestion := false;
state[4].name := 'auto';
state[4].moreHint := 'Kuka sanoo pдд?';
state[4].FatherTag := 'Kenellд on aina pдд kipeдnд?';

state[5].isQuestion := true;
state[5].name := 'lammas';
state[5].moreHint := 'Ollut ei loiste huono Petterimme nenдnpддn...';
state[5].FatherTag := 'Etsi paikka, joksi punakuonoa nimiteltiin?';
state[5].cAnswer := 100;
state[5].question := 'Laumassani on 10 lammasta ja kolme emoa saa pian kartisoja. Jos jokainen emo saa kolme karitsaa, montako lammasta meitд sitten on yhteensд?';
state[5].answers := '100,101,102,';
state[5].questionHint := 'Laske mitд on 3 kertaa 3 ja lisдд tulos alkuperдiseen lampaiden mддrддn (10).';

state[6].isQuestion := false;
state[6].name := 'majakka';
state[6].moreHint := 'Hдn on metsдn kuningas.';
state[6].FatherTag := 'Ystдvдni on harmaa, valkoinen tai ruskea, pelottava tai kiltein ystдvд ja kaikkein vahvin!';

state[7].isQuestion := false;
state[7].name := 'karhu';
state[7].moreHint := 'Missing!';
state[7].FatherTag := 'Hint still missing!';

state[8].isQuestion := true;
state[8].name := 'intiaani';
state[8].moreHint := 'On laiva valmiina lдhtццn!';
state[8].FatherTag := 'Mihin nдmд liittyvдt: ankkuri, luotsi, ulappa ja paapuuri';
state[8].cAnswer := 110;
state[8].question := 'Selvitд kirjan avulla, mikд oli irokeesien asunnon nimi.';
state[8].answers := '110,111,112,';
state[8].questionHint := 'Etsi tieto intiaanikirjasta.';

state[9].isQuestion := false;
state[9].name := 'purjelaiva';
state[9].questionHint := 'Справочки пока нема...';
state[9].FatherTag := 'Nyt olet valmis kohtaamaan lohikддrmeen ja voit edetд kohti linnaa. Linna sijaitsee tyцhuoneessa.';

state[10].isQuestion := true;
state[10].name := 'Linna';
state[10].answers := '120,121,122,';
state[10].question := 'Kokeile, mikд avain sopii linnan oveen ja vapauttaa prinsessan. Jos valitsette vддrдn avaimen, joudutte jддhylle.';
state[10].FatherTag := 'Ok lets done !';

for i:=1 to 10 do
        Begin
        state[i].id := i;
        state[i].BackImg := 9+i;
        state[i].stateTag:=i;
        state[i].types:='question'
 end;
//state[1].stateTag:=1000;

end;
//                                                                        *****************************                        *************************

Procedure checktagreder; // проверка  таг ридера
Var k:integer;
                ss:string;
                b:boolean;
Begin
if  key = KE_STAR then // эмулятор
        begin
        ss:='';
        k:=KE_NONE;
        delay(50);
        beep;
       
        Repeat

//delay(50);
k:=getKeyPressed;
if b then
if k <>KE_NONE then
        begin
                if k=KE_KEY0 then ss:=ss+'0';
                if k=KE_KEY1 then ss:=ss+'1';
                if k=KE_KEY2 then ss:=ss+'2';
                if k=KE_KEY3 then ss:=ss+'3';
                if k=KE_KEY4 then ss:=ss+'4';
                if k=KE_KEY5 then ss:=ss+'5';
                if k=KE_KEY6 then ss:=ss+'6';
                if k=KE_KEY7 then ss:=ss+'7';
                if k=KE_KEY8 then ss:=ss+'8';
                if k=KE_KEY9 then ss:=ss+'9';
        end;
b:=false;
if k=KE_NONE then b:=true;

until k = KE_POUND;
setColor(155, 100, 0);
drawText('('+ss+')',100,1);repaint;

if ss<>'' then begin
 last_tag:=stringtointeger(ss);
DoState;
 end;
key:=KE_NONE;


        end;

end;

Procedure loading;
Begin
drawimage(LoadImage('/splash.jpg'),0,0);repaint;
delay(3000);
initF('/cyr_pipa_6x7.png',6,7);// грузим фонт
               
        img[1]:=LoadImage('/up.png');
        img[2]:=LoadImage('/down.png');
        //img[4]:=LoadImage('/10.jpg'); //sava
        //img[3]:=LoadImage('/4.jpg'); //Gori
       
       
//for i:=10 to 20 do        img[i]:=LoadImage('/'+integertostring(i)+'.jpg'); //Gori
//img[i]:=LoadImage('/10.jpg');
       
TecState:=loadstateDisc; // устанавливаем положение первое дальше будет проверятся с загрузкой
//TecState:=7; //!!!!!!!!!!!!!!!!!!!!

Loadstate;
last_tag:=state[TecState].stateTag;

end;


//                                                                        *****************************\\\\\\\\\\\\\\                        //////////////////*************************
//        **        **        **        **        **        **        **        **        **        **        **        **        **        **        **        **        **        **        **        **        **        **        **        **        **        **               
begin
//cnv2.fullscreen_mode(1);
loading;
DoState;
//drawimage(img[4],0,0);repaint;
Repeat
//        **                **                **                **                **                **                **                **                **                **                **
//                                                                                                        Рабочий цикл программы

key:=getKeyPressed;
checkKey;
checktagreder;
//drawimage(img[4],0,0);repaint;

//        **                **                **                **                **                **                **                **                **                **                **
delay(50);
until closeprogram;

// Сохранение удачного завершения програмы

end.


cHeRsAnYa 13.01.2008 14:21

Ответ: Игрушка для детей на mp
 
Не робит ни на мидпх ни на се к300. Просто белый экран.


Часовой пояс GMT +4, время: 22:55.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot