ƒCƒ“ƒTƒCƒh UJML

 

 

 

ƒo[ƒWƒ‡ƒ“ 1.5 - 2006/06/23

 

 

 

 

 

 

 

 

 

 

 

www.uievolution.com

Copyright 2001-2006 by UIEvolution, Inc. All rights reserved.



‚Í‚¶‚ß‚É . 4

UJML ‚̃ƒŠƒbƒg . 4

¬‚³‚ȃfƒoƒCƒX‚Å‚à–L‚©‚ȃ†[ƒU‘ÌŒ± . 4

ŠÈ’P‚ÉŠw‚ׂé . 4

Hello World! ‚Ì—á . 4

ƒ}ƒ‹ƒ`ƒvƒ‰ƒbƒgƒtƒH[ƒ€‘Ήž . 6

. 6

—D‚ꂽƒZƒLƒ…ƒŠƒeƒB. 7

ƒCƒ“ƒXƒg[ƒ‹•s—v‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“ƒ‚ƒfƒ‹‚ð’ñ‹Ÿ 7

UJML ‚̃A[ƒLƒeƒNƒ`ƒƒ . 7

ƒXƒ^ƒeƒBƒbƒN VS ƒ_ƒCƒiƒ~ƒbƒN . 8

ƒp[ƒeƒBƒVƒ‡ƒ“ . 9

ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­ 11

SDK.. 12

ƒCƒ“ƒXƒg[ƒ‹ . 12

ƒAƒvƒŠƒP[ƒVƒ‡ƒ“. 13

‰æ–Ê•\ަ. 14

ƒXƒe[ƒg. 15

Z-order 17

ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒƒWƒbƒN . 19

•Ï”. 20

ƒXƒNƒŠƒvƒg 21

Ž®. 24

ŠÖ”. 24

ƒtƒ[§Œä .. 27

ƒCƒxƒ“ƒg. 28

ƒXƒe[ƒg. 29

ƒeƒ“ƒvƒŒ[ƒg. 31

Ujinn. 35

ƒOƒŠƒbƒh‚̉Šú‰» . 35

ƒ‹[ƒv‚ðŽg‚Á‚½’èŠú“I‚ȉæ–ÊXV . 38

ƒJ[ƒ\ƒ‹ 39

ƒ{ƒbƒNƒX‚ðÁ‚· . 42

ƒXƒRƒA•\ަ . 51

ƒQ[ƒ€‚ÌI—¹”»’è . 54

ƒƒjƒ…[. 56

ƒrƒW[ƒJ[ƒ\ƒ‹iˆ—’†ƒCƒ“ƒWƒP[ƒ^j 69

ƒQ[ƒ€‚ÌÄŠJ . 74

ƒ[ƒJƒ‰ƒCƒY. 80

ƒAƒjƒ[ƒVƒ‡ƒ“ . 86

Ä—˜—p‰Â”\‚ȃRƒ“ƒ|[ƒlƒ“ƒg . 95

<state-machine>. 96

<include>. 99

ƒTƒ“ƒvƒ‹ƒR[ƒh. 100

ƒrƒW[iBusyj. 100

ƒ{ƒ^ƒ“iButtonj. 100

ƒGƒfƒBƒbƒgiEditj 101

ƒCƒxƒ“ƒgiEventj 102

ƒtƒH[ƒJƒXiFocusj. 103

ƒtƒ@ƒ“ƒNƒVƒ‡ƒ“ƒL[iFunctionKeyj. 103

ƒCƒ[ƒWiImagej. 104

ƒ‰ƒxƒ‹iLabelj 105

ƒŠƒ“ƒJiLinkerj 106

ƒƒjƒ…[iMenuj. 107

ƒŒƒR[ƒhƒZƒbƒgiRecordSetj 108

ƒXƒNƒ[ƒ‹ƒo[iScrollBarj 109

ƒXƒ^ƒbƒNiStackj. 109

ƒeƒLƒXƒgƒ{ƒbƒNƒXiTextBoxj. 110

ƒŠƒXƒgiListj 110

ƒƒbƒZ[ƒWƒ{ƒbƒNƒXiMessage Boxj . 111

 


 

Document History

 

‚Í‚¶‚ß‚É

–{ƒKƒCƒh‚Í UjinnMarkup Language(UJML) ‚ðŽg—p‚µAŒg‘Ñ“d˜b‚âPDAAƒpƒ\ƒRƒ“A‚»‚µ‚Ä‘g‚Ýž‚Ý‹@Ší‚Ȃǂ̃vƒ‰ƒbƒgƒtƒH[ƒ€‚É‚¨‚¢‚ăAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÌŠJ”­‚Æ”z•z‚ðŠÈ’P‚És‚¤•û–@‚É‹»–¡‚ª‚ ‚él‚Ì‚½‚߂̃KƒCƒh‚Å‚·B

 

–{ƒKƒCƒh‚ÍŠÈ’P‚ȃQ[ƒ€EƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì‘‚«•û‚ɂ‚¢‚Äà–¾‚·‚éƒ`ƒ…[ƒgƒŠƒAƒ‹Œ`Ž®‚ð‚Æ‚Á‚Ä‚¢‚Ü‚·Bƒ`ƒ…[ƒgƒŠƒAƒ‹‚É‚¨‚¯‚éŠeƒXƒeƒbƒv‚Å‚ÍAƒQ[ƒ€ŠJ”­‚É‚¨‚¯‚é UJML ‚ÌŠT”O‚ð‚P‚‚¸‚ÂЉ‚Ä‚¢‚Ü‚·B–{ƒKƒCƒh‚͂܂½AUJML ‚ÌŠT”O‚ÉŠÖ‚·‚éˆê”Ê“I‚ȃqƒ“ƒg‚à’ñ‹Ÿ‚µ‚Ä‚¢‚Ü‚·B

UJML ‚̃ƒŠƒbƒg

UJML ‚ðŽg—p‚·‚邯AƒŠƒbƒ`‚ȃ†[ƒU‘ÌŒ±‚ð—^‚¦‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚𑼂̂ǂñ‚ȃeƒNƒmƒƒW[‚æ‚è‚à‘½‚­‚ÌlX‚ɑ΂µ‚Ä’ñ‹Ÿ‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B

¬‚³‚ȃfƒoƒCƒX‚Å‚à–L‚©‚ȃ†[ƒU‘ÌŒ±

UJML ‚Í2‚‚̂±‚Æ‚ðŽÀŒ»‚·‚邽‚ßAƒ~ƒjƒ}ƒŠƒXƒg‚ÈŽv‘z‚ÅÝŒv‚³‚ê‚Ä‚¢‚Ü‚·B1‚Â‚Í UJML ‚̃oƒCƒgƒR[ƒh‚ðŽÀs‚·‚é UIE Player ‚̃TƒCƒY‚𬂳‚­‚·‚邱‚ÆBUIE Player ‚Í Java ‘Ήž’[––‚É‚¨‚¢‚Ä 30KB ’ö“x‚ÉŽû‚ß‚ç‚ê‚Ä‚¢‚Ü‚·B‚à‚¤1‚‚̓Vƒ“ƒvƒ‹‚©‚ÂK“¾‚ª—eˆÕ‚ȃvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚ðŽÀŒ»‚·‚邱‚ÆBUJML ‚̓~ƒjƒ}ƒŠƒXƒg‚ÈÝŒvŽv‘z‚ðÌ‚Á‚Ä‚¢‚é‚É‚àŠÖ‚í‚炸AƒŠƒbƒ`‚ȃ†[ƒU‘ÌŒ±‚ð’ñ‹Ÿ‚·‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÌŠJ”­‚ðŽÀŒ»‚µ‚Ä‚¢‚Ü‚·B

ŠÈ’P‚ÉŠw‚ׂé

UJML ‚Í ECMA ScriptiJavaScriptj‚̃TƒuƒZƒbƒg‚ðƒTƒ|[ƒg‚·‚éAXMLƒx[ƒX‚̃vƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚Å‚·B

Hello World! ‚Ì—á

ŽŸ‚ÉA‰æ–Êã‚ÉuHello Worldv‚Æ•\ަ‚·‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðЉ‚Ü‚·B‚±‚Ì—á‚Å‚Í UJMLAJavaiJ2ME/MIDPjAC++iBREWj‚ÌŠeŒ¾Œê‚ðŽg‚Á‚Ä Hello World ‚ð‹Lq‚µ‚Ä‚¢‚Ü‚·BSymbianAPalm OSA‚»‚µ‚Ä Pocket PC ƒo[ƒWƒ‡ƒ“‚Í•¡ŽG‚³‚É‚¨‚¢‚Ä BREW ƒo[ƒWƒ‡ƒ“‚ÉŽ—‚Ä‚¢‚邽‚ßÈ—ª‚µ‚Ä‚¢‚Ü‚·B‚Ü‚½ HTML ‚Æ WML ƒo[ƒWƒ‡ƒ“‚ÍŠÈ’P‚³‚É‚¨‚¢‚Ä UJML ‚ÆŽ—‚Ä‚¢‚é‚Ì‚ÅA‚â‚Í‚èÈ—ª‚µ‚Ä‚¢‚Ü‚·B

 

‚±‚Ì”äŠr‚Å‚Í UJML ‚̃Vƒ“ƒvƒ‹‚³‚ðƒ‚ƒoƒCƒ‹—p‚Ì‘¼‚̃vƒƒOƒ‰ƒ€Œ¾Œê‚Æ”äŠrà–¾‚µ‚Ä‚¢‚Ü‚·BUJML ‚ł͓Á’è‚̈—‚ð‹Lq‚·‚邽‚߂̃R[ƒfƒBƒ“ƒO—Ê‚ª­‚È‚­‚Äςނ¾‚¯‚łȂ­AŒ¾Œê‚ðŠw‚ÑA—‰ð‚µAn—û‚·‚邽‚߂ɕK—v‚ÈŒ¾ŒêƒRƒ“ƒZƒvƒg‚ª’Pƒ‚©‚ŠȌ‰‚ɂȂÁ‚Ä‚¢‚Ü‚·B

 

UJML ӁF

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.1//EN" "ujml.dtd">

<ujml>

  <application>

    <display>

      <label>

        <text>Hello world</text>

      </label>

    </display>

  </application>

</ujml>

 

 

J2ME/MIDP ӁF

 

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

 

public class HelloWorld extends MIDlet implements CommandListener

{

  private Command exitCommand; // The exit command

  private Display display;   // The display for this MIDlet

 

  public HelloWorld()

  {

       display = Display.getDisplay(this);

       exitCommand = new Command("Exit", Command.SCREEN, 2);

  }

 

  public void startApp()

  {

       TextBox t = new TextBox("", "Hello World", 256, 0);

       t.addCommand(exitCommand);

       t.setCommandListener(this);

       display.setCurrent(t);

  }

 

  public void pauseApp()

  {

  }

 

  public void destroyApp(boolean unconditional)

  {

  }

 

  public void commandAction(Command c, Displayable s)

  {

       if (c == exitCommand)

         {

         destroyApp(false);

         notifyDestroyed();

       }

  }

}

 

BREW ӁF

 

#include "AEEModGen.h"      // Module interface definitions

#include "AEEAppGen.h"      // Applet interface definitions

#include "AEEShell.h"       // Shell interface definitions

#include "AEEDisp.h"        // Display interface defintions

#include "helloworld.bid"   // applet class ID

#include "AEEFile.h"        // AEEFile Services

 

static boolean HelloWorld_HandleEvent(IApplet * pi, AEEEvent eCode,  uint16 wParam, uint32 dwParam);

 

int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)

{

   *ppObj = NULL;

                            

   if(ClsId == AEECLSID_HELLOWORLD)

   {

      if(AEEApplet_New(sizeof(AEEApplet), ClsId, pIShell,po,(IApplet**)ppObj,

         (AEEHANDLER)HelloWorld_HandleEvent,NULL)  == TRUE)

      {

         return (AEE_SUCCESS);

      }

   }

 

   return (EFAILED);

}

 

static boolean HelloWorld_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam)

   AEEDeviceInfo di;

   AECHAR szBuf[] = {'H','e','l','l','o',' ','W','o', 'r', 'l', 'd', '\0'};

   AEEApplet * pMe = (AEEApplet*)pi;

 

   switch (eCode)

   {

      case EVT_APP_START:                       

         ISHELL_GetDeviceInfo (pMe->m_pIShell, &di);

         IDISPLAY_ClearScreen (pMe->m_pIDisplay);

         IDISPLAY_DrawText(pMe->m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0, 0, 0, IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);

         IDISPLAY_Update (pMe->m_pIDisplay);

         return(TRUE);

 

      case EVT_APP_STOP:

         return TRUE;

 

      default:

         break;

   }

 

   return FALSE;

}

ƒ}ƒ‹ƒ`ƒvƒ‰ƒbƒgƒtƒH[ƒ€‘Ήž

UIE Player ‚ÍŽŸ‚̃vƒ‰ƒbƒgƒtƒH[ƒ€‚ɑΉž‚µ‚Ä‚¢‚Ü‚·F

 

·        Java

o       J2ME/MIDP (AT&T, Sprint)

o       J2ME/DoJa (NTT DoCoMo 504i ˆÈ~)

o       Personal Java

o       J2SE (Applet/Application)

·        BREW (VerizonA All-TelAau/KDDI)

·        Danger Hiptop

·        Palm OS 3.5 ˆÈ~

·        Pocket PC

·        Symbian

·        Win32 ActiveX

·        ƒQ[ƒ€ƒ{[ƒCƒAƒhƒoƒ“ƒXiƒvƒƒgƒ^ƒCƒvj

ƒNƒ‰ƒCƒAƒ“ƒg^ƒT[ƒoŒ^ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Tƒ|[ƒg

UJML ‚ł̓AƒvƒŠƒP[ƒVƒ‡ƒ“‚ÆƒŠƒ\[ƒX‚̓ǂݞ‚Ý‚É URL ‚ðŽg—p‚µ‚Ü‚·BUJML ‚̃vƒƒOƒ‰ƒ~ƒ“ƒOƒ‚ƒfƒ‹‚̓Xƒ^ƒ“ƒ_ƒ[ƒ“‚̃vƒŠƒCƒ“ƒXƒg[ƒ‹ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚¾‚¯‚łȂ­A“®“I‚ȃNƒ‰ƒCƒAƒ“ƒgƒT[ƒoŒ^ƒlƒbƒgƒ[ƒNƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚àŠÈ’P‚É쬂ł«‚邿‚¤‚ÉÝŒv‚³‚ê‚Ä‚¢‚Ü‚·BUIE Player‚ÍA‘Š‘ÎƒpƒX‚Ì URL ‚ɉÁ‚¦ http ‚Æ file ‚Ì2‚‚̃XƒL[ƒ}‚ɑΉž‚µ‚Ä‚¢‚Ü‚·B

—D‚ꂽƒZƒLƒ…ƒŠƒeƒB

UJML ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Í UIE Player ‚ªŽÀs‚µ‚Ü‚·BUIE Player ‚ÍŒ‡Š×‚∫ˆÓ‚Ì‚ ‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚çƒfƒoƒCƒX‚ðŽç‚èAƒNƒ‰ƒbƒVƒ…‚µ‚½ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðƒAƒ“ƒ[ƒh‚µ‚Ü‚·B‚±‚Ì "sandbox" ‹@”\‚ÍAUJML ƒAƒvƒŠƒP[ƒVƒ‡ƒ““¯Žm‚ðŒÝ‚¢‚©‚ç•ی삷‚邾‚¯‚łȂ­Aˆ«ˆÓ‚Ì‚ ‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚éƒfƒoƒCƒX‚ւ̃_ƒ[ƒW‚ð§ŒÀ‚µ‚Ü‚·B

 

ƒfƒtƒHƒ‹ƒg‚Å‚ÍAUJML ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚çƒtƒ@ƒCƒ‹ƒVƒXƒeƒ€‚â“d˜b’ A“d˜b‚̉¹º”­ŒÄ‚Ȃǂ̃fƒoƒCƒX‹@”\‚ɃAƒNƒZƒX‚·‚邱‚Ƃ͂ł«‚Ü‚¹‚ñBƒfƒoƒCƒX‚Ì‹@”\‚⃊ƒ\[ƒX‚ւ̃AƒNƒZƒX‚ðŠJ•ú‚µ‚½ƒJƒXƒ^ƒ}ƒCƒY”Å‚Ì UIE Player ‚Å‚ÍA UIE Player ‚ÌÝ’è‚ð’Ê‚¶‚Ä_“î‚ȃZƒLƒ…ƒŠƒeƒBƒ|ƒŠƒV[‚ðŽÀŒ»‚µ‚Ä‚¢‚Ü‚·B‚±‚̃ZƒLƒ…ƒŠƒeƒBƒ|ƒŠƒV[‚ðŽg—p‚·‚邯M—Ђł«‚é UJML ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚âƒp[ƒeƒBƒVƒ‡ƒ“‚É‚æ‚郊ƒ\[ƒX‚ւ̃AƒNƒZƒX‚ðŒÀ’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·BUIE Player ‚ÍAHTML/HTTP ƒuƒ‰ƒEƒUã‚ł̃NƒbƒL[ƒZƒLƒ…ƒŠƒeƒB‚ÉŽ—‚½AURL ƒx[ƒX‚̃Vƒ“ƒvƒ‹‚ȃZƒLƒ…ƒŠƒeƒBƒ|ƒŠƒV[‚ð”õ‚¦‚Ä‚¢‚Ü‚·B

ƒCƒ“ƒXƒg[ƒ‹•s—v‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“ƒ‚ƒfƒ‹‚ð’ñ‹Ÿ

ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Cƒ“ƒXƒg[ƒ‹ŠÇ—‚©‚烆[ƒU[‚ð‰ð•ú‚·‚邽‚ßAUIE Player ‚ł̓fƒoƒCƒX‚Ƀ[ƒJƒ‹‚È‹L‰¯‘•’u‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃LƒƒƒbƒVƒ…‚Æ‚µ‚ÄŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·BƒLƒƒƒbƒVƒ…‚É‘¶Ý‚µ‚È‚¢ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍUIE Player ‚ªƒlƒbƒgƒ[ƒN‚©‚çŽæ“¾‚µ‚Ü‚·BƒLƒƒƒbƒVƒ…‚ªˆê”t‚ɂȂÁ‚½ê‡AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚͌¢‡‚ɃLƒƒƒbƒVƒ…‚©‚çŽÌ‚Ä‚ç‚ê‚Ü‚·B

 

‚±‚ÌŽd‘g‚݂̓fƒoƒCƒX‚̉^—pƒRƒXƒg‚ð‘啂ɉº‚°‚Ü‚·B——R‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì•ÛŽç‚Æ”z•z‚ðƒT[ƒo[‘¤‚Ås‚¤‚½‚ßAƒfƒoƒCƒXã‚É‚¨‚¯‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“ŠÇ—‚ª•s—v‚ƂȂ邩‚ç‚Å‚·B‚±‚ÌŽd‘g‚݂͂܂½AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Aƒbƒvƒf[ƒg‚𓧉ߓI‚É”z•z‚·‚邱‚Æ‚ð‰Â”\‚É‚µ‚Ü‚·BƒAƒbƒvƒf[ƒg‚ð”z•z‚·‚é‚É‚ÍV‚µ‚¢ƒo[ƒWƒ‡ƒ“‚ðƒT[ƒo‚É”z”õ‚µ‚Ü‚·BV‚µ‚¢ƒo[ƒWƒ‡ƒ“‚ÍAƒ†[ƒU[‚ªƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŽÀs‚·‚邯ީ“®“I‚ɓǂݞ‚Ü‚ê‚Ü‚·B

UJML ‚̃A[ƒLƒeƒNƒ`ƒƒ

UJML ‚Í UJML DTD‚É€‹’‚·‚é XML ƒx[ƒX‚̃}[ƒNƒAƒbƒvŒ¾Œê‚Å‚·B‚±‚ÌŒ¾Œê‚ł̓rƒWƒ…ƒAƒ‹ƒXƒe[ƒg‚Ì‹Lq‚ð’Ê‚¶‚ĉæ–Ê•\ަ‚ðs‚¢‚Ü‚·B‚Ü‚½ƒXƒe[ƒg‚É‚Í UIE Player ‚ªƒXƒe[ƒgŠÔ‚ð‘JˆÚ‚·‚éÛ‚Ì“®ì‚ð§Œä‚·‚éAŽÀsƒR[ƒh‚̃uƒƒbƒN‚ð‹Lq‚µ‚Ü‚·B

 

UJML ‚Í UIE Player ‚ƌĂ΂ê‚鬂³‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“iHTMLƒuƒ‰ƒEƒU‚Æ“¯“™‚Ì‚à‚Ì‚Æl‚¦‚Ä‚­‚¾‚³‚¢j‚É‚æ‚Á‚ăfƒoƒCƒXã‚É•\ަ‚³‚ê‚Ü‚·BuBrowseriƒuƒ‰ƒEƒUjv‚ł͂Ȃ­uPlayeriƒvƒŒƒCƒ„[jv‚Æ‚¢‚¤Œ¾—t‚ð—p‚¢‚é‚Ì‚ÍAHTML ƒRƒ“ƒeƒ“ƒc‚̂قƂñ‚Ç‚ªÃ“I‚ȃy[ƒW‚Å‚ ‚é‚̂ɑ΂µAUJML ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒAƒNƒeƒBƒu‚©‚“®“I‚Å‚ ‚邱‚ƂɗR—ˆ‚µ‚Ä‚¢‚Ü‚·BUJML ‚Í’Êí‚Ì HTML ‚ł͂Ȃ­AƒXƒNƒŠƒvƒeƒBƒ“ƒO‚É‚æ‚éƒAƒNƒeƒBƒu‚©‚“®“I‚ȃRƒ“ƒeƒ“ƒc‚ðƒTƒ|[ƒg‚·‚é Dynamic HTMLiDHTMLj‚ÉŽ—‚Ä‚¢‚邯‚¢‚¦‚é‚Å‚µ‚傤B

 

‘¼‚̃}[ƒNƒAƒbƒvŒ¾Œêƒuƒ‰ƒEƒU‚ƈقȂèAUIE Player ‚Í UJML ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚ð’¼Ú•\ަ‚µ‚Ü‚¹‚ñBƒpƒtƒH[ƒ}ƒ“ƒX‚Ìő剻‚ÆƒŠƒ\[ƒXÁ”ïiCPU‚ƃƒ‚ƒŠj‚ÌŒø—¦‰»‚ð}‚邽‚ß‚ÉAUJML ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚Í UIE Player ‚ªˆ—‰Â”\‚ȃoƒCƒgƒR[ƒhƒtƒ@ƒCƒ‹‚ɃRƒ“ƒpƒCƒ‹‚·‚é•K—v‚ª‚ ‚è‚Ü‚·BƒRƒ“ƒpƒCƒ‰‚Í UJML ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚ðŒø—¦‚Ì‚‚¢ŽÀsŒ`Ž®‚ɃRƒ“ƒpƒCƒ‹‚µ‚Ü‚·B‚»‚ÌÛAŒ³‚Ì UJML ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚𬂳‚ȃTƒCƒY‚Ɉ³k‚µA‚ƒRƒXƒg‚©‚‘шæ‚ÌŒÀ‚ç‚ꂽƒƒCƒ„ƒŒƒXƒlƒbƒgƒ[ƒNã‚ł̒ÊM”\—¦‚ð‚‚߂܂·B

 

ƒXƒ^ƒeƒBƒbƒN VS ƒ_ƒCƒiƒ~ƒbƒN

ƒRƒ“ƒpƒCƒ‰‚Í UJBC ƒtƒ@ƒCƒ‹‚ƌĂ΂ê‚éƒRƒ“ƒpƒCƒ‹Ï‚Ý‚Ì UJML ƒtƒ@ƒCƒ‹‚ðƒIƒtƒ‰ƒCƒ“‚Å쬂·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B ƒRƒ“ƒpƒCƒ‰‚͂܂½AƒT[ƒo‚ɃCƒ“ƒXƒg[ƒ‹‚·‚邱‚Ƃɂæ‚èƒIƒ“ƒfƒ}ƒ“ƒh‚ȃRƒ“ƒpƒCƒ‹‚ª‰Â”\‚ɂȂè‚Ü‚·B ŽŸ‚Ì2‚‚Ì}‚Å‚ÍAUJML ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŠJ”­‚µ”z•z‚·‚éÛ‚És‚¤ì‹Æ‚ð‚»‚ê‚¼‚ê‚̃P[ƒX‚É“–‚Ă͂߂ĉðà‚µ‚Ä‚¢‚Ü‚·B ʼn‚Ì}‚ł̓Iƒtƒ‰ƒCƒ“‚ŃRƒ“ƒpƒCƒ‹‚µ‚½ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðƒfƒoƒCƒX‚ɃvƒŠƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¢‚Ü‚·B ŽŸ‚Ì}‚ł̓fƒoƒCƒX‚©‚ç‚ÌƒŠƒNƒGƒXƒg‚ɉž‚¶‚ÄAƒT[ƒo[‘¤‚ŃAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð“®“I‚ɃRƒ“ƒpƒCƒ‹‚µ‚Ä‚¢‚Ü‚·B ‚±‚Ì2‚‚̓Rƒ“ƒpƒCƒ‹•û–@‚Ì“ñ‹É’[‚Å‚·‚ªA‚±‚êˆÈŠO‚É‚à‘½‚­‚̃oƒŠƒG[ƒVƒ‡ƒ“‚ª‘¶Ý‚µ‚Ü‚·B

 

}FƒRƒ“ƒpƒCƒ‹Ïƒtƒ@ƒCƒ‹‚É‚æ‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì”z•z

 

}Fƒ_ƒCƒiƒ~ƒbƒNƒRƒ“ƒpƒCƒ‹‚É‚æ‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì”z•z

 

‚±‚Ì2‚‚̔z•zƒ‚ƒfƒ‹‚ɑΉž‚·‚邽‚ß‚ÉAUIE Player ‚Í http ‚Æ file ‚Ì—¼ URL ƒXƒL[ƒ€‚ɑΉž‚µ‚Ä‚¢‚Ü‚·B

 

UIE Player ‚Í HTML ƒuƒ‰ƒEƒU‚Æ“¯—l‚É—š—ð‹@”\‚ð”õ‚¦‚Ä‚¢‚Ü‚·B—š—ð‚Æ‚ÍAŽÀs’†‚Ì UJML ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚ç’¼‘O‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚É–ß‚ê‚邱‚Æ‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·BƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð‹N“®‚·‚é‚É‚Í _run() ŠÖ”‚ðŽg—p‚µ‚Ü‚·B‚»‚ÌÛA‹N“®‡‚ɉž‚¶‚ăAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒqƒXƒgƒŠ[ƒXƒ^ƒbƒN‚ɒljÁ‚³‚ê‚Ü‚·BƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðƒAƒ“ƒ[ƒh‚·‚é‚É‚Í _unload() ŠÖ”‚ðŽg—p‚µ‚Ü‚·BƒAƒ“ƒ[ƒh‚µ‚½ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̓Xƒ^ƒbƒN‚©‚çÁ‹Ž‚³‚êA’¼‘O‚ÉŽÀs‚³‚ê‚Ä‚¢‚½ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªÄ‹N“®‚³‚ê‚Ü‚·BƒfƒoƒCƒXã‚Å‹N“®‚µ‚½ UIE Player ‚ªÅ‰‚ÉŽÀs‚·‚ׂ«ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ URL ‚ÌÝ’è•û–@‚â‹Lq•û–@‚̓vƒ‰ƒbƒgƒtƒH[ƒ€‚Ɉˑ¶‚µ‚Ü‚·B‚±‚ê‚ÍA–{ƒhƒLƒ…ƒƒ“ƒg‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“EƒfƒvƒƒCƒƒ“ƒg‚ÌÍ‚Åà–¾‚µ‚Ä‚¢‚Ü‚·B

ƒp[ƒeƒBƒVƒ‡ƒ“

•¡”‚Ì HTML ƒy[ƒW‚©‚çƒEƒFƒuƒTƒCƒg‚ð\’z‚Å‚«‚é‚̂Ɠ¯—l‚ÉAUJML ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð•¡”‚̃p[ƒeƒBƒVƒ‡ƒ“‚©‚ç\¬‚·‚邱‚Æ‚ª‰Â”\‚Å‚·B_run() ŠÖ”‚É‚æ‚Á‚ēǂݞ‚Þƒp[ƒeƒBƒVƒ‡ƒ“‚̓AƒvƒŠƒP[ƒVƒ‡ƒ“‚ÌuƒƒCƒ“ƒp[ƒeƒBƒVƒ‡ƒ“v‚ ‚é‚¢‚Íueƒp[ƒeƒBƒVƒ‡ƒ“v‚ƌĂ΂ê‚Ü‚·B_link() ŠÖ”‚œǂݞ‚ÝA_unlink() ŠÖ”‚ŃAƒ“ƒ[ƒh‚·‚éƒp[ƒeƒBƒVƒ‡ƒ“‚ÍŽqƒp[ƒeƒBƒVƒ‡ƒ“‚ƌĂ΂ê‚Ü‚·B‚±‚ê‚ç‚ÌŠÖ”‚Ì–¼‘O‚̓oƒCƒiƒŠŒ`Ž®‚ÌŽÀsƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚â DLL ‚Ȃǂ̖½–¼‹K‘¥‚ɉˆ‚Á‚Ä–½–¼‚³‚ê‚Ä‚¢‚Ü‚·BUJML ƒp[ƒeƒBƒVƒ‡ƒ“‚Í—˜—p•û–@‚É‚æ‚Á‚Ä HTML ƒy[ƒW‚ƃoƒCƒiƒŠ DLL ‚Ì—¼“Á«‚𕹂¹Ž‚‚±‚Æ‚ªo—ˆ‚Ü‚·B_link() ŠÖ”‚ÅƒŠƒ“ƒN‚µ‚½ƒp[ƒeƒBƒVƒ‡ƒ“‚̓qƒXƒgƒŠ[ƒXƒ^ƒbƒN‚ɒljÁ‚³‚ê‚Ü‚¹‚ñB‚»‚Ì‘ã‚í‚èA‚±‚̃p[ƒeƒBƒVƒ‡ƒ“‚͌ĂÑo‚µŒ³‚ÌŽqƒp[ƒeƒBƒVƒ‡ƒ“‚ƂȂèAeiŒÄ‚Ño‚µŒ³j‚ªƒAƒ“ƒ[ƒh‚³‚ê‚邯‹¤‚ɃAƒ“ƒ[ƒh‚³‚ê‚Ü‚·B

 

ƒƒ‚ƒŠƒŠƒ\[ƒX‚ðŽg—p‚·‚éƒp[ƒeƒBƒVƒ‡ƒ“‚̓qƒXƒgƒŠ[ƒXƒ^ƒbƒN‚̈ê”Ôã‚É‚ ‚錻݂̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ÆA‚»‚±‚©‚烊ƒ“ƒN‚³‚ê‚Ä‚¢‚éƒp[ƒeƒBƒVƒ‡ƒ“‚ÉŒÀ‚ç‚ê‚Ü‚·BƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒqƒXƒgƒŠ[ƒXƒ^ƒbƒN‚̈ê”Ôã‚łȂ­‚È‚Á‚½Žž‚ÉA‚»‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ªŽg—p‚·‚é‚·‚ׂẴƒ‚ƒŠƒŠƒ\[ƒX‚͉ð•ú‚³‚êAV‚µ‚¢ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚éŽg—p‚ª‰Â”\‚ɂȂè‚Ü‚·B

 

ƒƒ‚F_run() ŠÖ”‚ðŒÄ‚уAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒqƒXƒgƒŠ[ƒXƒ^ƒbƒN‚̈ê”Ôã‚Ƀ[ƒh‚³‚ê‚Ä‚¢‚éŠÔ‚ÍAƒ[ƒh‚ªŠ®—¹‚·‚é‚܂Ō»Ý‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒƒ‚ƒŠƒŠƒ\[ƒX‚ðÁ”‚Ü‚·BƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŠJ”­‚·‚éÛ‚ÍAV‹ŒƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì—¼•û‚ªƒƒ‚ƒŠ‚É“¯Žž‚ÉŽû‚܂邿‚¤‚ÉÝŒv‚µ‚Ä‚­‚¾‚³‚¢B

 

‚±‚Ì–â‘è‚ð‰ñ”ð‚·‚é•û–@‚̈ê‚‚ÉAƒƒ‚ƒŠ‚ÌÁ”ï—Ê‚ª­‚È‚¢’†ŠÔƒAƒvƒŠƒP[ƒVƒ‡ƒ“iƒ[ƒ_[j‚ð Žg—p‚·‚é•û–@‚ª‚ ‚è‚Ü‚·B‚±‚̃hƒLƒ…ƒƒ“ƒg‚É‚ ‚éuAppSplash.ujmlv‚Ì—á‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B

 

ŽŸ‚Ì}‚ÍAˆÈ‰º‚Ì‚±‚Æ‚ª‹N‚±‚Á‚½Œã‚Ì UIE Player ‚̃qƒXƒgƒŠ[ƒXƒ^ƒbƒN‚Ìó‘Ô‚ðŽ¦‚µ‚Ä‚¢‚Ü‚·F

 

1.      UIE Player ‚ª App 1 ‚ðƒfƒtƒHƒ‹ƒg‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚Æ‚µ‚Ä‹N“®B ‚±‚ê‚É‚æ‚èAApp 1 ‚ªƒqƒXƒgƒŠ[ƒXƒ^ƒbƒN‚̈ê”Ô‰º‚Å‚ ‚é0”Ô–Ú‚ÉŠi”[‚³‚ê‚éB

2.      App 1 ‚ª App 2 ‚ðŽÀs‚µAApp 2 ‚ªƒqƒXƒgƒŠ[ƒXƒ^ƒbƒN‚̈ê”Ôã‚Å‚ ‚é1”Ô–Ú‚ÉŠi”[‚³‚ê‚éB

3.      App 2 ‚ªƒp[ƒeƒBƒVƒ‡ƒ“ Part A ‚ðƒŠƒ“ƒNB

4.      App 1 ‚Í‚±‚ÌŽž“_‚Ńƒ‚ƒŠ‚𕨗“I‚Éè—L‚µ‚ĂȂ¢‚½‚ßAƒOƒŒ[•\ަB

 

 

App 2 ‚ª _unload() ŠÖ”‚ðŒÄ‚ÑAŽ©g‚ðƒAƒ“ƒ[ƒh‚·‚éB ‚·‚邯 UIE Player ‚Í App 1 ‚ðÄ‹N“®‚µAƒqƒXƒgƒŠ[ƒXƒ^ƒbƒN‚ÍŽŸ‚Ì}‚̂悤‚ɂȂéF

 

UIE Player ‚͂قƂñ‚ǂ̃fƒoƒCƒX‚É‚¨‚¢‚Ä UJML ƒtƒ@ƒCƒ‹‚ðƒ[ƒJƒ‹‚ɃLƒƒƒbƒVƒ…‚µA ƒlƒbƒgƒ[ƒNŒo—R‚ÌĎ擾‚ð–h‚¢‚Å‚¢‚Ü‚·B

 

UIE Player ‚Í‘½‚­‚̃vƒ‰ƒbƒgƒtƒH[ƒ€‚É‚¨‚¢‚Ä uƒvƒƒpƒeƒBƒoƒbƒOv‚Æ‚¢‚¤Œ`Ž®‚Å ƒ[ƒJƒ‹‚ÅŽ‘±“I‚ȃXƒgƒŒ[ƒW‚ð’ñ‹Ÿ‚µ‚Ä‚¢‚Ü‚·B ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̓vƒƒpƒeƒBƒoƒbƒO‚ð’Ê‚¶‚Ä­—ʂ̃f[ƒ^‚ð’[––‚ɕۑ¶‚·‚邱‚Ƃɂæ‚èA Ž©g‚Ìó‘Ԃ̈ꕔ‚ð•Û‘¶‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B

ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­

ŽŸ‚̃ZƒNƒVƒ‡ƒ“‚Å‚ÍAUjinn[1]‚Æ‚¢‚¤ ƒQ[ƒ€‚ÌŠJ”­‚ð’Ê‚¶‚Ä UJML ‚Ì‹@”\‚ðà–¾‚µ‚Ü‚·B‚±‚̃Q[ƒ€‚ÍuSameGamev‚Æ‚¢‚¤ƒQ[ƒ€‚ªƒx[ƒX‚ɂȂÁ‚Ä‚¨‚èA ŽŸ‚̂悤‚ÈŠî–{Žd—l‚ðŽ‚Á‚Ä‚¢‚Ü‚·B

 

ƒAƒvƒŠƒP[ƒVƒ‡ƒ“–¼Fujinn

 

–Ú“IF

 

ƒOƒŠƒbƒh‚©‚ç‰Â”\‚ÈŒÀ‚è‚̃{ƒbƒNƒX‚ðŽæ‚èœ‚«AƒXƒRƒA‚ðÅ‘å‚É‚·‚邱‚ÆB

 

—V‚Ñ•ûF

 

㉺¶‰E‚É“¯F‚̃{ƒbƒNƒX‚ª1‚ˆÈã‚ ‚éê‡A

‚»‚ê‚ç‚̃{ƒbƒNƒX‚ð‘I‘ð‚µ‚ÄŽæ‚蜂­‚±‚Æ‚ª‚Å‚«‚Ü‚·B

ƒ{ƒbƒNƒX‚ƃ{ƒbƒNƒX‚Í—×Ú‚µ‚ĂȂ¯‚ê‚΂Ȃè‚Ü‚¹‚ñB

 

“¾“_‚ÌŒvŽZ•û–@F

 

ƒ{ƒbƒNƒX‚ðŽæ‚èœ‚­‚Æ(n) * (n - 1) ‚ª“¾“_‚ɉÁŽZ‚³‚ê‚Ü‚·B

n ‚Í“¯Žž‚ÉÁ‚µ‚½ƒ{ƒbƒNƒX‚Ì”‚ðŽ¦‚µ‚Ü‚·B

 

ƒQ[ƒ€I—¹Žž‚ÉŽc‚Á‚Ä‚¢‚éƒ{ƒbƒNƒX‚Ì”‚̓yƒiƒ‹ƒeƒB‚Æ‚µ‚ÄŒ¸“_‚³‚ê‚Ü‚·B

‚·‚ׂẴ{ƒbƒNƒX‚ðŽæ‚èœ‚¢‚½ê‡‚̓{[ƒiƒX‚Æ‚µ‚Ä(mScore / 4)‚ª—^‚¦‚ç‚ê‚Ü‚·B

 

ŽŸ‚̃XƒNƒŠ[ƒ“ƒVƒ‡ƒbƒg‚ÍAƒQ[ƒ€ƒŒƒCƒAƒEƒg‚Æ“®ì‚ðŽ¦‚µ‚Ä‚¢‚Ü‚·B

 

 

ƒvƒŒƒCƒ„[‚ªŒ»Ý‚̃{ƒbƒNƒXi¶ãj‚ð‘I‘ð‚µ‚½‚½‚ßA‰©F‚̃{ƒbƒNƒX‚ƉE‘¤‚É—×Ú‚·‚é‚Q‚‚̉©F‚¢ƒ{ƒbƒNƒX‚ªÁ‚¦‚Ü‚·B

 

 

SDK

ˆÈ~‚ÌŠeƒZƒNƒVƒ‡ƒ“‚Å‚ÍA”‘½‚­‚Ì UJML ƒTƒ“ƒvƒ‹‚ðЉ‚Ä‚¢‚Ü‚·B ‚±‚ê‚ç‚Ì UJML ‚Í‚·‚ׂÄuUjinnv‚ÌŠJ”­‚ÉŠñ—^‚µ‚Ä‚¢‚Ü‚·BUJML ‚̃Tƒ“ƒvƒ‹‚ÍA ‚±‚̃hƒLƒ…ƒƒ“ƒg‚É“¯«‚³‚ê‚Ä‚¢‚éƒtƒ@ƒCƒ‹‚ÉŽû‚ß‚ç‚ê‚Ä‚¢‚Ü‚·B ¥”ñASDK ‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä SDK ‚É“¯«‚³‚ê‚Ä‚¢‚éƒTƒ“ƒvƒ‹‚ðŽÀs‚µ‚Ă݂Ă­‚¾‚³‚¢B

ƒCƒ“ƒXƒg[ƒ‹

UIE SDK ‚̃Cƒ“ƒXƒg[ƒ‹•û–@F

 

1.       Java(TM) 2 Platform Standard Edition‚̃Cƒ“ƒXƒg[ƒ‹

ƒTƒ“Eƒ}ƒCƒNƒƒVƒXƒeƒ€ƒY‚ÌJ2SE‚Íujava.sun.com/j2sev‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚Ü‚·B ƒTƒ“‚̃EƒFƒuƒTƒCƒg‚ÌŽg—pà–¾‘‚É]‚Á‚ÄJ2SE Software Development Kit‚ðƒ_ƒEƒ“ƒ[ƒh‚µAƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚­‚¾‚³‚¢B

2.      ŠÂ‹«•Ï”uJAVA_HOMEv‚ðAJ2SE SDK ‚̃‹[ƒgƒfƒBƒŒƒNƒgƒŠ‚Éݒ肵‚Ä‚­‚¾‚³‚¢B ƒfƒtƒHƒ‹ƒg‚Å‚ÍuC:\j2sdk1.4.1_01v‚Å‚·BŠÂ‹«•Ï”‚ÌÝ’è‚ɂ‚¢‚Ä‚Í ‚±‚¿‚ç‚ð‚²——‚­‚¾‚³‚¢B

3.      UIE SDK ‚̃Cƒ“ƒXƒg[ƒ‰‚ðŽÀs‚µ‚Ä‚­‚¾‚³‚¢B

UIE SDK ‚Í
www.uievolution.com ‚©‚çƒ_ƒEƒ“ƒ[ƒh‚µ‚Ä‚­‚¾‚³‚¢B

 

ƒAƒvƒŠƒP[ƒVƒ‡ƒ“

łଂ³‚È UJML ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì—áF

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd">

<ujml>

  <application>

   

  </application>

</ujml>

ƒtƒ@ƒCƒ‹–¼FApplication.ujml

 

ŽŸ‚̎臂ðs‚¢AUIE SDK Debugger ‚Å‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŽÀs‚µ‚Ü‚·F

 

1.      ƒfƒoƒbƒK‚ð‹N“®BuƒXƒ^[ƒg>ƒvƒƒOƒ‰ƒ€>UIEvolution SDKv’†‚ÌuUIEƒfƒoƒbƒK‹N“®v‚ð‘I‘ðB

2.      ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‘I‘ðƒ_ƒCƒAƒƒO‚ÅÝ’è‚ðs‚¤B

a.       Application.ujml ‚ւ̃pƒX‚ð“ü—ÍB ‚à‚µInside UJML ZIPƒtƒ@ƒCƒ‹‚ðuD:\My Documents\Inside UJMLv‚É“WŠJ‚µ‚½ê‡‚Í URL‚Éufile:///D:\My Documents\Inside UJML\UJML\Application.ujmlv‚Æ“ü—Í iuŽQÆvƒ{ƒ^ƒ“‚ðŽg‚Á‚ÄAƒtƒ@ƒCƒ‹‚ðŽw’è‚·‚邱‚Æ‚à‰Â”\jB

b.      ƒXƒLƒ“‚Ì‘I‘ð‚ÅuFlip Phone, MIDP (136x140)v‚ð‘I‘ðB

c.       OK ‚ðƒNƒŠƒbƒNB

3.      ƒc[ƒ‹ƒo[‚Ì Run ƒ{ƒ^ƒ“‚ðƒNƒŠƒbƒNB



4.      ƒfƒoƒCƒXƒGƒ~ƒ…ƒŒ[ƒ^‚ÉŽŸ‚̂悤‚ȉæ–Ê‚ª•\ަ‚³‚ê‚éF


 

 

‰æ–Ê•\ަ

Ujinn ‚Íc‰¡‚̘g‚ðŽg‚Á‚½ƒQ[ƒ€‚Å‚ ‚邽‚ߊiŽqó‚̃{ƒbƒNƒX‚ð•\ަ‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B ‚Ü‚½ƒXƒNƒŠ[ƒ“Åã•”‚ÉŒ»Ý‚̃XƒRƒA‚ƃŒƒxƒ‹‚Ȃǂ̬тð•\ަ‚µ‚Ü‚·B

 

<display> —v‘f‚ðŽg—p‚·‚邯A‰æ–ʂւ̕`‰æ‚ðŠÈ’P‚És‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚±‚±‚ł̓{ƒbƒNƒX‚ÆuScorev‚̃eƒLƒXƒg‚ð•`‚¢‚Ä‚¢‚Ü‚·F

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd">

<ujml>

    <application>

        <display>

            <label>

                <text>Score</text>

                <x>2</x>

                <y>2</y>

                <fg>&_COLOR_BLUE;</fg>

            </label>

            <box>

                <x>5</x>

                <y>20</y>

                <width>30</width>

                <height>50</height>

                <fg>&_COLOR_RED;</fg>

                <bg>&_COLOR_GREEN;</bg>

            </box>

        </display>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F Display.ujml

 

SDK ƒfƒoƒbƒKã‚Å Display.ujml ‚ðŽÀs‚·‚邯AƒGƒ~ƒ…ƒŒ[ƒ^‚ªŽŸ‚ÌŒ‹‰Ê‚ð•Ô‚µ‚Ü‚·F

 

 

‚±‚Ì—á‚ł̓fƒtƒHƒ‹ƒg‚Ì <display> —v‘f‚ðŽg‚Á‚Ä‚¢‚Ü‚·B ƒfƒtƒHƒ‹ƒg‚Ì <display> ‚Ì“à—e‚ÍXV‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢‚½‚ßA ÓI‚È”wŒi‰æ‘œ‚Ȃǂ̕\ަ‚ÉŒü‚¢‚Ä‚¢‚Ü‚·B

ƒXƒe[ƒg

UJML ‚Å“®“I‚ȉæ–Ê•\ަ‚ðs‚¤‚É‚Í <display> —v‘f‚ð’ljÁ‚Å‹Lq‚µ‚Ü‚·B ƒvƒƒOƒ‰ƒ€‚ð’Ê‚¶‚ăXƒe[ƒg•Ï”‚Ì’l‚ÌXV‚·‚邯‚±‚ê‚ç‚Ì—v‘f‚ð§Œäi•\ަAXVA”ñ•\ަj‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B

 

UJML ‚̃Xƒe[ƒg‚͕ϔ‚ªŽæ‚蓾‚é’l‚Ì‚»‚ꂼ‚ê‚ɂ‚«1‚ˆÈã‚Ì <display> —v‘f‚ðŠÖ˜A‚¯‚Ü‚·B —Ⴆ‚΃u[ƒŠƒAƒ“•Ï”‚Í‚Q‚‚̒l‚ðŽæ‚è“¾‚邽‚ßAtrue ‚Æ false ‚Ì2‚‚Ìó‘Ô‚ð•\‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B UJML‚Å‚ÍA‚±‚ê‚ç‚Ì’l‚à‚µ‚­‚̓Xƒe[ƒg‚²‚Æ‚É<display> —v‘f‚ð’è‹`‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B

 

ŽŸ‚Ì—á‚Å‚ÍAƒu[ƒŠƒAƒ“Œ^‚̃Xƒe[ƒg•Ï” sBox ‚ª true ‚Ì’l‚ðŽæ‚Á‚½ê‡‚Ì <display> —v‘f‚ª‚P‚Â’è‹`‚µ‚Ä‚¢‚Ü‚·B sBox ‚ª true ‚Éݒ肳‚ê‚邯‰æ–Êã‚Ƀ{ƒbƒNƒX‚ª•\ަ‚³‚ê‚Ü‚·B ‹t‚É false ‚ɃZƒbƒg‚³‚ꂽê‡Afalse ‚É’è‹`‚¯‚ç‚ꂽ <display> ‚ª‘¶Ý‚µ‚È‚¢‚½‚߃{ƒbƒNƒX‚ª”ñ•\ަ‚ƂȂè‚Ü‚·B

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd">

<ujml>

    <application>

        <state-variables>

            <state-var name="sBox" type="boolean"/>

        </state-variables>

        <script>

            sBox = true;

        </script>

        <states>

            <state var="sBox">

                <transition value="true">

                    <display>

                        <box>

                            <x>5</x>

                            <y>20</y>

                            <width>30</width>

                            <height>50</height>

                            <fg>&_COLOR_RED;</fg>

                            <bg>&_COLOR_GREEN;</bg>

                        </box>

                    </display>

                </transition>

            </state>

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F DisplayState.ujml

 

‚±‚Ì—á‚ðŽÀs‚·‚é‚ÆŽŸ‚̂悤‚ȉæ–Ê‚ª•\ަ‚³‚ê‚Ü‚·F

 

 

ŽŸ‚Ì—á‚ł͂³‚«‚Ù‚Ç‚Ì Display.ujml ‚ð•ÏX‚µA <display> —v‘f‚ðƒeƒLƒXƒg‚ƃ{ƒbƒNƒX‚Ì‚»‚ꂼ‚ê‚É•ªŠ„‚µ‚Ä‹Lq‚µ‚Ä‚¢‚Ü‚·B •ªŠ„‚É‚æ‚èAƒeƒLƒXƒg‚ƃ{ƒbƒNƒX‚Ì‚»‚ꂼ‚ê‚ɑΉž‚·‚éƒXƒe[ƒg•Ï”‚ð true ‚Ü‚½‚Í false ‚Éݒ肵 ŠeX‚ð“Æ—§‚µ‚Ä•\ަE”ñ•\ަ‚·‚邱‚Æ‚ª‰Â”\‚ɂȂè‚Ü‚µ‚½B

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd">

<ujml>

    <application>

        <state-variables>

            <state-var name="sScore" type="boolean"/>

            <state-var name="sBox" type="boolean"/>

        </state-variables>

        <script>

            sScore = true;

            sBox = true;

        </script>

        <states>

            <state var="sScore">

                <transition value="true">

                    <display>

                        <label>

                            <text>Score</text>

                            <x>2</x>

                            <y>2</y>

                            <fg>&_COLOR_BLUE;</fg>

                        </label>

                    </display>

                </transition>

            </state>

            <state var="sBox">

                <transition value="true">

                    <display>

                        <box>

                            <x>5</x>

                            <y>20</y>

                            <width>30</width>

                            <height>50</height>

                            <fg>&_COLOR_RED;</fg>

                            <bg>&_COLOR_GREEN;</bg>

                        </box>

                    </display>

                </transition>

            </state>

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F DisplayStates.ujml

 

UJML ‚ƃXƒe[ƒg‚ɂ‚¢‚ÄŠo‚¦‚Ä‚¨‚­‚ׂ«Å‚àd—v‚È‚±‚ÆF

 

‰æ–Ê•\ަ‚ðXV‚·‚é—Bˆê‚Ì•û–@‚ÍA <display> —v‘f‚ðŠÜ‚ÞƒXƒe[ƒg•Ï”‚Ì’l‚ð•ÏX‚·‚邱‚ÆB

ƒXƒe[ƒg•Ï”‚ÉŒ»Ý‚Ì’l‚ðÄ“xݒ肵‚Ä‚à•\ަ‚ɉe‹¿‚ð—^‚¦‚Ü‚¹‚ñB ‰æ–Ê‚ð‘‚«Š·‚¦‚é‚É‚ÍA’l‚ð‘‚«Š·‚¦‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ B [2] ‚±‚ê‚̓u[ƒŠƒAƒ“Œ^‚̕ϔ‚æ‚è‚à®”Œ^‚̃Xƒe[ƒg•Ï”‚̂ق¤‚ªƒpƒƒtƒ‹‚È‚±‚Æ‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·B ”ñ•\ަ‚Ìó‘Ô‚ª•K—v‚Èê‡Aƒu[ƒŠƒAƒ“Œ^ƒXƒe[ƒg•Ï”‚ł͒ÊíA’l‚ª true ‚Ìꇂɕ\ަ‚ðs‚¢A false ‚Ìꇂɔñ•\ަ‚ðs‚¢‚Ü‚·B‚»‚Ì‚½‚ߎÀŽ¿1Ží—Þ‚Ì <display> —v‘f‚µ‚©Ž‚Ă܂¹‚ñB

Z-order

<display> —v‘f‚Í Z-ORDER ‚ɉž‚¶‚Ä”w–Ê‚©‚ç‘O–Ê‚Éd‚Ë‚ç‚êAƒfƒBƒXƒvƒŒƒCã‚É•`‰æ‚³‚ê‚Ü‚·B ‚±‚ê‚Í <display> —v‘f‚ª UJML ƒ\[ƒXƒtƒ@ƒCƒ‹‚ÉoŒ»‚·‚釘‚Ɉê’v‚µ‚Ä‚¢‚Ü‚·B ƒfƒtƒHƒ‹ƒg‚Ì <display> ‚Í Z-ORDER ‚ª’á‚­Å”w–ʂɕ`‰æ‚³‚ê‚Ü‚·B ƒtƒ@ƒCƒ‹‚ÌÅŒã‚É‹Lq‚·‚é <display> ‚Í Z-ORDER ‚ª‚‚­Å‘O–ʂɕ`‰æ‚³‚ê‚Ü‚· [3]B

 

ŽŸ‚Ì—á‚Å‚Í DisplayStates.ujml ‚É2‚‚̃{ƒbƒNƒX‚Æ”wŒi‚ð’ljÁ‚µ‚Ä‚¢‚Ü‚·B ‚Ü‚½ UJML ‚Ì”z—ñ‚Ì쬂Ǝg‚¢•û‚ɂ‚¢‚Ä‚àЉ‚Ä‚¢‚Ü‚·B sBox ‚Í‘O‰ñ‚̃Tƒ“ƒvƒ‹‚É‚¨‚¢‚Ă͒Pƒ‚ȃu[ƒŠƒAƒ“Œ^‚̕ϔ‚Å‚µ‚½‚ªA ‚±‚±‚ł͌•ʕ\ަ‚ª‰Â”\‚Ȃ悤‚É—v‘f”‚ª3‚‚̃u[ƒŠƒAƒ“Œ^‚Ì”z—ñ‚ɂȂÁ‚Ä‚¢‚Ü‚·B ÅŒã‚ÉA‚±‚̃vƒƒOƒ‰ƒ€‚ł̓rƒWƒ…ƒAƒ‹—v‘f‚Ì ARGBiƒAƒ‹ƒtƒ@AÔA—ÎAÂj‚Ì’l‚ðŽw’è‚·‚é•û–@‚ðЉ‚Ä‚¢‚Ü‚·B

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd">

<ujml>

    <application>

        <state-variables>

            <state-var name="sScore" type="boolean"/>

            <state-var name="sBox" type="boolean" size="3"/>

        </state-variables>

        <script>

            sScore = true;

            sBox[ 0 ] = true;

            sBox[ 1 ] = true;

            sBox[ 2 ] = true;

        </script>

        <display>

            <box>

                <width>136</width>

                <height>140</height>

            </box>

        </display>

        <states>

            <state var="sScore">

                <transition value="true">

                    <display>

                        <label>

                            <text>Score</text>

                            <x>2</x>

                            <y>2</y>

                            <fg>&_COLOR_BLUE;</fg>

                        </label>

                    </display>

                </transition>

            </state>

            <state var="sBox" index="0">

                <transition value="true">

                    <display>

                        <box>

                            <x>5</x>

                            <y>20</y>

                            <width>30</width>

                            <height>50</height>

                            <fg>0xffcccccc</fg>

                            <bg>0xffcccccc</bg>

                        </box>

                    </display>

                </transition>

            </state>

            <state var="sBox" index="1">

                <transition value="true">

                    <display>

                        <box>

                            <x>10</x>

                            <y>25</y>

                            <width>30</width>

                            <height>50</height>

                            <fg>0xff999999</fg>

                            <bg>0xff999999</bg>

                        </box>

                    </display>

                </transition>

            </state>

            <state var="sBox" index="2">

                <transition value="true">

                    <display>

                        <box>

                            <x>15</x>

                            <y>30</y>

                            <width>30</width>

                            <height>50</height>

                            <fg>0xff666666</fg>

                            <bg>0xff666666</bg>

                        </box>

                    </display>

                </transition>

            </state>

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F DisplayZOrder.ujml

 

ƒvƒƒOƒ‰ƒ€‚ÌŽÀsŒ‹‰ÊF

 

ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒƒWƒbƒN

‚±‚ê‚܂ł̗á‚Å‚Í UJML ‚ðŽg‚Á‚ĉæ–ʂɕ¨‚ð•\ަ‚·‚é•û–@‚ð‰ðà‚µ‚Ä‚«‚Ü‚µ‚½B‚Ü‚½ <scirpt> —v‘f‚ðŽg‚Á‚½ƒvƒƒOƒ‰ƒ€ƒƒWƒbƒN‚Ì•\Œ»•û–@‚àŠ_ŠÔŒ©‚邱‚Æ‚ª‚Å‚«‚½‚ÆŽv‚¢‚Ü‚·BUJML ‚͕ϔAŽZpŽ®A˜_—Eƒu[ƒŠƒAƒ“Ž®A•¶Žš—ñŽ®Aƒtƒ[§Œä•¶AŠÖ”‚ƃCƒxƒ“ƒg‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B

•Ï”

‚±‚ê‚܂ł̗á‚Å‚ÍAƒXƒe[ƒg•Ï”‚Ì錾•û–@‚ÆŽg—p•û–@‚ðЉ‚Ü‚µ‚½BƒXƒe[ƒg•Ï”‚̓Xƒe[ƒg‘JˆÚ‚ɑΉž‚·‚邽‚ß‚Ì“à•”“I‚ȃI[ƒo[ƒwƒbƒh‚ðŽ‚Á‚Ä‚¢‚Ü‚·B ‚»‚±‚Å UJML ‚̓Xƒe[ƒg‚ðŽ‚½‚È‚¢’Pƒ•Ï”‚à”õ‚¦‚Ä‚¢‚Ü‚·B ƒXƒe[ƒg•Ï”‚Æ’Pƒ•Ï”‚Í‘¼‚̃vƒƒOƒ‰ƒ€Œ¾Œê‚̕ϔ‚Æ“¯—lAŽ®‚âŽÀs•¶‚ÉŽg—p‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B

 

ŽŸ‚Ì—á‚Å‚ÍAƒXƒRƒA‚Ì’l‚ƃ{ƒbƒNƒX‚ÌF‚ðŠi”[‚·‚邽‚߂̕ϔ‚ð’ljÁ‚µ‚Ä‚¢‚Ü‚·B‚Ü‚½ XML ƒGƒ“ƒeƒBƒeƒB’è‹`‚ðŽg—p‚µ‚½’蔂Ì錾‚ƃfƒBƒXƒvƒŒƒC—v‘f‚É‚¨‚¯‚é•Ï”‚ƒ蔂̎g‚¢•û‚ðЉ‚Ä‚¢‚Ü‚·B

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd" [

    <!ENTITY MAX_BOXES "3">

    <!ENTITY BOX_WIDTH "30">

    <!ENTITY BOX_HEIGHT "50">

]>

<ujml>

    <application>

        <state-variables>

            <state-var name="sScore" type="boolean"/>

            <state-var name="sBox" type="boolean" size="&MAX_BOXES;"/>

        </state-variables>

        <variables>

            <var name="mScore" type="int"/>

            <var name="mBox" type="int" size="&MAX_BOXES;"/>

        </variables>

        <script>

            mScore = 0;

            sScore = true;

            mBox[ 0 ] = 0xffcccccc;

            sBox[ 0 ] = true;

            mBox[ 1 ] = 0xff999999;

            sBox[ 1 ] = true;

            mBox[ 2 ] = 0xff666666;

            sBox[ 2 ] = true;

        </script>

        <display>

            <box>

                <width>136</width> <height>140</height>

            </box>

        </display>

        <states>

            <state var="sScore">

                <transition value="true">

                    <display>

                        <label>

                            <text><eval>mScore</eval></text>

                            <x>2</x> <y>2</y>

                            <fg>&_COLOR_BLUE;</fg>

                        </label>

                    </display>

                </transition>

            </state>

            <state var="sBox" index="0">

                <transition value="true">

                    <display>

                        <box>

                            <x>5</x> <y>20</y>

                            <width>&BOX_WIDTH;</width>

                            <height>&BOX_HEIGHT;</height>

                            <fg><eval>mBox[ 0 ]</eval></fg>

                            <bg><eval>mBox[ 0 ]</eval></bg>

                        </box>

                    </display>

                </transition>

            </state>

            <state var="sBox" index="1">

                <transition value="true">

                    <display>

                        <box>

                            <x>10</x> <y>25</y>

                            <width>&BOX_WIDTH;</width>

                            <height>&BOX_HEIGHT;</height>

                            <fg><eval>mBox[ 1 ]</eval></fg>

                            <bg><eval>mBox[ 1 ]</eval></bg>

                        </box>

                    </display>

                </transition>

            </state>

            <state var="sBox" index="2">

                <transition value="true">

                    <display>

                        <box>

                            <x>15</x> <y>30</y>

                            <width>&BOX_WIDTH;</width>

                            <height>&BOX_HEIGHT;</height>

                            <fg><eval>mBox[ 2 ]</eval></fg>

                            <bg><eval>mBox[ 2 ]</eval></bg>

                        </box>

                    </display>

                </transition>

            </state>

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹FVariables.ujml

 

•\ަŒ‹‰ÊF

 

 

ƒXƒNƒŠƒvƒg

UJML‚̓AƒvƒŠƒP[ƒVƒ‡ƒ“‚̃tƒ[§Œä‚ÆŽ®‚Ì•]‰¿‚Ì‚½‚ß‚É ‚Q‚‚̃XƒNƒŠƒvƒgŒ¾Œê‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B ‚±‚±‚܂ł̗á‚Å‚ÍA UJML ‚ª‘Ήž‚µ‚Ä‚¢‚é ECMA ƒXƒNƒŠƒvƒgiJavaScriptj‚̃TƒuƒZƒbƒg‚ðŽg‚Á‚Ä‚¢‚Ü‚µ‚½B JavaScript ‚Í <script> —v‘f‚É‹Lq‚µ‚Ü‚·B CAC++AJava ‚»‚µ‚Ä JavaScript ‚̂悤‚ȃvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚ɸ’Ê‚µ‚½l‚Å‚ ‚ê‚ÎA UJML ƒAƒvƒŠƒP[ƒVƒ‡ƒ““à‚Å JavaScript ‚ð‹Lq‚·‚é‚â‚è•û‚ªŽg‚¢‚â‚·‚¢‚Å‚µ‚傤B

 

UJML ‚͂܂½AJavaScript ‚Æ“¯“™‚Ì‹@”\‚ðŽ‚¿A‚©‚ÂAXML \•¶‚ðˆÛŽ‚·‚é UJML ƒXƒNƒŠƒvƒg‚É‚à‘Ήž‚µ‚Ä‚¢‚Ü‚·B UJML ƒXƒNƒŠƒvƒg‚Í <execute> —v‘f‚É‹Lq‚µ‚Ü‚·B ƒvƒƒOƒ‰ƒ}[‚ª‘Oq‚̃vƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚ɸ’Ê‚µ‚ĂȂ¢ê‡‚ÍAUJML ƒXƒNƒŠƒvƒg‚ÌŠwK‚©‚çŽn‚ß‚é‚Ù‚¤‚ªŠy‚Å‚µ‚傤B ‚µ‚©‚µ UJML ƒXƒNƒŠƒvƒg‚Íç’·‚ɂȂ肪‚¿‚Å‚ ‚邽‚ßA•¡ŽG‚ÈŒvŽZ‚âƒvƒƒOƒ‰ƒ€‚̃tƒ[§Œä‚ð s‚¤ê‡‚ɃR[ƒh‚̉“ǫ‚ªˆ«‚­‚È‚Á‚Ä‚µ‚Ü‚¢‚Ü‚·BƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃vƒƒOƒ‰ƒ€ƒƒWƒbƒN‚ª •¡ŽG‚ɂȂéꇂÍAJavaScript ‚Ì•û‚ªŠÈ’P‚Å‚ ‚邯Œ¾‚¦‚é‚Å‚µ‚傤B

 

ŽŸ‚Ì—á‚Å‚Í JavaScript ‚Æ UJML ƒXƒNƒŠƒvƒg‚ª“¯“™‚Å‚ ‚邱‚Æ‚ðŽ¦‚µ‚Ä‚¢‚Ü‚·B ‚±‚êˆÈŠO‚Ì—á‚Í‘S‚Ä JavaScript ‚ðŽg‚Á‚Ä‚¢‚Ü‚·B

 

‚±‚Ì—á‚Í‘O‰ñ‚Ì Variables.ujml ‚Ì UJML ƒXƒNƒŠƒvƒg”łł·F

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd" [

    <!ENTITY MAX_BOXES "3">

    <!ENTITY BOX_WIDTH "30">

    <!ENTITY BOX_HEIGHT "50">

]>

<ujml>

    <application>

        <state-variables>

            <state-var name="sScore" type="boolean"/>

            <state-var name="sBox" type="boolean" size="&MAX_BOXES;"/>

        </state-variables>

        <variables>

            <var name="mScore" type="int"/>

            <var name="mBox" type="int" size="&MAX_BOXES;"/>

        </variables>

        <execute>

            <set var="mScore">0</set>

            <set-state var="sScore">true</set-state>

            <set var="mBox">

                <index>0</index>

                <val>0xffcccccc</val>

            </set>

            <set-state var="sBox">

                <index>0</index>

                <val>true</val>

            </set-state>

            <set var="mBox">

                <index>1</index>

                <val>0xff999999</val>

            </set>

            <set-state var="sBox">

                <index>1</index>

                <val>true</val>

            </set-state>

            <set var="mBox">

                <index>2</index>

                <val>0xff666666</val>

            </set>

            <set-state var="sBox">

                <index>2</index>

                <val>true</val>

            </set-state>

        </execute>

        <display>

            <box>

                <width>136</width>

                <height>140</height>

            </box>

        </display>

        <states>

            <state var="sScore">

                <transition value="true">

                    <display>

                        <label>

                            <text>

                                <ref var="mScore"/>

                            </text>

                            <x>2</x>

                            <y>2</y>

                            <fg>&_COLOR_BLUE;</fg>

                        </label>

                    </display>

                </transition>

            </state>

            <state var="sBox" index="0">

                <transition value="true">

                    <display>

                        <box>

                            <x>5</x>

                            <y>20</y>

                            <width>&BOX_WIDTH;</width>

                            <height>&BOX_HEIGHT;</height>

                            <fg>

                                <ref var="mBox">

                                    <index>0</index>

                                </ref>

                            </fg>

                            <bg>

                                <ref var="mBox">

                                    <index>0</index>

                                </ref>

                            </bg>

                        </box>

                    </display>

                </transition>

            </state>

            <state var="sBox" index="1">

                <transition value="true">

                    <display>

                        <box>

                            <x>10</x>

                            <y>25</y>

                            <width>&BOX_WIDTH;</width>

                            <height>&BOX_HEIGHT;</height>

                            <fg>

                                <ref var="mBox">

                                    <index>1</index>

                                </ref>

                            </fg>

                            <bg>

                                <ref var="mBox">

                                    <index>1</index>

                                </ref>

                            </bg>

                        </box>

                    </display>

                </transition>

            </state>

            <state var="sBox" index="2">

                <transition value="true">

                    <display>

                        <box>

                            <x>15</x>

                            <y>30</y>

                            <width>&BOX_WIDTH;</width>

                            <height>&BOX_HEIGHT;</height>

                            <fg>

                                <ref var="mBox">

                                    <index>2</index>

                                </ref>

                            </fg>

                            <bg>

                                <ref var="mBox">

                                    <index>2</index>

                                </ref>

                            </bg>

                        </box>

                    </display>

                </transition>

            </state>

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F UJMLscript.ujml

Ž®

UJML ‚̓vƒƒOƒ‰ƒ}[‚ªˆê”Ê“I‚É—˜—p‚·‚é”’l‰‰ŽZA˜_—‰‰ŽZA‚»‚µ‚Ä•¶Žš—ñ‰‰ŽZ‚̉‰ŽZŽq‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B Ž®‚ÍA’l‚ƕϔ‚ÌŽQÆ‚ª‹–‚³‚ê‚Ä‚¢‚é UJML —v‘f“à‚ÆƒXƒNƒŠƒvƒg“à‚É‹Lq‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B‚±‚Ìê‡AŽ®‚Í UJML ƒXƒNƒŠƒvƒg‚ ‚é‚¢‚Í <eval> —v‘f“à‚Ì JavaScript ‚łȂ¯‚ê‚΂Ȃè‚Ü‚¹‚ñB ‚Ü‚½UJML‚ł͂·‚ׂĂ̑®«’l‚̓Xƒ^ƒeƒBƒbƒN‚Ȓ蔂ł ‚邽‚ßAUJML —v‘f‚Ì‘®«’l‚ÉŽ®‚ð‹Lq‚·‚邱‚Ƃ͂ł«‚Ü‚¹‚ñB

 

ŽŸ‚Ì•\‚ł͎®‚̳‚µ‚¢Žg‚¢•û‚ÆŒë‚Á‚½Žg‚¢•û‚Ì—á‚ðЉ‚Ä‚¢‚Ü‚·F

 

³‚µ‚¢Žg‚¢•û

Œë‚Á‚½Žg‚¢•û

<script>

  x = y * 3;

</script>

 

<box>

  <width><eval>w / 3</eval></width>

  <height><eval>h / 3</eval></height>

</box>

<state var= x + y index= z / 8 >

 

 

 

ŠÖ”

UJML ‚Í”‘½‚­‚̃†ƒeƒBƒŠƒeƒBŠÖ”‚ð”õ‚¦‚Ä‚¢‚Ü‚·B ‚±‚ê‚ç‚ÌŠÖ”‚ɉÁ‚¦A“ÆŽ©‚ÌŠÖ”‚ð’è‹`‚·‚邱‚Æ‚ào—ˆ‚Ü‚·B

 

ŽŸ‚Ì—á‚ł̓fƒoƒCƒX‚̉æ–ʃTƒCƒY‚ɇ‚킹‚½ƒ_ƒCƒiƒ~ƒbƒN‚ȉæ–ʃŒƒCƒAƒEƒg‚ðs‚¤‚½‚ß‚ÉA Ž®‚Æ”Ží—ނ̃rƒ‹ƒgƒCƒ“ŠÖ”‚ð—˜—p‚µ‚Ä‚¢‚Ü‚·B ‚Ü‚½‚±‚Ì—á‚Å‚ÍuƒfƒtƒHƒ‹ƒgEƒXƒe[ƒgv‚Æ‚¢‚¤A”z—ñŒ^‚̃Xƒe[ƒg•Ï”‚Ì‘S—v‘f‚É“¯ˆê‚̃Xƒe[ƒg‚ð’è‹`‚·‚é‹@”\‚ÌŽg‚¢•û‚ðЉ‚Ä‚¢‚Ü‚·B

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd" [

    <!ENTITY MAX_BOXES "3">

]>

<ujml>

    <application>

        <state-variables>

            <state-var name="sScore" type="boolean"/>

            <state-var name="sBox" type="boolean" size="&MAX_BOXES;"/>

        </state-variables>

        <variables>

            <var name="mScore" type="int"/>

            <var name="mBox" type="int" size="&MAX_BOXES;"/>

            <var name="mTextHeight" type="int"/>

            <var name="mScrWidth" type="int"/>

            <var name="mScrHeight" type="int"/>

            <var name="mBoxWidth" type="int"/>

            <var name="mBoxHeight" type="int"/>

        </variables>

        <script>

            mTextHeight = _text_height( 0, 0, 0 );

            mScrWidth = _getIntProperty( &_PROPERTY_INT_SCREEN_WIDTH; );

            mScrHeight = _getIntProperty( &_PROPERTY_INT_SCREEN_HEIGHT; );

            mBoxWidth = mScrWidth / &MAX_BOXES;;

            mBoxHeight = mScrHeight - mTextHeight;

            mScore = 0;

            sScore = true;

            mBox[ 0 ] = 0xffcccccc;

            sBox[ 0 ] = true;

            mBox[ 1 ] = 0xff999999;

            sBox[ 1 ] = true;

            mBox[ 2 ] = 0xff666666;

            sBox[ 2 ] = true;

        </script>

        <display>

            <box>

                <width> <eval>mScrWidth</eval> </width>

                <height> <eval>mScrHeight</eval> </height>

                <fg>&_COLOR_BLACK;</fg>

                <bg>&_COLOR_BLACK;</bg>

            </box>

        </display>

        <states>

            <state var="sScore">

                <transition value="true">

                    <display>

                        <label>

                            <text> <eval>mScore</eval> </text>

                            <x>1</x> <y>1</y>

                            <fg>&_COLOR_YELLOW;</fg>

                        </label>

                    </display>

                </transition>

            </state>

 

ŽŸ‚̃Tƒ“ƒvƒ‹ƒR[ƒh‚ł͔z—ñŒ^‚̃Xƒe[ƒg•Ï” sBox ‚Ì‚·‚ׂĂ̗v‘f‚ð‚P‚‚̃fƒtƒHƒ‹ƒgƒXƒe[ƒg‚Å’è‹`‚µ‚Ä‚¢‚Ü‚·BƒfƒtƒHƒ‹ƒgƒXƒe[ƒg‚ðŽg‚¤Žå‚È–Ú“I‚ÍA”z—ñ“à‚Ì‘SƒXƒe[ƒg‚ª“¯ˆê‚Å‚ ‚éê‡‚É UJML ƒR[ƒh‚Ì‹Lq—Ê‚ðŒ¸‚ç‚·‚±‚Ƃɂ ‚è‚Ü‚·[4]B

 

            <state var="sBox" index="*">

                <transition value="true">

                    <display>

                        <box>

                            <x> <eval>_state_index() * mBoxWidth</eval> </x>

                            <y> <eval>mTextHeight</eval> </y>

                            <width> <eval>mBoxWidth</eval> </width>

                            <height> <eval>mBoxHeight</eval> </height>

                            <fg> <eval>mBox[ _state_index() ]</eval> </fg>

                            <bg> <eval>mBox[ _state_index() ]</eval> </bg>

                        </box>

                    </display>

                </transition>

            </state>

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F Functions.ujml

 

ŽŸ‚̃XƒNƒŠ[ƒ“ƒVƒ‡ƒbƒg‚̓Gƒ~ƒ…ƒŒ[ƒ^‚Å—lX‚ȃfƒoƒCƒXƒXƒLƒ“‚ðŽw’肵‚½ê‡‚Ì•\ަŒ‹‰Ê‚Å‚·F

 

 

 

ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚͈ê”Ê“I‚ÉAƒfƒoƒCƒX‚̉æ–ʃTƒCƒY‚ðl—¶‚µ‚½•`‰æ‚ðs‚¤‚±‚Æ‚ª–]‚Ü‚µ‚¢‚Æ‚³‚ê‚Ä‚¢‚Ü‚·Bc’·‚̉æ–ʂƉ¡’·‚̉æ–ʂ̗¼•û‚ɑΉž‚·‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÌŠJ”­‚Í¢“ïA‚ ‚é‚¢‚Í•s•K—v‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚ªAŒg‘Ñ“d˜b‚Ì‘½‚­‚͉æ–ʂ̃AƒXƒyƒNƒg”䂪“¯ˆê‚Å‚ ‚èA‰æ–ʃTƒCƒY‚݂̂ªˆÙ‚È‚Á‚Ä‚¢‚Ü‚·B­‚µ‚Ì•ÏXi‚Ü‚½•ÏX–³‚µj‚ÅA‘½‚­‚̃fƒoƒCƒX‚ɑΉž‚·‚邱‚Æ‚ª‘_‚¢‚Å‚ ‚é‚È‚ç‚ÎA“Á’è‚̃AƒXƒyƒNƒg”ä‚̉æ–ʂɕ`‰æ‚ðÅ“K‰»‚µA‰æ–ʃTƒCƒY‚̑嬂ɂàl—¶‚·‚ê‚Ηǂ¢Œ‹‰Ê‚𓾂ç‚ê‚é‚Å‚µ‚傤B

ƒtƒ[§Œä

UJML ‚̓~ƒjƒ}ƒŠƒXƒg‚ÈŽv‘z‚ÌŒ³‚ÉÝŒv‚³‚ê‚Ä‚¢‚邽‚ßA—pˆÓ‚³‚ê‚Ä‚¢‚éƒtƒ[§Œä•¶‚Í if ‚Æ while ‚ÉŒÀ‚ç‚ê‚Ä‚¢‚Ü‚·Bswitch ‚â for ‚̓Tƒ|[ƒg‚µ‚Ä‚¢‚Ü‚¹‚ñB

 

ŽŸ‚Ì—á‚Å‚Í while ƒ‹[ƒv‚ðŽg‚Á‚Ä”z—ñ’†‚Ì‘Sƒ{ƒbƒNƒX‚ð•\ަ‚µ‚Ü‚·B‚±‚±‚ł͊eƒ{ƒbƒNƒX‚Ì x ޲•ûŒü‚̈ʒu‚ðŒvŽZ‚·‚邽‚߂Ɋ֔‚ðŽg—p‚µ‚Ä‚¢‚Ü‚·F

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd" [

    <!ENTITY MAX_BOXES "3">

]>

<ujml>

    <application>

        <state-variables>

            <state-var name="sScore" type="boolean"/>

            <state-var name="sBox" type="boolean" size="&MAX_BOXES;"/>

        </state-variables>

        <variables>

            <var name="mScore" type="int"/>

            <var name="mBox" type="int" size="&MAX_BOXES;"/>

            <var name="mTextHeight" type="int"/>

            <var name="mScrWidth" type="int"/>

            <var name="mScrHeight" type="int"/>

            <var name="mBoxWidth" type="int"/>

            <var name="mBoxHeight" type="int"/>

            <var name="i" type="int"/>

        </variables>

        <functions>

            <function name="getX" type="int">

                <parameters>

                    <var name="box" type="int"/>

                </parameters>

                <variables>

                    <var name="x" type="int"/>

                </variables>

                <script>

                    x = box * mBoxWidth;

                </script>

                <return>

                    <eval>x</eval>

                </return>

            </function>

        </functions>

        <script>

            mTextHeight = _text_height( 0, 0, 0 );

            mScrWidth = _getIntProperty( &_PROPERTY_INT_SCREEN_WIDTH; );

            mScrHeight = _getIntProperty( &_PROPERTY_INT_SCREEN_HEIGHT; );

            mBoxWidth = mScrWidth / &MAX_BOXES;;

            mBoxHeight = mScrHeight - mTextHeight;

            mScore = 0;

            sScore = true;

 

            mBox[ 0 ] = 0xffcccccc;

            mBox[ 1 ] = 0xff999999;

            mBox[ 2 ] = 0xff666666;

 

            while (i &lt; &MAX_BOXES;)

            {

                sBox[ i ] = true;

                i = i + 1;

            }

        </script>

        <display>

            <box>

                <width> <eval>mScrWidth</eval> </width>

                <height> <eval>mScrHeight</eval> </height>

                <fg>&_COLOR_BLACK;</fg>

                <bg>&_COLOR_BLACK;</bg>

            </box>

        </display>

        <states>

            <state var="sScore">

                <transition value="true">

                    <display>

                        <label>

                            <text> <eval>mScore</eval> </text>

                            <x>1</x> <y>1</y>

                            <fg>&_COLOR_YELLOW;</fg>

                        </label>

                    </display>

                </transition>

            </state>

            <state var="sBox" index="*">

                <transition value="true">

                    <display>

                        <box>

                            <x><eval>getX( _state_index() )</eval></x>

                            <y> <eval>mTextHeight</eval> </y>

                            <width> <eval>mBoxWidth</eval> </width>

                            <height> <eval>mBoxHeight</eval> </height>

                            <fg> <eval>mBox[ _state_index() ]</eval> </fg>

                            <bg> <eval>mBox[ _state_index() ]</eval> </bg>

                        </box>

                    </display>

                </transition>

            </state>

        </states>

    </application>

</ujml>

ƒCƒxƒ“ƒg

ƒ†[ƒU“ü—͂ƃVƒXƒeƒ€ƒXƒe[ƒ^ƒX‚Ì•ÏX‚ÍAƒCƒxƒ“ƒg‚ð’Ê‚¶‚Ä UJML ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É“`‚¦‚ç‚ê‚Ü‚·B

 

ŽŸ‚Ì—á‚ł̓tƒ@ƒ“ƒNƒVƒ‡ƒ“ƒL[ F1 ‚̃Cƒxƒ“ƒgƒnƒ“ƒhƒ‰‚ð’è‹`‚µ‚Ä‚¢‚Ü‚·B ƒ†[ƒU[‚ª F1 ‚ð‰Ÿ‚·‚ÆAƒCƒxƒ“ƒgƒnƒ“ƒhƒ‰‚ªƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðƒAƒ“ƒ[ƒh‚µ‚Ü‚·B

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd" [

    <!ENTITY MAX_BOXES "3">

]>

<ujml>

    <application>

        <state-variables>

           ¥¥¥

        </state-variables>

        <variables>

           ¥¥¥

        </variables>

        <script>

           ¥¥¥

        </script>

        <display>

            <box>

                <width> <eval>mScrWidth</eval> </width>

                <height> <eval>mScrHeight</eval> </height>

                <fg>&_COLOR_BLACK;</fg>

                <bg>&_COLOR_BLACK;</bg>

            </box>

            <fn>

                <text>Back</text>

                <event name="onselect">

                    <accelerators>

                        <key>F1</key>

                    </accelerators>

                    <script>

                        _unload();

                    </script>

                </event>

            </fn>

        </display>

        <states>

           ¥¥¥

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F Events.ujml

 

ƒƒ‚F F1 ƒL[‚Íu–ß‚év‹@”\‚Æ‚µ‚ÄŽg—p‚·‚邱‚Æ‚ð‚¨Š©‚ß‚µ‚Ü‚·B ——R‚ÍABREW ‚Ȃǂ̃vƒ‰ƒbƒgƒtƒH[ƒ€‚ª‚±‚Ì‹““®‚ð•K—v‚Æ‚µ‚Ä‚¢‚邽‚ß‚ÆA ‘¼‚̃fƒoƒCƒX‚É‚¨‚¯‚郆[ƒUƒCƒ“ƒ^ƒtƒF[ƒXÝŒv‚Æe˜a«‚ª‚‚¢‚½‚߂ł·B —Ⴆ‚Α½‚­‚ÌŒg‘Ñ“d˜b‚Íu–ß‚év‚âuƒNƒŠƒAv‹@”\‚ðŽ‚Á‚Ä‚¨‚èA ƒ\ƒj[‚Ì CLIE ‚àu–ß‚évƒ{ƒ^ƒ“‚ðŽ‚Á‚Ä‚¢‚Ü‚·B

 

ƒCƒxƒ“ƒg‚ÍAƒrƒWƒ…ƒAƒ‹—v‘f‚Ì <display> —v‘f‚ɂ̂݊֘A‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚·B

 

ƒƒ‚F ƒrƒWƒ…ƒAƒ‹—v‘f‚Ì•K—v‚È‚¢ê–ʂŃCƒxƒ“ƒgƒnƒ“ƒhƒ‰‚ð쬂µ‚½‚¢ê‡‚ÍA ‹óE“§–¾‚Ì <box> —v‘f‚ð—˜—p‚µ‚Ü‚·B

ƒXƒe[ƒg

ƒXƒe[ƒg‚É‚Í <display> —v‘f‚Ì’è‹`‚¾‚¯‚łȂ­AƒXƒe[ƒg‚ª—LŒøiƒXƒe[ƒg•Ï”‚ª <tansition> —v‘f‚ÅŽw’è‚Ì’l‚Éݒ肳‚ê‚éj‚ɂȂÁ‚½Žž‚ÉŽÀs‚·‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒƒWƒbƒN‚ð’è‹`‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B

 

ŽŸ‚Ì—á‚ł̓ƒbƒZ[ƒWƒ{ƒbƒNƒX‚ð•\ަŒãAdelay ƒXƒNƒŠƒvƒg‚ðŽg‚Á‚Ä‚T•bŒã‚É”ñ•\ަ‚É‚µ‚Ü‚·B

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd">

<ujml>

    <application>

        <state-variables>

            <state-var name="sBox" type="boolean"/>

        </state-variables>

        <script>

            sBox = true;

        </script>

        <states>

            <state var="sBox">

                <transition value="true">

                    <display>

                        <box>

                            <x>5</x>

                            <y>20</y>

                            <width>30</width>

                            <height>50</height>

                            <fg>&_COLOR_RED;</fg>

                            <bg>&_COLOR_GREEN;</bg>

                        </box>

                    </display>

                </transition>

            </state>

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹G DisplayState.ujml

 

ƒXƒe[ƒg•Ï” sMessageBox ‚ª true ‚Éݒ肳‚ê‚邯‚Æ‚à‚ÉAUIE Player ‚ªˆÈ‰º‚̃Xƒe[ƒg‘JˆÚ‚ðŽÀs‚µ‚Ü‚·BUIE Player ‚͂܂¸ <display> —v‘f‚ðˆ—‚µA‰æ–Ê•`‰æ‚ðs‚¤‚½‚ß‚É“à•”‚ÅŽg—p‚µ‚Ä‚¢‚éu•\ަƒŠƒXƒgv‚É <display> —v‘f‚ð’ljÁ‚µ‚Ü‚·BUIE Player ‚ÍŽŸ‚É <scirpt> ‚ðˆ—‚µ‚Ü‚·B‚µ‚©‚µ’¼‘O‚É <delay> —v‘f‚ª‚ ‚邽‚ß <script> ‚ðŽÀs‚·‚é‘ã‚í‚è‚ÉAŽÀs‚ð‚T•bŒã‚É’x‰„‚·‚éƒLƒ…[‚É—v‘f‚ð’ljÁ‚µ‚Ü‚·B

 

            <state var="sMessageBox">

                <transition value="true">

                    <display>

                        <multi-label>

                            <text>This is a message box.</text>

                            <x>10</x>

                            <y>30</y>

                            <width><eval>mScrWidth - 20</eval></width>

                            <height><eval>mScrHeight - 60</eval></height>

                            <fg>&_COLOR_LIME;</fg>

                            <bg>&_COLOR_MAROON;</bg>

                        </multi-label>

                    </display>

                    <delay>5000</delay>

                    <script>

                        sMessageBox = false;

                    </script>

                </transition>

            </state>

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹FScriptStates.ujml

 

 

ƒXƒe[ƒg‚Ì’†‚Ì scipt ‚ÌŽå‚È—p“rF

 

·        ƒƒWƒbƒN‚Ì’x‰„ŽÀs

·        ƒƒWƒbƒN‚ÌŽžŠÔŠÇ—

·        ƒAƒjƒ[ƒVƒ‡ƒ“

ƒeƒ“ƒvƒŒ[ƒg

Ujinn ƒQ[ƒ€‚Å‚ÍAƒQ[ƒ€ƒtƒB[ƒ‹ƒh‚É8~8‚̃OƒŠƒbƒh‚ðŽg‚¢‚Ü‚·B ‚»‚±‚Å‚QŽŸŒ³‚Ì”z—ñŒ^ƒXƒe[ƒg•Ï”‚ðŽg‚¤‚悤‚ɃTƒ“ƒvƒ‹ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðC³‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚Ü‚½ƒ{ƒbƒNƒX‚ÌFî•ñ‚ðŠi”[‚·‚邽‚߂̔z—ñ‚𓱓ü‚µ‚Ü‚·B‚±‚Ì”z—ñ‚̉Šú‰»‚Í ƒfƒoƒCƒX‚̃Jƒ‰[‘ΉžiƒJƒ‰[‚Ü‚½‚̓OƒŒ[ƒXƒP[ƒ‹j‚ɉž‚¶‚ÄŒã‚Ù‚Çs‚¢‚Ü‚·B

 

‘¾Žš‚ÍC³•”•ª‚ð•\‚µ‚Ü‚·F

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd" [

    <!ENTITY MAX_ROWS "8">

    <!ENTITY MAX_COLS "8">

    <!ENTITY MAX_COLORS "4">

]>

<ujml>

    <application>

        <state-variables>

            <state-var name="sBoxes" type="boolean" size="&MAX_ROWS;,&MAX_COLS;"/>

           ¥¥¥

        </state-variables>

        <variables>

            <var name="mBoxes" type="int" size="&MAX_ROWS;,&MAX_COLS;"/>

            <var name="mColorMap" type="int" size="&MAX_COLORS;"/>

            <var name="r" type="int"/>

            <var name="c" type="int"/>

           ¥¥¥

        </variables>

        <script>

           ¥¥¥

            mColorMap[ 0 ] = 0xffcccccc;

            mColorMap[ 1 ] = 0xff999999;

            mColorMap[ 2 ] = 0xff666666;

            mColorMap[ 3 ] = 0xff333333;

 

            while (r &lt; &MAX_ROWS;)

            {

                c = 0;

 

                while (c &lt; &MAX_COLS;)

                {

                    mBoxes[ r ][ c ] = mColorMap[ (r + c) % &MAX_COLORS; ];

                    sBoxes[ r ][ c ] = true;

                    c = c + 1;

                }

 

                r = r + 1;

            }

        </script>

        <display>

           ¥¥¥

        </display>

        <states>

           ¥¥¥

            <state var="sBoxes" index="*,*">

                <transition value="true">

                    <display>

                        <box>

                            <x> <eval>_state_index(1) * mBoxWidth</eval> </x>

                            <y>

                              <eval>mTextHeight + (_state_index(0) * mBoxHeight)</eval>

                            </y>

                            <width> <eval>mBoxWidth</eval> </width>

                            <height> <eval>mBoxHeight</eval> </height>

                            <fg>

                             <eval>mBoxes[ _state_index(0) ][ _state_index(1) ]</eval>

                           </fg>

                            <bg>

                            <eval>mBoxes[ _state_index(0) ][ _state_index(1) ]</eval>

                           </bg>

                        </box>

                    </display>

                </transition>

            </state>

           ¥¥¥

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F ArrayStates.ujml

 

‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŽÀs‚·‚é‚ÆŽŸ‚̂悤‚ȉæ–Ê‚ª•\ަ‚³‚ê‚Ü‚·F

 

UIE SDK ƒfƒoƒbƒK‚̓AƒvƒŠƒP[ƒVƒ‡ƒ“‚̃lƒbƒgƒ[ƒNƒgƒ‰ƒtƒBƒbƒN‚ɂ‚¢‚Ä‚Ì d—v‚Èî•ñ‚ð’ñ‹Ÿ‚µ‚Ä‚¢‚Ü‚·B ‚Ü‚½ƒlƒbƒgƒ[ƒNƒNƒ‰ƒCƒAƒ“ƒg‚ƃT[ƒoŠÔ‚Ì’x‰„‚âƒf[ƒ^“]‘—‚̑шæ‚ðƒGƒ~ƒ…ƒŒ[ƒg‚·‚é‹@”\‚à”õ‚¦‚Ä‚¢‚Ü‚·BƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃f[ƒ^“]‘——ʂ̓fƒoƒbƒK‚ÌuƒŠƒNƒGƒXƒgvƒ^ƒu‚É•\ަ‚³‚ê‚Ü‚·B ‚Ü‚½ƒOƒŠƒbƒh‚ð8~8‚É•ÏX‚·‚邱‚Ƃɂæ‚èƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒTƒCƒY‚ª‘å‚«‚­‚È‚Á‚Ä‚¢‚邱‚Æ‚É‚à‚²’–Ú‚­‚¾‚³‚¢B

 

 

ƒTƒCƒY‚ª‘‰Á‚µ‚½——R‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É61ŒÂ‚̃fƒBƒXƒvƒŒƒCƒXƒe[ƒg‚ð’ljÁ‚µ‚½‚©‚ç‚Å‚·BƒfƒtƒHƒ‹ƒgƒXƒe[ƒg‚ð—˜—p‚µ‚Ä‚¢‚é‚É‚àŠÖ‚í‚炸‚±‚̂悤‚ÈŒ‹‰Ê‚ɂȂèA‹Á‚©‚ꂽ‚©‚à‚µ‚ê‚Ü‚¹‚ñF

 

            <state var="sBoxes" index="*,*">

                <transition value="true">

                    <display>

                        <box>

                            <x> <eval>_state_index(1) * mBoxWidth</eval> </x>

                            <y>

                              <eval>mTextHeight + (_state_index(0) * mBoxHeight)</eval>

                            </y>

                            <width> <eval>mBoxWidth</eval> </width>

                            <height> <eval>mBoxHeight</eval> </height>

                            <fg>

                             <eval>mBoxes[ _state_index(0) ][ _state_index(1) ]</eval>

                           </fg>

                            <bg>

                            <eval>mBoxes[ _state_index(0) ][ _state_index(1) ]</eval>

                           </bg>

                        </box>

                    </display>

                </transition>

            </state>

 

ƒfƒtƒHƒ‹ƒgƒXƒe[ƒg‚ÍA“¯ˆê‚̃Xƒe[ƒg‚ðŽ‚ÂƒXƒe[ƒg•Ï”‚©‚ç\¬‚³‚ê‚é”z—ñ‚ðŠÈˆÕ‚ȃVƒ“ƒ^ƒbƒNƒX‚Å’è‹`‚·‚邽‚߂̋Lq•û–@‚ɉ߂¬‚Ü‚¹‚ñBƒfƒtƒHƒ‹ƒgƒXƒe[ƒg‚ÍAƒRƒ“ƒpƒCƒ‹Žž‚É64ƒR‚̓Ɨ§‚µ‚½ƒXƒe[ƒg‚É“WŠJ‚³‚ê‚Ü‚·B]‚Á‚ătƒ@ƒCƒ‹ƒTƒCƒY‚͑傫‚­‚È‚è‚Ü‚·B

 

UJML‚Å‚ÍuƒfƒBƒXƒvƒŒƒCƒeƒ“ƒvƒŒ[ƒgv‚Æ‚¢‚¤ƒeƒ“ƒvƒŒ[ƒg‚ð’è‹`‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B ƒfƒBƒXƒvƒŒƒCƒeƒ“ƒvƒŒ[ƒg‚ðƒfƒBƒXƒvƒŒƒCƒXƒe[ƒg‚©‚çŽQÆ‚·‚邯 UIE Player ‚ª“WŠJ‚µ‚Ü‚·Bƒeƒ“ƒvƒŒ[ƒg‚Í‘Oq‚Ì—á‚̂悤‚ɃAƒvƒŠƒP[ƒVƒ‡ƒ“ƒTƒCƒY‚𬂳‚­‚·‚éꇂ¾‚¯‚łȂ­AÄ—˜—p‰Â”\‚ȃfƒBƒXƒvƒŒƒC—v‘f‚ð’è‹`‚·‚é–Ú“I‚É‚à•Ö—˜‚Å‚·B

 

ŽŸ‚Ì—á‚Å‚ÍAƒOƒŠƒbƒh“à‚ÌŠeƒXƒe[ƒg‚ªƒeƒ“ƒvƒŒ[ƒg‚ð—˜—p‚·‚邿‚¤‚ÉA‚±‚ê‚܂ł̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ð‰ü—Ç‚µ‚Ä‚¢‚Ü‚·F

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd"[

   ¥¥¥

]>

<ujml>

    <application>

        <state-variables>

           ¥¥¥

        </variables>

        <templates>

            <template name="tBox">

                <display>

                    <box>

                        <x> <eval>c * mBoxWidth</eval> </x>

                        <y> <eval>mTextHeight + (r * mBoxHeight)</eval> </y>

                        <width> <eval>mBoxWidth</eval> </width>

                        <height> <eval>mBoxHeight</eval> </height>

                        <fg>

                            <eval>mBoxes[ r ][ c ]</eval>

                        </fg>

                        <bg>

                            <eval>mBoxes[ r ][ c ]</eval>

                        </bg>

                    </box>

                </display>

            </template>

        </templates>

        <script>

           ¥¥¥

        </script>

        <display>

           ¥¥¥

        </display>

        <states>

           ¥¥¥

            <state var="sBoxes" index="*,*">

                <transition value="true">

                    <display>

                        <expand template="tBox"/>

                    </display>

                </transition>

            </state>

           ¥¥¥

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F Templates.ujml

 

ƒeƒ“ƒvƒŒ[ƒg‚ðŽg—p‚µ‚½‚±‚Ƃɂæ‚éƒtƒ@ƒCƒ‹ƒTƒCƒY‚Ìk¬‚É‚²’–Ú‚­‚¾‚³‚¢F

 

‚±‚Ì—á‚ł͈ȑO‚Æ“¯—l‚É64ŒÂ‚̃fƒBƒXƒvƒŒƒCƒXƒe[ƒg‚ª‚ ‚è‚Ü‚·B ‚µ‚©‚µŠeƒXƒe[ƒg‚Ì’†‚ŃfƒBƒXƒvƒŒƒCƒGƒŒƒƒ“ƒg‚ð’¼Ú‹Lq‚µ‚Ä‚¢‚½‚Æ‚±‚ë‚ð ƒeƒ“ƒvƒŒ[ƒg‚ÌŽQƂɒu‚«Š·‚¦‚邱‚Ƃɂæ‚èA¶¬‚³‚ê‚éƒoƒCƒgƒR[ƒh‚ðk¬‚µ‚Ä‚¢‚Ü‚·B

 

ƒƒ‚F ƒeƒ“ƒvƒŒ[ƒg‚ł̓Oƒ[ƒoƒ‹•Ï”‚µ‚©ŽQƂł«‚Ü‚¹‚ñB ƒeƒ“ƒvƒŒ[ƒg‚ðŽg‚¤Û‚ÍAƒOƒ[ƒoƒ‹•Ï”‚Ì’l‚ƃXƒe[ƒg‘JˆÚ‚𓯒²‚³‚¹‚Ä‚­‚¾‚³‚¢B “¯’²‚ðŽÀŒ»‚·‚é•û–@‚Ì1‚‚Ɋ֔‚ðŽg‚¤•û–@‚ª‚ ‚è‚Ü‚·B ƒeƒ“ƒvƒŒ[ƒg‚ðŽg—p‚·‚éƒfƒBƒXƒvƒŒ[ƒXƒe[ƒg‚Ì•\ަE”ñ•\ަ‚ðs‚¤Û‚É ƒXƒe[ƒg•Ï”‚ÌÝ’è‚ð’¼Ús‚킸AŠÖ”‚ð‰î‚µ‚Äs‚¤A‚Æ‚¢‚¤•û–@‚Å‚·B ‚±‚ÌŠÖ”‚ł̓eƒ“ƒvƒŒ[ƒg‚ª•K—v‚Æ‚·‚éƒOƒ[ƒoƒ‹•Ï”‚ÌÝ’è‚ðs‚Á‚Ä‚©‚çƒfƒBƒXƒvƒŒƒCƒXƒe[ƒg‚ð—LŒø‚É‚µ‚Ü‚·B‚±‚̃eƒNƒjƒbƒN‚ÍŒã‚Ì Ujinn ƒQ[ƒ€‚ÌŠJ”­‚É‚¨‚¢‚ÄŽg—p‚µ‚Ü‚·B

 

Ujinn

Ujinn ƒQ[ƒ€‚ðŽÀ‘•‚·‚邽‚߂ɕK—v‚È UJML ‚̃p[ƒc‚ª‚»‚ë‚¢‚Ü‚µ‚½B ‚»‚ê‚ł͎ÀۂɃQ[ƒ€‚ð쬂µ‚Ü‚µ‚傤B

ƒOƒŠƒbƒh‚̉Šú‰»

Ujinn ‚Å‚ÍF‚ðƒ‰ƒ“ƒ_ƒ€‚É‘g‚݇‚킹‚ăOƒŠƒbƒh‚ð쬂µ‚Ü‚·B ‚Ü‚¸ƒTƒ“ƒvƒ‹ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðC³‚µAƒOƒŠƒbƒh‚̉Šú‰»‚ðŽÀ‘•‚µ‚Ü‚µ‚傤B

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "../ujml.dtd" [

    <!ENTITY and "&amp;&amp;">

    <!ENTITY SCORE_ITEM_FG "&_COLOR_WHITE;">

    <!ENTITY SCORE_ITEM_BG "0xff000066">

    <!-- Limits -->

    <!ENTITY MAX_ROWS "8">

    <!ENTITY MAX_COLS "8">

    <!ENTITY MAX_COLORS "4">

    <!ENTITY CLEARING_COLOR "&_COLOR_WHITE;">

    <!ENTITY CLEARED_COLOR "&_COLOR_TRANSPARENT;">

]>

 

<ujml>

    <application>

        <state-variables>

            <state-var name="sBoxes" type="boolean" size="&MAX_ROWS;,&MAX_COLS;"/>

        </state-variables>

        <variables>

            <var name="mTextHeight" type="int"/>

            <var name="mScrHeight" type="int"/>

            <var name="mScrWidth" type="int"/>

            <var name="mBoxHeight" type="int"/>

            <var name="mBoxWidth" type="int"/>

            <var name="mColorMap" type="int" size="&MAX_COLORS;,2"/>

            <var name="tBoxRow" type="int"/>

            <var name="tBoxCol" type="int"/>

            <var name="gSeed" type="int"/>

            <var name="mBoxes" type="int" size="&MAX_ROWS;,&MAX_COLS;,2"/>

        </variables>

        <functions>

            <function name="setColorMapEntry" type="void">

                <parameters>

                    <var name="entry" type="int"/>

                    <var name="color1" type="int"/>

                    <var name="color2" type="int"/>

                </parameters>

                <script>

                    mColorMap[ entry ][ 0 ] = color1;

                    mColorMap[ entry ][ 1 ] = color2;

                </script>

            </function>

            <function name="setupColorMap" type="void">

                <script>

                    if (_getBooleanProperty( &_PROPERTY_BOOLEAN_COLOR_CAPABLE; ))

                    {

                        setColorMapEntry( 0, 0xffff0000, 0xffdd0000 );

                        setColorMapEntry( 1, 0xff00ff00, 0xff00dd00);

                        setColorMapEntry( 2, 0xff0000ff, 0xff0000dd);

                        setColorMapEntry( 3, 0xffffff00, 0xffdddd00);

                    }

                    else

                    {

                        setColorMapEntry( 0, 0xff000000, 0xffcccccc);

                        setColorMapEntry( 1, 0xff555555, 0xffcccccc);

                        setColorMapEntry( 2, 0xffaaaaaa, 0xffcccccc);

                        setColorMapEntry( 3, 0xffdddddd, 0xffcccccc);

                    }

                </script>

            </function>

            <function name="start" type="void">

                <variables>

                    <var name="row" type="int"/>

                    <var name="col" type="int"/>

                </variables>

                <script>

                    gSeed = _srand( 101 );

 

                    while (col &lt; &MAX_COLS;)

                    {

                        row = 0;

   

                        while (row &lt; &MAX_ROWS;)

                        {

                            mBoxes[row][col][0] = mColorMap[ gSeed % &MAX_COLORS; ][0];

                            mBoxes[row][col][1] = mColorMap[ gSeed % &MAX_COLORS; ][1];

                            tBoxRow = row;

                            tBoxCol = col;

                            sBoxes[ tBoxRow ][ tBoxCol ] = true;

                            gSeed = _srand( gSeed );

   

                            row = row + 1;

                        }

   

                        col = col + 1;

                    }

 

                </script>

            </function>

        </functions>

        <templates>

            <template name="tBox">

                <display>

                    <box>

                        <x> <eval>tBoxCol * mBoxWidth</eval> </x>

                        <y> <eval>tBoxRow * mBoxHeight + mTextHeight</eval> </y>

                        <width> <eval>mBoxWidth</eval> </width>

                        <height> <eval>mBoxHeight</eval> </height>

                        <fg> <eval>mBoxes[ tBoxRow ][ tBoxCol ][ 1 ]</eval> </fg>

                        <bg> <eval>mBoxes[ tBoxRow ][ tBoxCol ][ 0 ]</eval> </bg>

                        <box>

                            <x> <eval>mBoxWidth / 4</eval> </x>

                            <y> <eval>mBoxHeight / 4</eval> </y>

                            <width> <eval>mBoxWidth / 2</eval> </width>

                            <height> <eval>mBoxHeight / 2</eval> </height>

                            <fg> <eval>mBoxes[ tBoxRow ][ tBoxCol ][ 1 ]</eval> </fg>

                            <bg> <eval>mBoxes[ tBoxRow ][ tBoxCol ][ 1 ]</eval> </bg>

                        </box>

                    </box>

                </display>

            </template>

        </templates>

        <script>

            mTextHeight = _text_height( 0, 0, 0 );

            mScrWidth = _getIntProperty( &_PROPERTY_INT_SCREEN_WIDTH; );

            mScrHeight = _getIntProperty( &_PROPERTY_INT_SCREEN_HEIGHT; );

            mBoxWidth = mScrWidth / &MAX_COLS;;

            mBoxHeight = (mScrHeight - mTextHeight) / &MAX_ROWS;;

            setupColorMap();

            start();

        </script>

        <display>

            <box>

                <width> <eval>mScrWidth</eval> </width>

                <height> <eval>mScrHeight</eval> </height>

                <fg>&_COLOR_BLACK;</fg>

                <bg>&_COLOR_BLACK;</bg>

            </box>

            <fn>

                <text>Back</text>

                <event name="onselect">

                    <accelerators> <key>F1</key> </accelerators>

                    <script>

                        _unload();

                    </script>

                </event>

            </fn>

        </display>

        <states>

            <state var="sBoxes" index="*,*">

                <transition value="true">

                    <display>

                        <expand template="tBox"/>

                    </display>

                </transition>

            </state>

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F ujinn1.ujml

 

 

ƒ{ƒbƒNƒX‚ÌF‚ð‘I‚ÔÛ‚É—”‚ðŽg‚Á‚Ä‚¢‚邱‚Ƃɒ–Ú‚µ‚Ä‚­‚¾‚³‚¢B F‚Ìî•ñ‚̓Jƒ‰[ƒ}ƒbƒv‚ɕۑ¶‚³‚êAƒfƒoƒCƒX‚̃Jƒ‰[‘Ήž‚ɉž‚¶‚ĉŠú‰»‚ª s‚í‚ê‚Ü‚·BŠeƒ{ƒbƒNƒX‚Í“¯ŒnF‚ð2‚ÂŽg‚Á‚½“ñd‚̃{ƒbƒNƒX‚Æ‚µ‚Ä•`‰æ‚µ‚Ä‚¢‚Ü‚·B ‚±‚ê‚ÍF‚Ì‹æ•Ê‚ª‚‚«‚É‚­‚¢ƒ†[ƒU‚É‚àŒ©‚â‚·‚­‚·‚邽‚߂̔z—¶‚Å‚·B

 

start() ŠÖ”‚̓{ƒbƒNƒX‚ÌF‚ð‰Šú‰»‚µAŠeƒ{ƒbƒNƒX‚̃Xƒe[ƒg‚ð true ‚Éݒ肵‚Ä•\ަ‚ðs‚Á‚Ä‚¢‚Ü‚·B•\ަ‚ðXV‚·‚邽‚߂Ɋ֔‚ðŽg—p‚·‚é•û–@‚àl‚¦‚ç‚ê‚Ü‚·‚ªA ƒ†[ƒU‚ª‘Ï‚¦‚ê‚È‚¢‚Ù‚Ç’x‚­‚È‚Á‚Ä‚µ‚Ü‚¤‰Â”\«‚ª‚ ‚è‚Ü‚·B —Ⴆ‚ÎAujinn1.ujml ‚ÍŒg‘Ñ“d˜b‚É‚æ‚Á‚Ă͉æ–ʂ̉Šú‰»‚É‘å•Ï’·‚¢ŽžŠÔ‚ª‚©‚©‚è‚Ü‚·B [RA1] 

 

’x‚ꂪ”­¶‚·‚é——R‚ÍAUIE Player ‚ª‰æ–Ê‚ÌXV‚ðƒAƒCƒhƒ‹ŽžiUJML ‚ðŽÀs‚µ‚ĂȂ¢ó‘Ôj‚És‚Á‚Ä‚¢‚邱‚ƂɋNˆö‚µ‚Ä‚¢‚Ü‚·B]‚Á‚Ä start() ŠÖ”‚ðŽÀs‚µ‚Ä‚¢‚éŒÀ‚èAŠÖ”‚ªI—¹‚·‚é‚܂ŃfƒBƒXƒvƒŒƒC‚ðXV‚·‚é‚·‚ׂẴXƒe[ƒg‘JˆÚ‚ªƒ†[ƒU‚É•\ަ‚³‚ê‚Ü‚¹‚ñB

ƒ‹[ƒv‚ðŽg‚Á‚½’èŠú“I‚ȉæ–ÊXV

ƒOƒŠƒbƒh‚̉Šú‰»’†‚ɉæ–Ê‚ðXV‚·‚é‚É‚Í <delay> ‚ðŠÜ‚ñ‚¾ƒXƒe[ƒg‚ðŽg‚Á‚Ä start() ŠÖ”‚ðŽÀ‘•‚·‚é•û–@‚ªŠÈ’P‚Å‚·B<delay> ‚É‚æ‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì ˆêu‚̃AƒCƒhƒ‹ó‘Ô‚ÌŠÔ‚É UIE Player ‚ª‰æ–Ê‚ðXV‚µ‚Ü‚·B

 

ƒXƒe[ƒg‚ðŽg‚¢A—ñ‚ð1‚‰Šú‰»‚·‚é“x‚ɉæ–Ê‚ðXV‚·‚邿‚¤‚É start() ŠÖ”‚ð‘‚«’¼‚µ‚Ü‚µ‚傤B‚±‚¤‚·‚邱‚Ƃɂæ‚èA‰½‚©‚ª‹N‚«‚Ä‚¢‚邱‚Æ‚âƒvƒƒOƒ‰ƒ€‚ªis‚µ‚Ä‚¢‚邱‚Æ‚ðƒ†[ƒU‚ÉŽ‹Šo“I‚ɃtƒB[ƒhƒoƒbƒN‚Å‚«‚Ü‚·B

 

<ujml>

    <application>

        <state-variables>

            <state-var name="sBoxes" type="boolean" size="&MAX_ROWS;,&MAX_COLS;"/>

            <state-var name="sStart" type="boolean"/>

        </state-variables>

        <variables>

          ¥¥¥

            <var name="gCol" type="int"/>

        </variables>

        <functions>

          ¥¥¥

        </functions>

        <templates>

           ¥¥¥

        </templates>

        <script>

          ¥¥¥

            gSeed = _srand( 101 );

            gCol = 0;

            sStart = true;

        </script>

        <display>

          ¥¥¥

        </display>

        <states>

          ¥¥¥

            <state var="sStart">

                <transition value="true">

                    <delay>20</delay>

                    <variables>

                        <var name="row" type="int"/>

                    </variables>

                    <script>

                        row = 0;

   

                        while (row &lt; &MAX_ROWS;)

                        {

                            mBoxes[row][gCol][0] = mColorMap[ gSeed % &MAX_COLORS; ][0];

                            mBoxes[row][gCol][1] = mColorMap[ gSeed % &MAX_COLORS; ][1];

                            tBoxRow = row;

                            tBoxCol = gCol;

                            sBoxes[ tBoxRow ][ tBoxCol ] = true;

                            gSeed = _srand( gSeed );

   

                            row = row + 1;

                        }

   

                        gCol = gCol + 1;

 

sStart == true ‚̃gƒ‰ƒ“ƒWƒVƒ‡ƒ“‚͈ê—ñ–ˆ‚ÉŽÀs‚µ‚Ü‚·B gCol ‚ª MAX_COLS ‚Æ“¯‚¶‚ɂȂÁ‚½ŽžAgStart ‚Í false ‚ɃZƒbƒg‚³‚ꃋ[ƒv‚ðI—¹‚µ‚Ü‚·

 

                        _clear_state( sStart );

                        sStart = gCol &lt; &MAX_COLS;;

                    </script>

                </transition>

            </state>

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F ujinn2.ujml

 

C³Œã‚Ì Ujinn ‚Å‚ÍAstart() ŠÖ”‚ð휂µ‚ÄA‰Šú‰»ƒ‹[ƒv‚ð sStart ‚Æ‚¢‚¤ƒXƒe[ƒg‚Ɉړ®‚µ‚Ä‚¢‚Ü‚·BŠe—ñ‚ÌŠO‘¤‚̃‹[ƒv‚̓Oƒ[ƒoƒ‹•Ï” gCol ‚ŧŒä‚µ‚Ä‚¢‚Ü‚·B‚±‚̕ϔ‚͂܂½A true ‚ÉÄ“x‘JˆÚ‚·‚ׂ«‚©‚ð”»’è‚·‚邽‚߂ɃXƒNƒŠƒvƒg‚ÌI‚í‚è‚Å‚àŽg—p‚µ‚Ä‚¢‚Ü‚·Btrue ‚Ìó‘Ԃւ̃Xƒe[ƒg‘JˆÚ‚Í—ñ‚Ì’l‚ª MAX_COLS ‚æ‚è‚ଂ³‚¢ê‡‚É”­¶‚µ‚Ü‚·B¬‚³‚ȃfƒBƒŒƒC‚ðŽg‚Á‚ÄA‰æ–Ê‚ÌXV‚ð‹­§‚µ‚Ä‚¢‚é“_‚É‚à’–Ú‚µ‚Ä‚­‚¾‚³‚¢B‚±‚̃fƒBƒŒƒC‚Í UIE Player ‚ɃAƒCƒhƒ‹ó‘Ô‚ð‹­‚¢‚邱‚Ƃɂæ‚èA‰æ–ʂ̑‚«Š·‚¦‚ðŽÀŒ»‚µ‚Ä‚¢‚Ü‚·B

 

ƒƒ‚F ‰æ–Ê‚ð’èŠú“I‚ÉXV‚·‚郋[ƒv‚Å‚Í <delay> ‚ðŽg—p‚µ‚Ü‚·B

ƒJ[ƒ\ƒ‹

ƒQ[ƒ€‚ɂ̓†[ƒU“ü—Í‚ðŽó‚¯•t‚¯‚éŽè’i‚ð—pˆÓ‚µ‚È‚­‚Ă͂Ȃè‚Ü‚¹‚ñB Œg‘Ñ“d˜b‚͈ê”Ê“I‚ÉA•ûŒüƒL[‚ÆŒˆ’èƒL[^‘I‘ðƒL[‚ð”õ‚¦‚Ä‚¢‚Ü‚·B PDA ‚̃†[ƒU“ü—͂̓Xƒ^ƒCƒ‰ƒXŽwŒü‚Å‚·B ŽŸ‚ÌC³‚ÅAUjinn ‚ɃJ[ƒ\ƒ‹‚ƃXƒ^ƒCƒ‰ƒX“ü—Í‚ð’ljÁ‚µ‚Ü‚·B

 

¥¥¥

<ujml>

    <application>

        <state-variables>

           ¥¥¥

            <state-var name="sCursor" type="boolean"/>

        </state-variables>

        <variables>

           ¥¥¥

            <var name="mCursorCol" type="int"/>

            <var name="mCursorRow" type="int"/>

        </variables>

        <functions>

           ¥¥¥

            <function name="setCursor" type="void">

                <parameters>

                    <var name="row" type="int"/>

                    <var name="col" type="int"/>

                </parameters>

                <script>

                    mCursorRow = row;

                    mCursorCol = col;

                    sCursor = false;

                    sCursor = true;

                </script>

            </function>

        </functions>

       ¥¥¥

        <states>

           ¥¥¥

            <state var="sCursor">

                <transition value="true">

                    <display>

 

ʼn‚̃{ƒbƒNƒX‚ªƒXƒ^ƒCƒ‰ƒX‚̃^ƒbƒv‚ðŒŸo‚µ‚Ü‚·B ƒXƒ^ƒCƒ‰ƒX‚Ìꊂ̓Cƒxƒ“ƒgƒnƒ“ƒhƒ‹‚É‚æ‚Á‚ă{ƒbƒNƒX‚̈ʒu‚ɕϊ·‚³‚êA ƒJ[ƒ\ƒ‹‚ªƒ{ƒbƒNƒX‚Ɉړ®‚µ‚Ü‚·B

 

                        <box>

                            <y> <eval>mTextHeight</eval> </y>

                            <width> <eval>mBoxWidth * &MAX_COLS;</eval> </width>

                            <height> <eval>mBoxHeight * &MAX_ROWS;</eval> </height>

                            <fg>&_COLOR_TRANSPARENT;</fg>

                            <bg>&_COLOR_TRANSPARENT;</bg>

                            <event name="onselect">

                                <script>

                                    setCursor(

                                        _getIntProperty( &_VALUE_INT_ONSELECT_Y_REL; ) /

                                         mBoxHeight,

                                        _getIntProperty( &_VALUE_INT_ONSELECT_X_REL; ) /

                                        mBoxWidth );

                                </script>

                            </event>

                        </box>

                        <box>

                            <x>

                                <eval>mCursorCol * mBoxWidth + mBoxWidth / 2 - 2</eval>

                            </x>

                            <y>

                                <eval>(mCursorRow * mBoxHeight) + mTextHeight + 2</eval>

                            </y>

                            <width> <eval>4</eval> </width>

                            <height> <eval>mBoxHeight - 4</eval> </height>

                        </box>

                        <box>

                            <x> <eval>mCursorCol * mBoxWidth + 2</eval> </x>

                            <y>

                                <eval>(mCursorRow * mBoxHeight) + mTextHeight +

                                    mBoxHeight / 2 - 2</eval>

                            </y>

                            <width> <eval>mBoxWidth - 4</eval> </width>

                            <height> <eval>4</eval> </height>

                            <event name="onselect">

                                <accelerators> <key>LEFT</key> </accelerators>

                                <script>

                                    setCursor( mCursorRow, (mCursorCol + &MAX_COLS; - 1)

                                                           % &MAX_COLS; );

                                </script>

                            </event>

                        </box>

                        <box>

                            <x>

                                <eval>mCursorCol * mBoxWidth + mBoxWidth / 2 - 2</eval>

                            </x>

                            <y>

                                <eval>(mCursorRow * mBoxHeight) + mTextHeight +

                                      mBoxHeight / 2 - 2</eval>

                            </y>

                            <width> <eval>4</eval> </width>

                            <height> <eval>4</eval> </height>

                            <bg> <eval>mBoxes[ mCursorRow ][ mCursorCol ][1]</eval></bg>

                            <event name="onselect">

                                <accelerators> <key>RIGHT</key> </accelerators>

                                <script>

                                    setCursor( mCursorRow, (mCursorCol+1) % &MAX_COLS; );

                                </script>

                            </event>

                        </box>

                        <box>

                            <event name="onselect">

                                <accelerators> <key>UP</key> </accelerators>

                                <script>

                                    if (mCursorRow == 0)

                                    {

                                        <!-- move to bottom of previous column -->

                                        setCursor( &MAX_ROWS; - 1,

                                                   (mCursorCol + &MAX_COLS; - 1) %

                                                   &MAX_COLS; );

                                    }

                                    else

                                    {

                                        <!-- move to previous row -->

                                        setCursor( mCursorRow - 1, mCursorCol );

                                    }

                                </script>

                            </event>

                        </box>

                        <box>

                            <event name="onselect">

                                <accelerators> <key>DOWN</key> </accelerators>

                                <script>

                                    if (mCursorRow == (&MAX_ROWS; - 1))

                                    {

                                        <!-- move to top of next column -->

                                        setCursor( 0, (mCursorCol + 1) % &MAX_COLS; );

                                    }

                                    else

                                    {

                                        <!-- move to next row -->

                                        setCursor( mCursorRow + 1, mCursorCol );

                                    }

                                </script>

                            </event>

                        </box>

                        <box>

                            <x> <eval>mCursorCol * mBoxWidth</eval> </x>

                            <y> <eval>(mCursorRow * mBoxHeight) + mTextHeight</eval> </y>

                            <width> <eval>mBoxWidth</eval> </width>

                            <height> <eval>mBoxHeight</eval> </height>

                            <fg>&_COLOR_TRANSPARENT;</fg>

                            <bg>&_COLOR_TRANSPARENT;</bg>

                        </box>

                    </display>

                </transition>

            </state>

            <state var="sStart">

            …

            </state>

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F ujinn3.ujml

 

ƒJ[ƒ\ƒ‹‚ð’ljÁ‚·‚é‚É‚ÍAƒJ[ƒ\ƒ‹‚Æ‚»‚ê‚ÉŠÖ˜A‚·‚éƒfƒBƒXƒvƒŒ—v‘f‚Ì•\ަ‚ð§Œä‚·‚é sCursor ‚Æ‚¢‚¤ƒXƒe[ƒg‚ð’ljÁ‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B“¯—l‚É㉺¶‰E‚̃{ƒ^ƒ“‰Ÿ‰º‚ðŒŸo‚·‚邽‚߂̃Cƒxƒ“ƒgƒnƒ“ƒhƒ‰‚ð’ljÁ‚µ‚Ü‚·BÅŒã‚ÉAƒXƒ^ƒCƒ‰ƒX‚Ì xAy À•W‚ðƒQ[ƒ€ƒOƒŠƒbƒh“à‚̃{ƒbƒNƒX‚ɕϊ·‚·‚éƒCƒxƒ“ƒgƒnƒ“ƒhƒ‰‚ð’ljÁ‚µ‚Ü‚·B

 

C³Œã‚Ì Ujinn ‚ł̓OƒŠƒbƒh‚̶ã‚ɃJ[ƒ\ƒ‹‚ª•\ަ‚³‚ê‚Ü‚·B ㉺¶‰Eƒ{ƒ^ƒ“‚ÍŒg‘Ñ“d˜b‚Å‚à PDA ‚Å‚ ‚Á‚Ä‚àƒJ[ƒ\ƒ‹‚̈ړ®‚ÉŽg—p‚Å‚«‚Ü‚·B PDA ‚ł̓{ƒbƒNƒX‚ðƒ^ƒbƒv‚·‚邱‚ƂŃJ[ƒ\ƒ‹‚ªƒ{ƒbƒNƒX‚Ɉړ®‚µ‚Ü‚·B

 

 

 

 

ƒ{ƒbƒNƒX‚ðÁ‚·

‘I‘ð‹@”\‚ÌŽŸ‚ÍAƒ{ƒbƒNƒX‚ðÁ‚·‹@”\‚ðŽÀ‘•‚µ‚Ü‚·B ƒ{ƒbƒNƒX‚̓J[ƒ\ƒ‹‚ª‘I‘𒆂̃{ƒbƒNƒX‚ð‹N“_‚ÉÁ‚µ‚Ü‚·B ‚±‚̃vƒƒOƒ‰ƒ€‚ł̓J[ƒ\ƒ‹ˆÊ’u‚̃{ƒbƒNƒX‚Æ‚»‚ׂ̗̃{ƒbƒNƒX‚ÌF‚ð”äŠr‚µA“¯‚¶F‚̃{ƒbƒNƒX‚ª—×Ú‚µ‚Ä‚¢‚éꇂÍA‚»‚ÌF‚̃{ƒbƒNƒX‚ðÁ‹Ž‚µ‰æ–Ê‚ðXV‚µ‚Ü‚·B

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.4//EN" "ujml.dtd" [

    <!ENTITY and "&amp;&amp;">

    <!-- Colors -->

    <!ENTITY SCORE_ITEM_FG "&_COLOR_WHITE;">

    <!ENTITY SCORE_ITEM_BG "0xff000066">

    <!-- Limits -->

    <!ENTITY MAX_ROWS "8">

    <!ENTITY MAX_COLS "8">

    <!ENTITY MAX_COLORS "4">

    <!ENTITY CLEARING_COLOR "&_COLOR_WHITE;">

    <!ENTITY CLEARED_COLOR "&_COLOR_TRANSPARENT;">

]>

<ujml>

    <application>

       <state-machines>

           <include file="ujlib/stack.ujml" state-machine="IntStack"/>

       </state-machines>

 

        <state-variables>

                                 ¥¥¥

            <state-var name="sDelayedRemoveBoxes" type="boolean"/>

            <state-var name="sDelayedSelectBox" type="boolean"/>

            <state-var name="sRemoveColumns" type="boolean"/>

        </state-variables>

        <variables>

            <var name="mTextHeight" type="int"/>

            <var name="mScrHeight" type="int"/>

            <var name="mScrWidth" type="int"/>

            <var name="mBoxHeight" type="int"/>

            <var name="mBoxWidth" type="int"/>

            <var name="mColorMap" type="int" size="&MAX_COLORS;,2"/>

            <var name="mRemoveBoxesFromColumn" type="boolean" size="&MAX_COLS;"/>

            <var name="tBoxRow" type="int"/>

            <var name="tBoxCol" type="int"/>

            <var name="mColorMapIndex" type="int"/>

            <var name="mColorMapBoxSize" type="int"/>

            <var name="mCursorCol" type="int"/>

            <var name="mCursorRow" type="int"/>

            <var name="mNumBoxes" type="int"/>

            <var name="mNumBoxesInColumn" type="int" size="&MAX_COLS;"/>

            <var name="mBoxes" type="int" size="&MAX_ROWS;,&MAX_COLS;,2"/>

            <var name="mColumnHasRemovableBoxes" type="boolean" size="&MAX_COLS;"/>

            <!-- Globals used for removing columns -->

            <var name="mNumBoxesCleared" type="int"/>

            <var name="gI" type="int"/>

            <var name="gCol" type="int"/>

            <var name="gRow" type="int"/>

            <var name="gSeed" type="int"/>

            <var name="gAvailCol" type="int"/>

            <var name="gRemoveColumnsDelay" type="int"/>

        </variables>

        <functions>

                                 ¥¥¥

            <function name="checkBoxColor" type="void">

                <parameters>

                    <var name="row" type="int"/>

                    <var name="col" type="int"/>

                    <var name="color" type="int"/>

                </parameters>

                <script>

                    if (color == mBoxes[ row ][ col ][ 0 ])

                    {

                        IntStack.push( row );

                        IntStack.push( col );

                    }

                </script>

            </function>

                                 ¥¥¥

            <function name="selectBox" type="void">

                <parameters>

                    <var name="row" type="int"/>

                    <var name="col" type="int"/>

                </parameters>

                <variables>

                    <var name="selectedColor" type="int"/>

                    <var name="selectedInnerColor" type="int"/>

                    <var name="numBoxesToBeRemoved" type="int"/>

                    <var name="i" type="int"/>

                </variables>

                <script>

                    <!-- don't allow the user to select a cleared or clearing box -->

                    if ((mBoxes[row][col][0] != &CLEARING_COLOR;) &and;

                        (mBoxes[row][col][0] != &CLEARED_COLOR;))

                    {

                        <!-- remember selected color -->

                        selectedColor = mBoxes[ row ][ col ][ 0 ];

                        selectedInnerColor = mBoxes[ row ][ col ][ 1 ];

 

                        <!-- put selected box on stack -->

                        IntStack.push( row );

                        IntStack.push( col );

 

                        <!-- find boxes of the selectec color to remove -->

                        while (IntStack.size() &gt; 0)

                        {

                            <!-- process current box on the stack -->

                            col = IntStack.pop();

                            row = IntStack.pop();

 

                            <!-- mark the box to be cleared -->

                            mBoxes[ row ][ col ][ 0 ] = &CLEARING_COLOR;;

                            mBoxes[ row ][ col ][ 1 ] = &CLEARING_COLOR;;

                            repaintBox( row, col );

 

                            <!-- increment count of boxes to be cleared -->

                            numBoxesToBeRemoved = numBoxesToBeRemoved + 1;

 

                            <!-- mark column as having a box to be removed -->

                            mRemoveBoxesFromColumn[ col ] = true;

 

                            <!-- Now check neighboring boxes to see if they are the same

                            color -->

                            <!-- Check box above -->

                            if (row &gt; 0)

                            {

                                checkBoxColor( row - 1, col, selectedColor );

                            }

 

                            <!-- Check box left -->

                            if (col &gt; 0)

                            {

                                checkBoxColor(  row, col - 1, selectedColor );

                            }

 

                            <!-- check box below -->

                            if (row &lt; (&MAX_ROWS; - 1))

                            {

                                checkBoxColor( row + 1, col, selectedColor );

                            }

 

                            <!-- check box to the right -->

                            if (col &lt; (&MAX_COLS; - 1))

                            {

                                checkBoxColor( row, col + 1, selectedColor );

                            }

                        }

 

                        <!-- Make sure the user selected a box that had neighbors of

                           the same color -->

                        if (numBoxesToBeRemoved &gt; 1)

                        {

                            <!-- user selected a valid box, remove the marked boxes after

                            a slight delay -->

                            <!-- to show the user some feedback on which boxes are being

                            deleted -->

                            sDelayedRemoveBoxes = true;

                        }

                        else

                        {

                            <!-- user selected a box that has no neighbors of the same

                            color so back out -->

                            mBoxes[ row ][ col ][ 0 ] = selectedColor;

                            mBoxes[ row ][ col ][ 1 ] = selectedInnerColor;

                            repaintBox( row, col );

                        }

                    }

                </script>

            </function>

            <function name="removeBoxes" type="void">

                <variables>

                    <var name="row" type="int"/>

                    <var name="col" type="int"/>

                    <var name="availRow" type="int"/>

                    <var name="topBox" type="int"/>

                    <var name="thereAreRemovableBoxes" type="boolean"/>

                </variables>

                <script>

                    <!-- hide cursor -->

                    sCursor = false;

                    mNumBoxesCleared = 0;

                    gAvailCol = &MAX_COLS;;

                    col = &MAX_COLS; - 1;

 

                    <!-- for each column, check to see if we've marked it as having boxes

                          to remove -->

                    while (col &gt; -1)

                    {

                        if (mRemoveBoxesFromColumn[ col ])

                        {

                        <!-- this column has boxes to be removed; remove them now -->

                            topBox = &MAX_ROWS; - mNumBoxesInColumn[ col ];

                            row = topBox;

 

                            while (row &lt; &MAX_ROWS;)

                            {

                                if (mBoxes[ row ][ col ][ 0 ] == &CLEARING_COLOR;)

                                {

                                    mNumBoxesCleared = mNumBoxesCleared + 1;

                                    mBoxes[ row ][ col ][ 0 ] = &CLEARED_COLOR;;

                                    mBoxes[ row ][ col ][ 1 ] = &CLEARED_COLOR;;

                                    repaintBox( row, col );

                                    availRow = row;

                                    mNumBoxesInColumn[col] = mNumBoxesInColumn[col] - 1;

                                }

 

                                row = row + 1;

                            }

 

                            <!-- remove boxes in column -->

                            row = &MAX_COLS; - 1;

                            row = availRow - 1;

                            topBox = topBox - 1;

 

                            while (row &gt; topBox)

                            {

                                if (mBoxes[ row ][ col ][ 0 ] != &CLEARED_COLOR;)

                                {

                                    mBoxes[ availRow ][col][0] = mBoxes[row][col][ 0 ];

                                    mBoxes[ availRow ][col][1] = mBoxes[row][col][ 1 ];

                                    mBoxes[ row ][ col ][ 0 ] = &CLEARED_COLOR;;

                                    mBoxes[ row ][ col ][ 1 ] = &CLEARED_COLOR;;

                                    repaintBox( row, col );

                                    repaintBox( availRow, col );

                                    availRow = availRow - 1;

                                }

 

                                row = row - 1;

                            }

                        }

 

                        mRemoveBoxesFromColumn[ col ] = false;

 

                        if (mNumBoxesInColumn[ col ] == 0)

                        {

                            gAvailCol = col;

                        }

 

                        col = col - 1;

                    }

 

                    <!-- if there are empty columns, remove them; if gAvailCol is

                  less than &MAX_COLS;, then -->

                    <!-- there is at least one empty column -->

                    gCol = gAvailCol;

                    sRemoveColumns = gCol &lt; &MAX_COLS;;

                </script>

            </function>

            <function name="moveColumn" type="void">

                <parameters>

                    <var name="fromCol" type="int"/>

                    <var name="toCol" type="int"/>

                </parameters>

                <variables>

                    <var name="row" type="int"/>

                </variables>

                <script>

                    while (row &lt; &MAX_ROWS;)

                    {

                        mBoxes[ row ][ toCol ][ 0 ] = mBoxes[ row ][ fromCol ][ 0 ];

                        mBoxes[ row ][ toCol ][ 1 ] = mBoxes[ row ][ fromCol ][ 1 ];

                        mBoxes[ row ][ fromCol ][ 0 ] = &CLEARED_COLOR;;

                        mBoxes[ row ][ fromCol ][ 1 ] = &CLEARED_COLOR;;

                        repaintBox( row, fromCol );

                        repaintBox( row, toCol );

                        row = row + 1;

                    }

 

                    mNumBoxesInColumn[ toCol ] = mNumBoxesInColumn[ fromCol ];

                    mNumBoxesInColumn[ fromCol ] = 0;

                </script>

            </function>

                                 ¥¥¥

        </functions>

        <templates>

            <template name="tBox">

                <display>

                    <box>

                        <x> <eval>tBoxCol * mBoxWidth</eval> </x>

                        <y> <eval>tBoxRow * mBoxHeight + mTextHeight</eval> </y>

                        <width> <eval>mBoxWidth</eval> </width>

                        <height> <eval>mBoxHeight</eval> </height>

                        <fg> <eval>mBoxes[ tBoxRow ][ tBoxCol ][ 1 ]</eval> </fg>

                        <bg> <eval>mBoxes[ tBoxRow ][ tBoxCol ][ 0 ]</eval> </bg>

                        <box>

                            <x> <eval>mBoxWidth / 4</eval> </x>

                            <y> <eval>mBoxHeight / 4</eval> </y>

                            <width> <eval>mBoxWidth / 2</eval> </width>

                            <height> <eval>mBoxHeight / 2</eval> </height>

                            <fg> <eval>mBoxes[ tBoxRow ][ tBoxCol ][ 1 ]</eval> </fg>

                            <bg> <eval>mBoxes[ tBoxRow ][ tBoxCol ][ 1 ]</eval> </bg>

                        </box>

                    </box>

                </display>

            </template>

        </templates>

        <script>

        ¥¥¥

        </script>

        <display>

        ¥¥¥

        </display>

        <states>

            <state var="sDelayedSelectBox">

                <transition value="true">

                    <delay>200</delay>

                    <script>

                        selectBox( mCursorRow, mCursorCol );

                        sDelayedSelectBox = false;

                    </script>

                </transition>

            </state>

            <state var="sBoxes" index="*,*">

                <transition value="true">

                    <display>

                        <expand template="tBox"/>

                    </display>

                </transition>

            </state>

            <state var="sCursor">

                <transition value="true">

                    <display>

                        <box>

                            <y> <eval>mTextHeight</eval> </y>

                            <width> <eval>mBoxWidth * &MAX_COLS;</eval> </width>

                            <height> <eval>mBoxHeight * &MAX_ROWS;</eval> </height>

                            <fg>&_COLOR_TRANSPARENT;</fg>

                            <bg>&_COLOR_TRANSPARENT;</bg>

                            <event name="onselect">

                                <script>

                                    setCursor( _getIntProperty( &_VALUE_INT_ONSELECT_Y_REL; ) / mBoxHeight,

                                               _getIntProperty( &_VALUE_INT_ONSELECT_X_REL; ) / mBoxWidth );

                                    sDelayedSelectBox = true;

                                </script>

                            </event>

                        </box>

                        <box>

                            <x> <eval>mCursorCol * mBoxWidth + mBoxWidth / 2 - 2</eval>

                            </x>

                            <y> <eval>(mCursorRow * mBoxHeight) + mTextHeight + 2</eval>

                            </y>

                            <width> <eval>4</eval> </width>

                            <height> <eval>mBoxHeight - 4</eval> </height>

                            <event name="onselect">

                                <accelerators> <key>FIRE</key> </accelerators>

                                <script>

                                    selectBox( mCursorRow, mCursorCol );

                                </script>

                            </event>

                        </box>

                        <box>

                            <x> <eval>mCursorCol * mBoxWidth + 2</eval> </x>

                            <y> <eval>(mCursorRow * mBoxHeight) + mTextHeight +

                                      mBoxHeight / 2 - 2</eval> </y>

                            <width> <eval>mBoxWidth - 4</eval> </width>

                            <height> <eval>4</eval> </height>

                            <event name="onselect">

                                <accelerators> <key>LEFT</key> </accelerators>

                                <script>

                                    setCursor( mCursorRow,

                                               (mCursorCol+&MAX_COLS;-1) % &MAX_COLS; );

                                </script>

                            </event>

                        </box>

                        <box>

                            <x> <eval>mCursorCol * mBoxWidth + mBoxWidth / 2 - 2</eval>

                            </x>

                            <y> <eval>(mCursorRow * mBoxHeight) + mTextHeight +

                                       mBoxHeight / 2 - 2</eval> </y>

                            <width> <eval>4</eval> </width>

                            <height> <eval>4</eval> </height>

                            <bg>

                                <eval>mBoxes[ mCursorRow ][ mCursorCol ][ 1 ]</eval>

                            </bg>

                            <event name="onselect">

                                <accelerators> <key>RIGHT</key> </accelerators>

                                <script>

                                    setCursor( mCursorRow, (mCursorCol + 1) % &MAX_COLS; );

                                </script>

                            </event>

                        </box>

                        <box>

                            <event name="onselect">

                                <accelerators> <key>UP</key> </accelerators>

                                <script>

                                    if (mCursorRow == 0)

                                    {

                                        <!-- move to bottom of previous column -->

                                        setCursor( &MAX_ROWS; - 1,

                                                  (mCursorCol + &MAX_COLS; - 1) %

                                                   &MAX_COLS; );

                                    }

                                    else

                                    {

                                        <!-- move to previous row -->

                                        setCursor( mCursorRow - 1, mCursorCol );

                                    }

                                </script>

                            </event>

                        </box>

                        <box>

                            <event name="onselect">

                                <accelerators> <key>DOWN</key> </accelerators>

                                <script>

                                    if (mCursorRow == (&MAX_ROWS; - 1))

                                    {

                                        <!-- move to top of next column -->

                                        setCursor( 0, (mCursorCol + 1) % &MAX_COLS; );

                                    }

                                    else

                                    {

                                        <!-- move to next row -->

                                        setCursor( mCursorRow + 1, mCursorCol );

                                    }

                                </script>

                            </event>

                        </box>

                        <box>

                            <x> <eval>mCursorCol * mBoxWidth</eval> </x>

                            <y> <eval>(mCursorRow * mBoxHeight) + mTextHeight</eval> </y>

                            <width> <eval>mBoxWidth</eval> </width>

                            <height> <eval>mBoxHeight</eval> </height>

                            <fg>&_COLOR_TRANSPARENT;</fg>

                            <bg>&_COLOR_TRANSPARENT;</bg>

                            <event name="onselect">

                                <accelerators> <key>FIRE</key> </accelerators>

                                <script>

                                    selectBox( mCursorRow, mCursorCol );

                                </script>

                            </event>

                        </box>

                    </display>

                </transition>

            </state>

            <state var="sDelayedRemoveBoxes">

                <transition value="true">

                    <delay>400</delay>

                    <script>

                        sDelayedRemoveBoxes = false;

                        removeBoxes();

                    </script>

                </transition>

            </state>

            <state var="sRemoveColumns">

                <transition value="true">

                    <delay>

                        <eval>gRemoveColumnsDelay</eval>

                    </delay>

                    <script>

                        gRemoveColumnsDelay = 0;

 

                        if (mNumBoxesInColumn[ gCol ] &gt; 0)

                        {

                            <!-- this column is not empty so move it to the empty

                                 available column -->

                            moveColumn( gCol, gAvailCol );

                            gAvailCol = gAvailCol + 1;

                            gRemoveColumnsDelay = 200;

                        }

 

                        gCol = gCol + 1;

                        <!-- reset self -->

                        _clear_state( sRemoveColumns );

                        sRemoveColumns = gCol &lt; &MAX_COLS;;

                    </script>

                </transition>

                <transition value="false">

                    <script>

                        sCursor = true;

                        <!-- reset self -->

                        gRemoveColumnsDelay = 0;

                        _clear_state( sRemoveColumns );

                    </script>

                </transition>

            </state>

            <state var="sStart">

             ¥¥¥

            </state>

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F ujinn4.ujml

 

‚±‚ê‚Å—×Ú‚·‚铯F‚̃uƒƒbƒN‚ðÁ‚¹‚邿‚¤‚ɂȂè‚Ü‚µ‚½F

 

 

ƒ{ƒbƒNƒX‚ðÁ‚·ƒƒWƒbƒN‚ÌŽÀ‘•‚ÍŽŠ‚Á‚ÄŠÈ’P‚Å‚·B ŽÀ‘••û–@‚ÉŠÖ‚µ‚Ä‚Í ujinn4.ujml “à‚Ì UJML ƒ\[ƒX‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B ujinn4.ujml ‚ł̓{ƒbƒNƒX‚ðÁ‚·ƒR[ƒh‚̂ق©Adelay •t‚«‚̃Xƒe[ƒg‚ð—˜—p‚µA ƒ{ƒbƒNƒX‚ðÁ‹Ž‚µ—ñ‚ð¶‚ɃVƒtƒg‚·‚éۂ̈—‚ðƒAƒjƒ[ƒVƒ‡ƒ“•\ަ‚µ‚Ä‚¢‚Ü‚·B ‚Ü‚½ƒXƒ^ƒbƒN‹@”\‚ðÄ—˜—p‰Â”\‚È UJML ‚Ì•”•i‚Æ‚µ‚ÄŽÀ‘•‚µ‚Ä‚¢‚Ü‚·B ƒXƒ^ƒbƒN‚ɂ‚¢‚Ă͎Ÿ‚ÌÍ‚Åà–¾‚µ‚Ü‚·B

Ä—˜—p‰Â”\‚ȃXƒ^ƒbƒN

UJML ‚ªŠJ”­‚³‚ꂽŽå‚È——R‚Ì1‚‚ÉuƒvƒƒOƒ‰ƒ}[‚É‚æ‚éŽÀ‘•‚ð1‰ñ‚É—¯‚߂Ȃª‚çƒ}ƒ‹ƒ`ƒvƒ‰ƒbƒgƒtƒH[ƒ€‘Ήž‚ð‰Â”\‚É‚·‚év‚ª‚ ‚è‚Ü‚·BƒR[ƒh‚ÌÄ—˜—p‚ðŽÀŒ»‚·‚é‚É‚ÍÄ—˜—p‰Â”\‚È UJML ƒRƒ“ƒ|[ƒlƒ“ƒg‚ÌŠJ”­‚ªd—v‚È‰Û‘è‚Æ‚È‚Á‚Ä‚«‚Ü‚·B

 

UJML ‚̃o[ƒWƒ‡ƒ“ 1.5 ‚ÍAJava ƒNƒ‰ƒX‚â COM ƒIƒuƒWƒFƒNƒg‚̂悤‚ÈÄ—˜—p‰Â”\‚ȃRƒ“ƒ|[ƒlƒ“ƒg‚ÌŠJ”­‚É’¼Ú‘Ήž‚µ‚Ä‚¢‚Ü‚¹‚ñB‚µ‚©‚µ <state-machine> —v‘f‚ª UJML ‚ÌŒø—¦“I‚ÈÄ—˜—p‚É_“î‚ɑΉž‚µ‚Ä‚¢‚Ü‚·[5]B

 

<state-machine> ‚Æ <include> —v‘f‚ɂ‚¢‚Ă͂̂¿‚Ù‚Çà–¾‚µ‚Ü‚·B

 

ŽŸ‚̃Tƒ“ƒvƒ‹ƒR[ƒh‚Í Ujinn ‚ÅŽg—p‚µ‚½A<state-machine> ‚ð—˜—p‚µ‚½’Pƒ‚ÈÄ—˜—p‰Â”\‚ȃXƒ^ƒbƒN‚̈ê—á‚Å‚·F

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.4//EN" "../ujml.dtd" [

    <!ENTITY % include SYSTEM "include.ujmc">

    %include;

]>

<ujml>

  <partition>

      <state-machine name="IntStack" access="export">

 

        <variables>

          <var name="mItems" type="int" size="&STACK_MAX_ITEMS;"/>

          <var name="mTop" type="int"/>

        </variables>

 

        <functions>

          <function name="push" type="int" visibility="public">

            <parameters>

              <var name="item" type="int"/>

            </parameters>

            <script>

              mItems[ mTop ] = item;

              mTop = mTop + 1;

            </script>

            <return>

              <eval>mTop</eval>

            </return>

          </function>

 

          <function name="pop" type="int" visibility="public">

            <variables>

              <var name="item" type="int"/>

            </variables>

            <script>

              if (mTop &gt; 0)

              {

                  mTop = mTop - 1;

                  item = mItems[ mTop ];

              }

            </script>

            <return>

              <eval>item</eval>

            </return>

          </function>

 

          <function name="size" type="int" visibility="public">

            <return>

              <eval>mTop</eval>

            </return>

          </function>

 

        </functions>

 

      </state-machine>

    </state-machines>

  </partition>

</ujml>

 

ƒtƒ@ƒCƒ‹Fujlib/stack.ujml

ƒXƒRƒA•\ަ

ŽŸ‚ÉA‰æ–Êã•”‚Ì“¾“_‚ðXV‚·‚é‹@”\‚ð’ljÁ‚µ‚Ü‚·B

 

¥¥¥

<ujml>

    <application>

        <state-variables>

           ¥¥¥

            <state-var name="sScores" type="boolean"/>

            <state-var name="sDelayedUpdateScores" type="boolean"/>

        </state-variables>

        <variables>

           ¥¥¥

            <var name="mScore" type="int"/>

            <var name="mHighScore" type="int"/>

            <var name="mTotalBoxesCleared" type="int"/>

            <var name="mLevelNumber" type="int"/>

            ¥¥¥

        </variables>

        <functions>

           ¥¥¥

            <function name="updateScores" type="void">

                <script>

                    sDelayedUpdateScores = true;

                </script>

            </function>

            ¥¥¥

            <function name="repaint" type="void">

                <variables>

                    <var name="col" type="int"/>

                </variables>

                <script>

                    while (col &lt; &MAX_COLS;)

                    {

                        repaintColumn( col );

                        col = col + 1;

                    }

                    updateScores();

                </script>

            </function>

           ¥¥¥

            <function name="setup" type="void">

                <script>

                    <!-- initialize global values based on the game grid size -->

                    mBoxWidth = mScrWidth / &MAX_COLS;;

                    mBoxHeight = (mScrHeight - mTextHeight) / &MAX_ROWS;;

                    mNumBoxes = &MAX_ROWS; * &MAX_COLS;;

                    <!-- reset scoring counters -->

                    mScore = 0;

                    mTotalBoxesCleared = 0;

                    mLevelNumber = 1;

                    <!-- move selected box to upper left corner -->

                    mCursorRow = 0;

                    mCursorCol = 0;

                    sCursor = false;

                    sCursor = true;

                </script>

            </function>

            <function name="clearScores" type="void">

                <script>

                    mScore = 0;

                    mHighScore = 0;

                    updateScores();

                </script>

            </function>

           ¥¥¥

        </functions>

           ¥¥¥

        <states>

            <state var="sDelayedUpdateScores">

                <transition value="true">

                    <delay>10</delay>

                    <script>

                        sScores = false;

                        sScores = true;

                        sDelayedUpdateScores = false;

                    </script>

                </transition>

            </state>

            <state var="sScores">

                <transition value="true">

                    <display>

                        <box>

                            <width> <eval>mScrWidth</eval> </width>

                            <height> <eval>mTextHeight</eval> </height>

                            <fg>&SCORE_ITEM_BG;</fg>

                            <bg>&SCORE_ITEM_BG;</bg>

                            <label>

                                <text>

                                    <strcat>

                                        <eval>mScore</eval>

                                        <val>/</val>

                                        <eval>mHighScore</eval>

                                        <val> | </val>

                                        <eval>mLevelNumber</eval>

                                        <val> | </val>

                                        <eval>mTotalBoxesCleared</eval>

                                        <val>/</val>

                                        <eval>mNumBoxes</eval>

                                        <val> |</val>

                                    </strcat>

                                </text>

                                <x>2</x>

                                <fg>&SCORE_ITEM_FG;</fg>

                            </label>

                        </box>

                    </display>

                </transition>

            </state>

           ¥¥¥

            <state var="sRemoveColumns">

                <transition value="true">

                   ¥¥¥

                </transition>

                <transition value="false">

                    <script>

                        <!-- update score -->

                        mScore = mScore + (mNumBoxesCleared * (mNumBoxesCleared - 1));

                        mTotalBoxesCleared = mTotalBoxesCleared + mNumBoxesCleared;

                        updateScores();

                        sCursor = true;

                        <!-- reset self -->

                        gRemoveColumnsDelay = 0;

                        _clear_state( sRemoveColumns );

                    </script>

                </transition>

            </state>

           ¥¥¥

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F ujinn5.ujml

 

 

updateScores() ŠÖ”‚ÍAƒXƒe[ƒg•Ï” sDelayedUpdatesScores ‚ð true ‚Éݒ肵‚Ä‚¢‚é‚ɉ߂¬‚È‚¢“_‚É’–Ú‚µ‚ĉº‚³‚¢B‚±‚̃Xƒe[ƒg‘JˆÚ‚ÍA<delay> —v‘f‚ðŽg‚Á‚ÄŽÀۂ̃XƒRƒAXV‚ð’x‰„‚³‚¹‚Ä‚¢‚Ü‚·B‚±‚ê‚͉æ–Êã‚Ì2‚‚̓Ɨ§‚µ‚½•”•ª‚𓯎ž‚ÉÄ•`‰æ‚·‚邱‚Æ‚ð”ð‚¯‚é‚½‚ß‚És‚Á‚Ä‚¢‚Ü‚·BÄ•`‰æ‚ð•½s‚µ‚Äs‚Á‚Ä‚µ‚Ü‚¤‚ÆA’x‚¢ƒfƒoƒCƒXã‚ʼnæ–Ê‚ÌÄ•`‰æ‚ªŒ€“I‚É’x‚­‚È‚Á‚Ä‚µ‚Ü‚¤‚©‚ç‚Å‚·B

 

UIE Player ‚ÍAƒXƒe[ƒgƒ}ƒVƒ“‚ɃfƒBƒXƒvƒŒƒCƒXƒe[ƒg‚ª’ljÁ‚Ü‚½‚Í휂³‚ꂽ‚±‚Ƃɂæ‚Á‚Ä –³Œø‚ƂȂÁ‚½•”•ª‚ÌÄ•`‰æ‚ðŬŒÀ‚É—¯‚߂悤‚Æ‚µ‚Ü‚·BUIE Player ‚Í•¡”‚Ì–³Œø‚ȉæ–ʗ̈æ‚ð1‚‚̖³Œø‚ȗ̈æ‚É“‡‚µ‚Ü‚·B‚à‚µ‚»‚̂悤‚È–³Œø—̈悪ŒÝ‚¢‚©‚ç—£‚ê‚Ä‚¢‚éê‡AUIE Player‚Í—¼•û‚̗̈æ‚ðŠÜ‚Þ‹éŒ`—̈æ‚ðÄ•`‰æ‚µ‚Ü‚·B‚»‚Ì‚½‚ßA•K—vˆÈã‚ÌÄ•`‰æ‚ª”­¶‚µ‚Ä‚µ‚Ü‚¢‚Ü‚·BƒfƒBƒŒƒC‚ðŽg‚¤‚±‚Ƃɂæ‚èA2‚‚̗̈æ‚ð“Æ—§‚µ‚ÄÄ•`‰æ‚·‚邱‚Æ‚ª‰Â”\‚ɂȂè‚Ü‚·B‚»‚ÌŒ‹‰ÊAƒpƒtƒH[ƒ}ƒ“ƒX‚ªŒ€“I‚ɉü‘P‚³‚ê‚Ü‚·BUjinn ‚̂悤‚ȃOƒŠƒbƒhƒx[ƒX‚̃Q[ƒ€‚Å‚ÍA–³Œø‚ȉæ–ʗ̈悪‘å‚«‚¢‚±‚Ƃɂæ‚Á‚Ä‘½‚­‚̃fƒBƒXƒvƒŒƒCƒXƒe[ƒg‚ÌÄ•`‰æ‚ª•K—v‚ƂȂ邽‚ßA‚±‚̂悤‚ȃeƒNƒjƒbƒN‚ª•K—v‚ƂȂè‚Ü‚·B

 

ƒƒ‚F ˆÊ’u“I‚É—£‚ꂽƒfƒBƒXƒvƒŒƒCƒXƒe[ƒg‚Ì•\ަ‚ð“Æ—§‚µ‚Äs‚¤‚É‚Í <delay> ‚ðŽg‚¢‚Ü‚·B

 

ƒQ[ƒ€‚ÌI—¹”»’è

ŽŸ‚Ì•ÏX‚Å‚ÍAƒOƒŠƒbƒh‚ªŠ®‘S‚ɃNƒŠƒA‚³‚ꂽꇂâA ƒNƒŠƒA‚Å‚«‚éƒOƒ‹[ƒv‚ª‘¶Ý‚µ‚È‚¢ê‡‚̃`ƒFƒbƒN‚ðs‚¢‚Ü‚·B

 

¥¥¥

<ujml>

    <application>

        <state-variables>

           ¥¥¥

            <state-var name="sGameOver" type="boolean"/>

            <state-var name="sDelayedEndGameCheck" type="boolean"/>

            <state-var name="sMessage" type="boolean"/>

        </state-variables>

       ¥¥¥

        <states>

           ¥¥¥

            <state var="sRemoveColumns">

                <transition value="true">

                   ¥¥¥

                </transition>

                <transition value="false">

                    <script>

                        <!-- update score -->

                        mScore = mScore + (mNumBoxesCleared * (mNumBoxesCleared - 1));

                        mTotalBoxesCleared = mTotalBoxesCleared + mNumBoxesCleared;

                        <!-- Check to see if the end of the game has been reached -->

                        sDelayedEndGameCheck = true;

                        <!-- reset self -->

                        gRemoveColumnsDelay = 0;

                        _clear_state( sRemoveColumns );

                    </script>

                </transition>

            </state>

            <state var="sDelayedEndGameCheck">

                <transition value="true">

                    <delay>100</delay>

                    <variables>

                        <var name="fGameOver" type="boolean"/>

                    </variables>

                    <script>

                        <!-- see if the end of the game has been reached. Either all boxes have been removed -->

                        <!-- or it is not possible to remove any more boxes. -->

 

                        if (mTotalBoxesCleared == mNumBoxes)

                        {

                            <!-- we have a winner! all boxes have been removed. -->

                            mScore = mScore + (mScore / 4);

                            mMessage = _strcat( "Level cleared!

 Bonus: ", _strcat( mScore / 4, "." ) );

                            sMessage = true;

 

                            if (mScore &gt; mHighScore)

                            {

                                mHighScore = mScore;

                            }

 

                            fGameOver = true;

                        }

                        else

                        {

                            <!-- determine if there are removable boxes -->

 

                            if (!areBoxesRemovable())

                            {

                                <!-- there are no more selectable boxes so the game is over -->

                                mScore = mScore - (mNumBoxes - mTotalBoxesCleared);

                                mMessage = _strcat( "No more moves.

Penalty: ", _strcat( mNumBoxes - mTotalBoxesCleared, "." ) );

                                sMessage = true;

 

                                if (mScore &gt; mHighScore)

                                {

                                    mHighScore = mScore;

                                }

 

                                fGameOver = true;

                            }

                        }

 

                        updateScores();

                        <!-- repaint cursor -->

                        sCursor = false;

                        sCursor = true;

                        sDelayedEndGameCheck = false;

                        sGameOver = fGameOver;

                    </script>

                </transition>

            </state>

            <state var="sGameOver">

                <transition value="true">

                    <script>

                        sCursor = false;

                    </script>

                </transition>

            </state>

            <state var="sMessage">

                <transition value="true">

                    <display>

                        <multi-label>

                            <text><eval>mMessage</eval> </text>

                            <x>10</x>

                            <y>10</y>

                            <width><eval>mScrWidth - 20</eval> </width>

                            <height><eval>mScrHeight - 20</eval></height>

                            <bg>&_COLOR_WHITE;</bg>

                            <event name="onselect">

                                <accelerators> <key>FIRE</key> </accelerators>

                                <script>

                                    sMessage = false;

                                    start();

                                </script>

                            </event>

                        </multi-label>

                    </display>

                </transition>

            </state>

        </states>

    </application>

</ujml>

ƒtƒ@ƒCƒ‹F ujinn6.ujml

 

ƒƒjƒ…[

‚±‚ê‚Å Ujinn ƒQ[ƒ€‚ÌŠî‘b‚ªŠ®¬‚µ‚Ü‚µ‚½B ‚µ‚©‚µƒ†[ƒUƒIƒvƒVƒ‡ƒ“‚Æ‚µ‚ÄuˆÙ‚Ȃ郌ƒxƒ‹‚ð—V‚ÔvuƒOƒŠƒbƒhƒTƒCƒY‚ð•ÏXvuF”‚ð•ÏXvu“¯‚¶ƒŒƒxƒ‹‚ð‚à‚¤ˆê‰ñ—V‚Ôv‚Æ‚¢‚Á‚½‹@”\‚ðŠg’£‚Å‚«‚Ü‚·B

 

‚±‚ê‚ç‚̃IƒvƒVƒ‡ƒ“‚ðŽw’è‰Â”\‚É‚·‚邽‚ß‚ÉAƒƒCƒ“ƒƒjƒ…[‚ƃIƒvƒVƒ‡ƒ“•ÏXƒ_ƒCƒAƒƒOƒ{ƒbƒNƒX‚ð’ljÁ‚·‚邱‚Ƃɂµ‚Ü‚·Bƒƒjƒ…[‚Í‘¼‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚Å‚à–𗧂‰”\«‚ª‚‚¢‚Ì‚ÅA<state-machine> ‚ðŽg‚Á‚ÄÄ—˜—p‰Â”\‚È UJML ‚Æ‚µ‚ÄŽÀ‘•‚µ‚Ü‚·F

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.4//EN" "../ujml.dtd" [

    <!ENTITY % include SYSTEM "include.ujmc">

    %include;

    <!ENTITY HIGHLIGHT_VISIBLE "-1">

    <!ENTITY HIGHLIGHT_FIRE_SELECT_EVENT "-2">

    <!ENTITY MENU_MAX_ITEMS "6">

]>

<ujml>

  <partition>

    <state-machines>

 

      <include file="include.ujml" state-machine="Event"/>

 

      <state-machine name="Menu" access="export">

 

        <state-variables>

          <state-var name="sMenu" type="boolean"/>

          <state-var name="sHighlight" type="int"/>

          <state-var name="sMenuItems" type="boolean" size="&MENU_MAX_ITEMS;"/>

        </state-variables>

 

        <variables>

          <var name="mHandler" type="string"/>

          <var name="mScrWidth" type="int"/>

          <var name="mScrHeight" type="int"/>

          <var name="mX" type="int"/>

          <var name="mY" type="int"/>

          <var name="mWidth" type="int"/>

          <var name="mItemHeight" type="int"/>

          <var name="mNumItems" type="int"/>

          <var name="mCaptions" type="string" size="&MENU_MAX_ITEMS;"/>

          <var name="mItemIndex" type="int"/>

          <var name="mCommands" type="int" size="&MENU_MAX_ITEMS;"/>

          <var name="mCurItemOffsetY" type="int"/>

          <var name="mCurItem" type="int"/>

          <var name="mAttributes" type="int" size="&MENU_ATTRIBUTES;"/>

        </variables>

 

        <functions>

          <function name="selectItem" type="void">

            <parameters>

              <var name="item" type="int"/>

            </parameters>

            <script>

              mCurItem = item;

              mCurItemOffsetY = mCurItem * mItemHeight;

   

              Event.setParam( 0, mCommands[ mCurItem ] );

              Event.fireEventNow( &EVENT_SELECTING;, mHandler );

   

              _clear_state( sHighlight );

              sHighlight = &HIGHLIGHT_FIRE_SELECT_EVENT;;

            </script>

          </function>

          <function name="Highlight_show" type="void">

            <script>

              _clear_state( sHighlight );

              sHighlight = &HIGHLIGHT_VISIBLE;;

            </script>

          </function>

          <function name="Highlight_move" type="void">

            <parameters>

              <var name="delta" type="int"/>

            </parameters>

            <script>

              mCurItem = (mCurItem + delta + mNumItems) % mNumItems;

              mCurItemOffsetY = mCurItem * mItemHeight;

 

              Event.setParam( 0, mCommands[ mCurItem ] );

              Event.fireEventNow( &EVENT_HIGHLIGHTING;, mHandler );

 

              Highlight_show();

 

              Event.setParam( 0, mCommands[ mCurItem ] );

              Event.fireEvent( &EVENT_HIGHLIGHTED;, mHandler);

            </script>

          </function>

          <function name="setAttribute" type="void" visibility="public">

            <parameters>

              <var name="attribute" type="int"/>

              <var name="color" type="int"/>

            </parameters>

            <script>

              mAttributes[ attribute ] = color;

            </script>

          </function>

          <function name="getAttribute" type="int" visibility="public">

            <parameters>

              <var name="attribute" type="int"/>

            </parameters>

            <variables>

              <var name="retval" type="int"/>

            </variables>

            <script>

              if (attribute &_GTE; 0)

              {

                retval = mAttributes[ attribute ];

              }

              else if (attribute == &MENU_ATTR_X;)

              {

                retval = mX - mAttributes[ &MENU_ATTR_BORDER_THICKNESS; ];

              }

              else if (attribute == &MENU_ATTR_Y;)

              {

                retval = mY - mAttributes[ &MENU_ATTR_BORDER_THICKNESS; ];

              }

              else if (attribute == &MENU_ATTR_WIDTH;)

              {

                retval = mWidth + mAttributes[ &MENU_ATTR_BORDER_THICKNESS; ] * 2;

              }

              else if (attribute == &MENU_ATTR_HEIGHT;)

              {

                retval = mItemHeight * mNumItems +

                         mAttributes[ &MENU_ATTR_BORDER_THICKNESS; ] * 2;

              }

            </script>

            <return>

              <eval>retval</eval>

            </return>

          </function>

          <function name="setVisible" type="void" visibility="public">

            <parameters>

              <var name="visible" type="boolean"/>

            </parameters>

            <variables>

              <var name="item" type="int"/>

            </variables>

            <script>

              _clear_state( sMenu );

   

              sMenu = visible;

   

              if (visible)

              {

                while (item &lt; mNumItems)

                {

              <!-- allow client to alter colors before paiting item -->

                  Event.setParam( 0, mCommands[ mCurItem ] );

                  Event.fireEventNow( &EVENT_PAINTING;, mHandler );

   

                  mItemIndex = item;

                  _clear_state( sMenuItems[ item ] );

                  sMenuItems[ item ] = true;

                  item = item + 1;

                }

     

                Highlight_show();

              }

              else

              {

                while (item &lt; mNumItems)

                {

                  _clear_state( sMenuItems[ item ] );

                  item = item + 1;

                }

      

                _clear_state( sHighlight );

              }

            </script>

          </function>

          <function name="getVisible" type="boolean" visibility="public">

            <return>

              <eval>sMenu</eval>

            </return>

          </function>

          <function name="center" type="void" visibility="public">

            <script>

              mX = (mScrWidth - mWidth) / 2;

              mY = (mScrHeight - mNumItems * mItemHeight) / 2;

            </script>

          </function>

          <function name="initialize" type="void" visibility="public">

            <parameters>

              <var name="handler" type="string"/>

            </parameters>

            <script>

              setVisible( false );

              mScrWidth = _getIntProperty( &_PROPERTY_INT_SCREEN_WIDTH; );

              mScrHeight = _getIntProperty( &_PROPERTY_INT_SCREEN_HEIGHT; );

              mHandler = handler;

              mWidth = 0;

              mItemHeight = _text_height( 0, 0, 0 );

              mNumItems = 0;

              mCurItemOffsetY = 0;

              mCurItem = 0;

              setAttribute( &MENU_ATTR_ITEM_FG;, &_COLOR_BLACK; );

              setAttribute( &MENU_ATTR_ITEM_BG;, &_COLOR_WHITE; );

              setAttribute( &MENU_ATTR_BORDER;, &_COLOR_GRAY; );

              setAttribute( &MENU_ATTR_BG;, &_COLOR_BLACK; );

              setAttribute( &MENU_ATTR_HIGHLIGHT_FG;, &_COLOR_WHITE; );

              setAttribute( &MENU_ATTR_HIGHLIGHT_BG;, 0xff9999ff );

              setAttribute( &MENU_ATTR_SELECTED_FG;, &_COLOR_WHITE; );

              setAttribute( &MENU_ATTR_SELECTED_BG;, 0xff6666cc );

              mX = 3;

              mY = mX;

              setAttribute( &MENU_ATTR_BORDER_THICKNESS;, mX );

            </script>

          </function>

          <function name="add" type="int" visibility="public">

            <parameters>

              <var name="caption" type="string"/>

              <var name="command" type="int"/>

            </parameters>

            <script>

              mCaptions[ mNumItems ] = caption;

              mCommands[ mNumItems ] = command;

              mNumItems = mNumItems + 1;

   

              mWidth = _max( mWidth, _text_width( caption, 0, 0, 0 ) + 8 );

            </script>

            <return>

              <eval>mNumItems - 1</eval>

            </return>

          </function>

          <function name="update" type="void" visibility="public">

            <parameters>

              <var name="id" type="int"/>

              <var name="caption" type="string"/>

              <var name="evt" type="int"/>

            </parameters>

            <execute>

              <set var="mCaptions">

                <index>

                  <eval>id</eval>

                </index>

                <ref var="caption"/>

              </set>

              <set var="mCommands">

                <index>

                  <eval>id</eval>

                </index>

                <eval>evt</eval>

              </set>

            </execute>

          </function>

          <function name="highlight" type="void" visibility="public">

            <parameters>

              <var name="id" type="int"/>

            </parameters>

            <script>

              mCurItem = id % mNumItems;

              mCurItemOffsetY = mCurItem * mItemHeight;

 

              Event.setParam( 0, mCommands[ mCurItem ] );

              Event.fireEventNow( &EVENT_HIGHLIGHTING;, mHandler );

   

              if (getVisible())

              {

                Highlight_show();

              }

   

              Event.setParam( 0, mCommands[ mCurItem ] );

              Event.fireEvent( &EVENT_HIGHLIGHTED;, mHandler );

            </script>

          </function>

          <function name="setPosition" type="void" visibility="public">

            <parameters>

              <var name="x" type="int"/>

              <var name="y" type="int"/>

            </parameters>

            <script>

              mX = x + mAttributes[ &MENU_ATTR_BORDER_THICKNESS; ];

              mY = y + mAttributes[ &MENU_ATTR_BORDER_THICKNESS; ];

            </script>

          </function>

        </functions>

   

 

        <templates>

          <template name="Item">

            <display>

              <label>

                <text>

                  <eval>mCaptions[ mItemIndex ]</eval>

                </text>

                <x>3</x>

                <fg>

                  <eval>mAttributes[ &MENU_ATTR_ITEM_FG; ]</eval>

                </fg>

              </label>

            </display>

          </template>

        </templates>

        <states>

          <state var="sMenu">

            <transition value="true">

              <display>

                <!-- catch all unwanted events, especially clicking outside the

                     boundary of the menu -->

                <box>

                  <width><eval>mScrWidth</eval></width>

                  <height><eval>mScrHeight</eval></height>

                  <fg>&_COLOR_TRANSPARENT;</fg>

                  <bg>&_COLOR_TRANSPARENT;</bg>

   

 

                  <event name="onselect">

                    <accelerators>

                      <key>FIRE</key>

                      <key>LEFT</key>

                      <key>RIGHT</key>

                      <key>UP</key>

                      <key>DOWN</key>

                      <key>0</key>

                      <key>1</key>

                      <key>2</key>

                      <key>3</key>

                      <key>4</key>

                      <key>5</key>

                      <key>6</key>

                      <key>7</key>

                      <key>8</key>

                      <key>9</key>

                    </accelerators>

                    <script>

                    </script>

                  </event>

                </box>

   

 

                <box>

                  <x>

                    <eval>mX - mAttributes[ &MENU_ATTR_BORDER_THICKNESS; ]</eval>

                  </x>

                  <y>

                    <eval>mY - mAttributes[ &MENU_ATTR_BORDER_THICKNESS; ]</eval>

                  </y>

                  <width>

                    <eval>mWidth + 2 * mAttributes[ &MENU_ATTR_BORDER_THICKNESS; ]</eval>

                  </width>

                  <height>

                    <eval>(mItemHeight * mNumItems) + 2 * mAttributes[ &MENU_ATTR_BORDER_THICKNESS; ]</eval>

                  </height>

                  <fg>

                    <eval>mAttributes[ &MENU_ATTR_BORDER; ]</eval>

                  </fg>

                  <bg>

                    <eval>mAttributes[ &MENU_ATTR_BG; ]</eval>

                  </bg>

                  <box>

                    <x>

                      <eval>mAttributes[ &MENU_ATTR_BORDER_THICKNESS; ]</eval>

                    </x>

                    <y>

                      <eval>mAttributes[ &MENU_ATTR_BORDER_THICKNESS; ]</eval>

                    </y>

                    <width>

                      <eval>mWidth</eval>

                    </width>

                    <height>

                      <eval>(mItemHeight * mNumItems)</eval>

                    </height>

                    <fg>

                      <eval>mAttributes[ &MENU_ATTR_ITEM_BG; ]</eval>

                    </fg>

                    <bg>

                      <eval>mAttributes[ &MENU_ATTR_ITEM_BG; ]</eval>

                    </bg>

                  </box>

                </box>

              </display>

            </transition>

          </state>

          <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

          <state var="sMenuItems" index="*">

            <transition value="true">

              <display>

                <box>

                  <x>

                    <eval>mX</eval>

                  </x>

                  <y>

                    <eval>mY + _state_index() * mItemHeight</eval>

                  </y>

                  <width>

                    <eval>mWidth</eval>

                  </width>

                  <height>

                    <eval>mItemHeight</eval>

                  </height>

                  <fg>&_COLOR_TRANSPARENT;</fg>

                  <bg>

                    <eval>mAttributes[ &MENU_ATTR_ITEM_BG; ]</eval>

                  </bg>

   

 

                  <event name="onselect">

                    <script>

                      selectItem( _state_index() );

                    </script>

                  </event>

    

 

                  <expand template="Item"/>

                </box>

              </display>

            </transition>

          </state>

          <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

          <state var="sHighlight">

            <transition value="&HIGHLIGHT_VISIBLE;">

              <display>

                <box>

                  <x>

                    <eval>mX</eval>

                  </x>

                  <y>

                    <eval>mY + mCurItemOffsetY</eval>

                  </y>

                  <width>

                    <eval>mWidth</eval>

                  </width>

                  <height>

                    <eval>mItemHeight</eval>

                  </height>

                  <fg>

                    <eval>mAttributes[ &MENU_ATTR_HIGHLIGHT_BG; ]</eval>

                  </fg>

                  <bg>

                    <eval>mAttributes[ &MENU_ATTR_HIGHLIGHT_BG; ]</eval>

                  </bg>

                  <event name="onselect">

                    <accelerators>

                      <key>FIRE</key>

                    </accelerators>

                    <execute>

                      <eval>selectItem( mCurItem )</eval>

                    </execute>

                  </event>

   

 

                  <label>

                    <text>

                      <eval>mCaptions[ mCurItem ]</eval>

                    </text>

                    <x>3</x>

                    <fg>

                      <eval>mAttributes[ &MENU_ATTR_HIGHLIGHT_FG; ]</eval>

                    </fg>

                  </label>

                </box>

                <box>

                  <event name="onselect">

                    <accelerators>

                      <key>DOWN</key>

                    </accelerators>

                    <execute>

                      <eval>Highlight_move( 1 )</eval>

                    </execute>

                  </event>

                </box>

                <box>

                  <event name="onselect">

                    <accelerators>

                      <key>UP</key>

                    </accelerators>

                    <execute>

                      <eval>Highlight_move( 0 - 1 )</eval>

                    </execute>

                  </event>

                </box>

                <box>

                  <event name="onselect">

                    <accelerators>

                      <key>

                        <eval>mCurItem + 1</eval>

                      </key>

                    </accelerators>

                    <execute>

                      <eval>selectItem( mCurItem )</eval>

                    </execute>

                  </event>

                </box>

              </display>

            </transition>

            <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

            <transition value="&HIGHLIGHT_FIRE_SELECT_EVENT;">

              <display>

                <box>

                  <x>

                    <eval>mX</eval>

                  </x>

                  <y>

                    <eval>mY + mCurItemOffsetY</eval>

                  </y>

                  <width>

                    <eval>mWidth</eval>

                  </width>

                  <height>

                    <eval>mItemHeight</eval>

                  </height>

                  <fg>

                    <eval>mAttributes[ &MENU_ATTR_SELECTED_BG; ]</eval>

                  </fg>

                  <bg>

                    <eval>mAttributes[ &MENU_ATTR_SELECTED_BG; ]</eval>

                  </bg>

                  <label>

                    <text>

                      <eval>mCaptions[ mCurItem ]</eval>

                    </text>

                    <x>3</x>

                    <fg>

                      <eval>mAttributes[ &MENU_ATTR_SELECTED_FG; ]</eval>

                    </fg>

                  </label>

                </box>

              </display>

              <delay>500</delay>

              <script>

                Event.setParam( 0, mCommands[ mCurItem ] );

                Event.fireEvent( &EVENT_SELECTED;, mHandler );

              </script>

            </transition>

          </state>

 

        </states>

      </state-machine>

    </state-machines>

  </partition>

</ujml>

ƒtƒ@ƒCƒ‹F menu.ujml

 

 

ŽŸ‚ÉAUjinn ‚Ƀƒjƒ…[‚ð‘g‚Ýž‚݂܂·F

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.4//EN" "ujml.dtd" [

  <!ENTITY % include SYSTEM "ujlib/include.ujmc">

  %include;

  <!-- Colors -->

  <!ENTITY SCORE_ITEM_FG "&_COLOR_WHITE;">

  <!ENTITY SCORE_ITEM_BG "0xff000066">

  <!-- Limits -->

  <!ENTITY MAX_ROWS "8">

  <!ENTITY MAX_COLS "8">

  <!ENTITY MAX_COLORS "16">

  <!ENTITY CLEARING_COLOR "&_COLOR_WHITE;">

  <!ENTITY CLEARED_COLOR "&_COLOR_TRANSPARENT;">

  <!-- Popup -->

  <!ENTITY POPUP_HIDDEN "-1">

  <!ENTITY POPUP_NULL "0">

  <!ENTITY POPUP_MAIN_MENU "1">

  <!ENTITY POPUP_MESSAGE "4">

  <!-- Main Menu -->

  <!ENTITY MENU_NEW "Next Level">

  <!ENTITY MENU_RESTART "Replay Level">

  <!ENTITY MENU_DONE "Done">

  <!-- Events events -->

  <!ENTITY ON_START "1">

  <!ENTITY ON_NEXT_LEVEL "2">

  <!ENTITY ON_GOTO_MENU "3">

  <!ENTITY ON_NULL "4">

  <!ENTITY ON_RESTART "5">

]>

<ujml>

  <application>

    <state-machines>

      <include file="ujlib/stack.ujml" state-machine="IntStack"/>

      <include file="ujlib/event.ujml" state-machine="Event"/>

    </state-machines>

 

    <state-variables>

      <state-var name="sFnKeys" type="boolean"/>

      <state-var name="sBoxes" type="boolean" size="&MAX_ROWS;,&MAX_COLS;"/>

      <state-var name="sCursor" type="boolean"/>

      <state-var name="sPopup" type="int"/>

      <state-var name="sScores" type="boolean"/>

      <state-var name="sDelayedUpdateScores" type="boolean"/>

      <state-var name="sDelayedRemoveBoxes" type="boolean"/>

      <state-var name="sDelayedSelectBox" type="boolean"/>

      <state-var name="sRemoveColumns" type="boolean"/>

      <state-var name="sStart" type="boolean"/>

      <state-var name="sRestart" type="boolean"/>

      <state-var name="sGameOver" type="boolean"/>

      <state-var name="sDelayedEndGameCheck" type="boolean"/>

    </state-variables>

    <variables>

      <var name="mTextHeight" type="int"/>

      <var name="mScrHeight" type="int"/>

      <var name="mScrWidth" type="int"/>

      <var name="mBoxHeight" type="int"/>

      <var name="mBoxWidth" type="int"/>

      <var name="mColorMap" type="int" size="&MAX_COLORS;,2"/>

      <var name="mRemoveBoxesFromColumn" type="boolean" size="&MAX_COLS;"/>

      <var name="tBoxRow" type="int"/>

      <var name="tBoxCol" type="int"/>

      <var name="mMessage" type="string"/>

      <var name="mColorMapIndex" type="int"/>

      <var name="mColorMapBoxSize" type="int"/>

      <!-- persistent variables -->

      <var name="mNumRows" type="int"/>

      <var name="mNumCols" type="int"/>

      <var name="mNumColors" type="int"/>

      <var name="mScore" type="int"/>

      <var name="mHighScore" type="int"/>

      <var name="mTotalBoxesCleared" type="int"/>

      <var name="mLevelNumber" type="int"/>

      <var name="mCursorCol" type="int"/>

      <var name="mCursorRow" type="int"/>

      <var name="mNumBoxes" type="int"/>

      <var name="mNumBoxesInColumn" type="int" size="&MAX_COLS;"/>

      <!-- game board -->

      <var name="mBoxes" type="int" size="&MAX_ROWS;,&MAX_COLS;,2"/>

      <var name="mColumnHasRemovableBoxes" type="boolean" size="&MAX_COLS;"/>

      <!-- mSavedXXX variables are used to restart the current game -->

      <var name="mSavedBoxes" type="int" size="&MAX_ROWS;,&MAX_COLS;,2"/>

      <var name="mSavedColumnHasRemovableBoxes" type="boolean" size="&MAX_COLS;"/>

      <!-- end of persistent variables -->

      <!-- Globals used for removing columns -->

      <var name="mNumBoxesCleared" type="int"/>

      <var name="gI" type="int"/>

      <var name="gCol" type="int"/>

      <var name="gRow" type="int"/>

      <var name="gSeed" type="int"/>

      <var name="gAvailCol" type="int"/>

      <var name="gRemoveColumnsDelay" type="int"/>

    </variables>

    <functions>

      <function name="repaintPopup" type="void">

        <variables>

          <var name="temp" type="int"/>

        </variables>

        <script>

          temp = sPopup;

          sPopup = &POPUP_HIDDEN;;

          sPopup = temp;

        </script>

      </function>

       …

    </functions>

    <templates>

       …

    </templates>

    <script>

       …

    </script>

    <display>

       …

    </display>

    <states>

      <state var="sFnKeys">

        <transition value="true">

          <display>

            <fn>

              <text>Options</text>

              <event name="onselect">

                <accelerators>

                  <key>F2</key>

                  <key>POUND</key>

                  <key>STAR</key>

                </accelerators>

                <variables>

                  <var name="temp" type="int"/>

                </variables>

                <script>

                  temp = sPopup;

                  sPopup = &POPUP_HIDDEN;;

 

                  if (temp == &POPUP_MAIN_MENU;)

                  {

                    sPopup = &POPUP_NULL;;

                  }

                  else if (temp == &POPUP_NULL;)

                  {

                    sPopup = &POPUP_MAIN_MENU;;

                  }

                  else

                  {

                  <!-- an options menu is being displayed; restart the game with new settings -->

                    start();

                  }

                </script>

              </event>

            </fn>

          </display>

        </transition>

      </state>

      ¥¥¥

      <state var="sPopup">

        <transition value="&POPUP_NULL;">

          <script>

            Menu.setVisible( false );

          </script>

        </transition>

        <transition value="&POPUP_MAIN_MENU;">

          <script>

            Menu.initialize( "menu" );

            Menu.add( "&MENU_NEW;", &ON_NEXT_LEVEL; );

            Menu.add( "&MENU_RESTART;", &ON_RESTART; );

            Menu.add( "&MENU_DONE;", &ON_NULL; );

            Menu.center();

            Menu.setVisible( true );

          </script>

        </transition>

        <transition value="&POPUP_MESSAGE;">

          <display>

            <box>

              <x>

                <eval>2</eval>

              </x>

              <y>

                <eval>2</eval>

              </y>

              <width>

                <eval>mScrWidth - 4</eval>

              </width>

              <height>

                <eval>mScrHeight - 4</eval>

              </height>

              <bg>&_COLOR_DARKGRAY;</bg>

              <multi-label>

                <text>

                  <ref var="mMessage"/>

                </text>

                <x>2</x>

                <y>2</y>

                <width>

                  <eval>mScrWidth - 8</eval>

                </width>

                <height>

                  <eval>_max( mScrHeight - (mTextHeight * 2) - 4, mTextHeight * 2 )</eval>

                </height>

                <fg>&_COLOR_WHITE;</fg>

                <bg>&_COLOR_DARKGRAY;</bg>

              </multi-label>

            </box>

          </display>

          <script>

            Menu.initialize( "menu" );

            Menu.add( "&MENU_RESTART;", &ON_RESTART; );

            Menu.add( "&MENU_NEW;", &ON_NEXT_LEVEL; );

            Menu.center();

            Menu.setVisible( true );

          </script>

        </transition>

      </state>

 

      <state var="Event.sEvent" index="&EVENT_SELECTED;">

        <transition value="menu">

          <variables>

            <var name="command" type="int"/>

          </variables>

          <script>

            Menu.setVisible( false );

 

            command = Event.getParam( 0 );

       

            if (command == &ON_GOTO_MENU;)

            {

              sPopup = &POPUP_MAIN_MENU;;

            }

            else if (command == &ON_START;)

            {

              start();

            }

            else if (command == &ON_RESTART;)

            {

              restart();

            }

            else if (command == &ON_NEXT_LEVEL;)

            {

              mScore = 0;

              mHighScore = 0;

              mLevelNumber = mLevelNumber + 1;

              start();

            }

            else if (command == &ON_NULL;)

            {

              sPopup = &POPUP_NULL;;

            }

          </script>

        </transition>

      </state>

      ¥¥¥

      <state var="sDelayedEndGameCheck">

        <transition value="true">

          <delay>100</delay>

          <variables>

            <var name="fGameOver" type="boolean"/>

          </variables>

          <script>

            <!-- see if the end of the game has been reached. Either all boxes have been removed -->

            <!-- or it is not possible to remove any more boxes. -->

 

            if (mTotalBoxesCleared == mNumBoxes)

            {

            <!-- we have a winner! all boxes have been removed. -->

              mScore = mScore + (mScore / 4);

              mMessage = _strcat( "Level cleared!

Bonus: ", _strcat( mScore / 4, "." ) );

              sPopup = &POPUP_MESSAGE;;

 

              if (mScore &gt; mHighScore)

              {

                mHighScore = mScore;

              }

 

              fGameOver = true;

            }

            else

            {

            <!-- determine if there are removable boxes -->

 

              if (!areBoxesRemovable())

              {

            <!-- there are no more selectable boxes so the game is over -->

                mScore = mScore - (mNumBoxes - mTotalBoxesCleared);

                mMessage = _strcat( "No moves.

Penalty: ", _strcat( mNumBoxes - mTotalBoxesCleared, "." ) );

                sPopup = &POPUP_MESSAGE;;

 

                if (mScore &gt; mHighScore)

                {

                  mHighScore = mScore;

                }

 

                fGameOver = true;

              }

            }

 

            updateScores();

            <!-- repaint cursor -->

            sCursor = false;

            sCursor = true;

            sDelayedEndGameCheck = false;

            sGameOver = fGameOver;

          </script>

        </transition>

      </state>

      ¥¥¥

    </states>

       <--Menu goes on top of z-order -->

    <state-machines>

      <include file="ujlib/menu.ujml" state-machine="Menu"/>

    </state-machines>

  </application>

</ujml>

 

 

ƒtƒ@ƒCƒ‹F ujinn7.ujml

 

   


   

 

ƒrƒW[ƒJ[ƒ\ƒ‹iˆ—’†ƒCƒ“ƒWƒP[ƒ^j

’x‚¢ƒfƒoƒCƒX‚ł̓Q[ƒ€ŠJŽnŽž‚̉æ–Ê‚ÌÄ•`‰æ‚ÉŽžŠÔ‚ª‚©‚©‚è‚Ü‚·B Š®—¹‚É”•b‚ð—v‚·‚é‰Â”\«‚ª‚‚¢‚±‚Æ‚ª‚í‚©‚Á‚Ä‚¢‚鈗‚É‚ÍA ‰æ–ʂɃrƒW[ƒJ[ƒ\ƒ‹iˆ—’†ƒCƒ“ƒWƒP[ƒ^j‚ð’ljÁ‚µ‚Ü‚·B

 

ƒrƒW[ƒJ[ƒ\ƒ‹‚Í‘¼‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚Å‚àŽg‚¤‰Â”\«‚ª‘å‚Ȃ̂ÅA Ä—˜—p‰Â”\‚È <state-machine> ‚Æ‚µ‚ÄŽÀ‘•‚·‚邱‚Ƃɂµ‚Ü‚·B

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.4//EN" "../ujml.dtd" [

  <!ENTITY % include SYSTEM "include.ujmc">

  %include;

 

  <!ENTITY BUSY_FACE "0xff0000ff">

  <!ENTITY BUSY_HANDS "0xff00ffff">

  <!ENTITY BUSY_BG "0xfff000066">

  <!ENTITY BUSY_BORDER "2">

  <!ENTITY BUSY_HAND_THICKNESS "4">

  <!ENTITY BUSY_ANIMATE_FRAME_CNT "4">

]>

<ujml>

  <partition>

    <state-machines>

 

      <include file="include.ujml" state-machine="Linker"/>

 

      <state-machine name="Busy" access="export">

 

        <state-variables>

          <state-var name="sAnimate" type="boolean"/>

          <state-var name="sAnimateTick" type="boolean"/>

        </state-variables>

 

        <variables>

          <var name="mScrWidth" type="int"/>

          <var name="mScrHeight" type="int"/>

          <var name="mTextHeight" type="int"/>

          <var name="mAnimateFrame" type="int"/>

          <var name="mSize" type="int"/>

          <var name="mX" type="int"/>

          <var name="mY" type="int"/>

          <var name="mLittleHandX" type="int" size="&BUSY_ANIMATE_FRAME_CNT;"/>

          <var name="mLittleHandY" type="int" size="&BUSY_ANIMATE_FRAME_CNT;"/>

          <var name="mLittleHandWidth" type="int" size="&BUSY_ANIMATE_FRAME_CNT;"/>

          <var name="mLittleHandHeight" type="int" size="&BUSY_ANIMATE_FRAME_CNT;"/>

          <var name="mBigHandX" type="int" size="&BUSY_ANIMATE_FRAME_CNT;"/>

          <var name="mBigHandY" type="int" size="&BUSY_ANIMATE_FRAME_CNT;"/>

          <var name="mBigHandWidth" type="int" size="&BUSY_ANIMATE_FRAME_CNT;"/>

          <var name="mBigHandHeight" type="int" size="&BUSY_ANIMATE_FRAME_CNT;"/>

        </variables>

 

        <functions>

          <function name="centerText" type="int">

            <parameters>

              <var name="text" type="string"/>

            </parameters>

            <return>

              <eval>(mScrWidth - _text_width( text, 0, 0, 0 )) / 2</eval>

            </return>

          </function>

 

          <function name="initialize" type="void" visibility="public">

            <script>

              mScrWidth = _getIntProperty( &_PROPERTY_INT_SCREEN_WIDTH; );

              mScrHeight = _getIntProperty( &_PROPERTY_INT_SCREEN_HEIGHT; );

              mTextHeight = _text_height( 0, 0, 0 );

              mSize = _max( _min( mScrWidth, mScrHeight ) / &BUSY_HAND_THICKNESS;, 40 );

              mX = (mScrWidth - mSize) / 2;

              mY = (mScrHeight - mSize) / 2;

              mLittleHandX[ 0 ] = mX + mSize / 2 - &BUSY_HAND_THICKNESS; / 2;

              mLittleHandY[ 0 ] = mY + mSize / 2;

              mLittleHandWidth[ 0 ] = mSize / 2 - &BUSY_HAND_THICKNESS; * 2;

              mLittleHandHeight[ 0 ] = &BUSY_HAND_THICKNESS;;

              mBigHandX[ 0 ] = mX + mSize / 2 - &BUSY_HAND_THICKNESS; / 2;

              mBigHandY[ 0 ] = mY + &BUSY_HAND_THICKNESS;;

              mBigHandWidth[ 0 ] = &BUSY_HAND_THICKNESS;;

              mBigHandHeight[ 0 ] = mSize / 2;

              mLittleHandX[ 1 ] = mX + mSize / 2 - &BUSY_HAND_THICKNESS; / 2;

              mLittleHandY[ 1 ] = mY + mSize / 2;

              mLittleHandWidth[ 1 ] = mSize / 2 - &BUSY_HAND_THICKNESS; * 2;

              mLittleHandHeight[ 1 ] = &BUSY_HAND_THICKNESS;;

              mBigHandX[ 1 ] = mX + mSize / 2 - &BUSY_HAND_THICKNESS; / 2;

              mBigHandY[ 1 ] = mY + mSize / 2;

              mBigHandWidth[ 1 ] = mSize / 2 - &BUSY_HAND_THICKNESS;;

              mBigHandHeight[ 1 ] = &BUSY_HAND_THICKNESS;;

              mLittleHandX[ 2 ] = mX + mSize / 2 - &BUSY_HAND_THICKNESS; / 2;

              mLittleHandY[ 2 ] = mY + mSize / 2;

              mLittleHandWidth[ 2 ] = mSize / 2 - &BUSY_HAND_THICKNESS; * 2;

              mLittleHandHeight[ 2 ] = &BUSY_HAND_THICKNESS;;

              mBigHandX[ 2 ] = mX + mSize / 2 - &BUSY_HAND_THICKNESS; / 2;

              mBigHandY[ 2 ] = mY + mSize / 2;

              mBigHandWidth[ 2 ] = &BUSY_HAND_THICKNESS;;

              mBigHandHeight[ 2 ] = mSize / 2 - &BUSY_HAND_THICKNESS;;

              mLittleHandX[ 3 ] = mX + mSize / 2 - &BUSY_HAND_THICKNESS; / 2;

              mLittleHandY[ 3 ] = mY + mSize / 2;

              mLittleHandWidth[ 3 ] = mSize / 2 - &BUSY_HAND_THICKNESS; * 2;

              mLittleHandHeight[ 3 ] = &BUSY_HAND_THICKNESS;;

              mBigHandX[ 3 ] = mX + &BUSY_HAND_THICKNESS;;

              mBigHandY[ 3 ] = mY + mSize / 2;

              mBigHandWidth[ 3 ] = mSize / 2 - &BUSY_HAND_THICKNESS;;

              mBigHandHeight[ 3 ] = &BUSY_HAND_THICKNESS;;

            </script>

          </function>

 

          <function name="show" type="void" visibility="public">

            <script>

              mAnimateFrame = 0;

              sAnimate = true;

            </script>

          </function>

 

 

 

          <function name="hide" type="void" visibility="public">

            <script>

              sAnimate = false;

            </script>

          </function>

 

        </functions>

 

        <states>

          <state var="sAnimate">

            <transition value="true">

              <display>

                <box>

                  <x>

                    <eval>mX - &BUSY_BORDER;</eval>

                  </x>

                  <y>

                    <eval>mY - &BUSY_BORDER;</eval>

                  </y>

                  <width>

                    <eval>mSize + &BUSY_BORDER; * 2</eval>

                  </width>

                  <height>

                    <eval>mSize + &BUSY_BORDER; * 2</eval>

                  </height>

                  <fg>&BUSY_BG;</fg>

                  <bg>&BUSY_BG;</bg>

                  <oval>

                    <x>

                      <eval>&BUSY_BORDER;</eval>

                    </x>

                    <y>

                      <eval>&BUSY_BORDER;</eval>

                    </y>

                    <width>

                      <eval>mSize</eval>

                    </width>

                    <height>

                      <eval>mSize</eval>

                    </height>

                    <fg>&BUSY_FACE;</fg>

                    <bg>&BUSY_FACE;</bg>

                  </oval>

                </box>

              </display>

              <script>

                sAnimateTick = true;

              </script>

            </transition>

 

            <transition value="false">

              <script>

                sAnimateTick = false;

              </script>

            </transition>

          </state>

 

          <state var="sAnimateTick">

            <transition value="true">

              <display>

                <box>

                  <x>

                    <eval&g