{curl 6.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}
{applet manifest = "manifest.mcurl"}
{import * from CURL.AUDIO.STANDARD}
{define-proc {get-mogura}:{Array-of HBox}
    {return
        {{Array-of HBox}
            {HBox {image source = {url "piyo_h_002_0.gif"}}},
            {HBox {image source = {url "piyo_h_002_1.gif"}}},
            {HBox {image source = {url "piyo_h_002_2.gif"}}},
            {HBox {image source = {url "piyo_h_002_3.gif"}}},
            {HBox {image source = {url "piyo_h_002_4.gif"}}}}}
}
{define-proc {level1}:HBox
    {return {HBox {image source = {url "level1.gif"}}}}
}
{define-proc {level2}:HBox
    {return {HBox {image source = {url "level2.gif"}}}}
}
{define-proc {level3}:HBox
    {return {HBox {image source = {url "level3.gif"}}}}
}
{define-proc {difficulty1}:HBox
    {return {HBox {image source = {url "difficulty1.gif"}}}}
}
{define-proc {difficulty2}:HBox
    {return {HBox {image source = {url "difficulty2.gif"}}}}
}
{define-proc {difficulty3}:HBox
    {return {HBox {image source = {url "difficulty3.gif"}}}}
}
{value
    let sound:Sound = {Sound {url "piko1.wav"}}
    let hanmear:HBox = {HBox {image source = {url "hanmaer.gif"}}}
    let hanmear2:HBox = {HBox {image source = {url "hanmaer2.gif"}}}
    let mogura0:{Array-of HBox} = {get-mogura}
    let mogura1:{Array-of HBox} = {get-mogura}
    let mogura2:{Array-of HBox} = {get-mogura}
    let mogura3:{Array-of HBox} = {get-mogura}
    let h0:HBox = {HBox mogura0[0]}
    let h1:HBox = {HBox mogura1[0]}
    let h2:HBox = {HBox mogura2[0]}
    let h3:HBox = {HBox mogura3[0]}
    let cnt0:int = -1
    let t0:Timer = {Timer
                       interval = .3s,  repeat = 5,  delay = 0s, enabled? = false,
                       {on TimerEvent do
                           {inc cnt0}
                           {if cnt0 != -1 then
                               {h0.clear}}
                           {h0.add mogura0[cnt0]}
                           {if cnt0 == 3 then
                               {set cnt0 = -1}}
                           {if t0.repeat == 0 then
                               set t0.enabled? = false
                               set t0.repeat = 5
                               set cnt0 = -1
                           }
                       }}
    let cnt1:int = -1
    let t1:Timer = {Timer
                       interval = .3s,  repeat = 5,  delay = 0s, enabled? = false,
                       {on TimerEvent do
                           {inc cnt1}
                           {if cnt1 != -1 then
                               {h1.clear}}
                           {h1.add mogura1[cnt1]}
                           {if cnt1 == 3 then
                               {set cnt1 = -1}}
                           {if t1.repeat == 0 then
                               set t1.enabled? = false
                               set t1.repeat = 5
                               set cnt1 = -1
                           }
                       }}
    let cnt2:int = -1
    let t2:Timer = {Timer
                       interval = .3s,  repeat = 5,  delay = 0s, enabled? = false,
                       {on TimerEvent do
                           {inc cnt2}
                           {if cnt2 != -1 then
                               {h2.clear}}
                           {h2.add mogura2[cnt2]}
                           {if cnt2 == 3 then
                               {set cnt2 = -1}}
                           {if t2.repeat == 0 then
                               set t2.enabled? = false
                               set t2.repeat = 5
                               set cnt2 = -1
                           }
                       }}
    let cnt3:int = -1
    let t3:Timer = {Timer
                       interval = .3s,  repeat = 5,  delay = 0s, enabled? = false,
                       {on TimerEvent do
                           {inc cnt3}
                           {if cnt3 != -1 then
                               {h3.clear}}
                           {h3.add mogura3[cnt3]}
                           {if cnt3 == 3 then
                               {set cnt3 = -1}}
                           {if t3.repeat == 0 then
                               set t3.enabled? = false
                               set t3.repeat = 5
                               set cnt3 = -1
                           }
                       }}
    let score-int:int = 0
    let score:TextDisplay = {TextDisplay 
                                font-size = 18pt, halign = "right", 
                                value = {String score-int}}
    let score-board:Table = {Table 
                                font-size = 15pt, font-weight = "bold", halign = "center",
                                border-color = "#ffffbb", border-width = 2pt,
                                {row-prototype
                                    background = "#99ff99",
                                    {cell-prototype colspan = 4, {text color = "white", SCORE BOARD}}}}
    
    let count:int = 0
    let canvas:Canvas = {Canvas background = "pink", width = 4.5in, height = 1.5in,
                            {on pe:PointerEnter at can:Canvas do
                                set can.cursor = {Cursor.get-invisible-cursor}
                                {can.add hanmear, x = pe.x, y = pe.y}
                            },
                            {on pm:PointerMotion at can:Canvas do
                                {if hanmear.parent == can then
                                    {can.move-to-xy hanmear, pm.x, pm.y}}
                                {if hanmear2.parent == can then
                                    {can.move-to-xy hanmear2, pm.x, pm.y}}
                            },
                            {on pp:PointerPress at can:Canvas do
                                {hanmear.detach}
                                {can.add hanmear2, x = pp.x, y = pp.y}
                                {if count > 0 then
                                    {if cnt0 == -1 or cnt0 == 2 then
                                        {if (pp.x/0.001m) asa int > 11 and (pp.x/0.001m) asa int < 20
                                            and (pp.y/0.001m) asa int > 20 and (pp.y/0.001m) asa int < 27 then
                                            {set t0.enabled? = false}
                                            {sound.play}
                                            {inc score-int, 10}
                                            {set score.value = {String score-int}}
                                            {h0.clear}
                                            {h0.add mogura0[4]}
                                            let timer0:Timer = {Timer interval = 1s, repeat = 1,  delay = 1s,
                                                                   {on TimerEvent do
                                                                       {mogura0[4].detach}
                                                                       {set cnt0 = -1}
                                                                   }}
                                            {set t0.enabled? = true}
                                        }
                                    }
                                    {if cnt1 == -1 or cnt1 == 2 then
                                        {if (pp.x/0.001m) asa int > 36 and (pp.x/0.001m) asa int < 45
                                            and (pp.y/0.001m) asa int > 20 and (pp.y/0.001m) asa int < 27 then
                                            {set t1.enabled? = false}
                                            {sound.play}
                                            {inc score-int, 10}
                                            {set score.value = {String score-int}}
                                            {h1.clear}
                                            {h1.add mogura1[4]}
                                            let timer1:Timer = {Timer interval = 1s, repeat = 1,  delay = 1s,
                                                                   {on TimerEvent do
                                                                       {mogura1[4].detach}
                                                                       {set cnt1 = -1}}}
                                            {set t1.enabled? = true}
                                        }
                                    }
                                    {if cnt2 == -1 or cnt2 == 2 then
                                        {if (pp.x/0.001m) asa int > 62 and (pp.x/0.001m) asa int < 70
                                            and (pp.y/0.001m) asa int > 20 and (pp.y/0.001m) asa int < 27 then
                                            {set t2.enabled? = false}
                                            {sound.play}
                                            {inc score-int, 10}
                                            {set score.value = {String score-int}}
                                            {h2.clear}
                                            {h2.add mogura2[4]}
                                            let timer2:Timer = {Timer interval = 1s, repeat = 1,  delay = 1s,
                                                                   {on TimerEvent do
                                                                       {mogura2[4].detach}
                                                                       {set cnt2 = -1}}}
                                            {set t2.enabled? = true}
                                        }
                                    }
                                    {if cnt3 == -1 or cnt3 == 2 then
                                        {if (pp.x/0.001m) asa int > 87 and (pp.x/0.001m) asa int < 96
                                            and (pp.y/0.001m) asa int > 20 and (pp.y/0.001m) asa int < 27 then
                                            {set t3.enabled? = false}
                                            {sound.play}
                                            {inc score-int, 10}
                                            {set score.value = {String score-int}}
                                            {h3.clear}
                                            {h3.add mogura3[4]}
                                            let timer3:Timer = {Timer interval = 1s, repeat = 1,  delay = 1s,
                                                                   {on TimerEvent do
                                                                       {mogura3[4].detach}
                                                                       {set cnt3 = -1}}}
                                            {set t3.enabled? = true}
                                        }
                                    }
                                }
                            },
                            {on pr:PointerRelease at can:Canvas do
                                {hanmear2.detach}
                                {can.add hanmear, x = pr.x, y = pr.y}
                            },
                            {on PointerLeave at can:Canvas do
                                {hanmear.detach}
                            }
                        }
    let number:TextDisplay = {TextDisplay 
                                 border-style = "none",
                                 font-size = 22pt, font-weight = "bold", value = "Ready??"}
    let difficulty:RadioFrame = {RadioFrame
                                    {HBox
                                        spacing = 5pt, background = "#99e6ff",
                                        margin = 2pt, width = {add-stretch},
                                        {Fill},
                                        {bold Level:}, ||レベル：},
                                        {RadioButton radio-value = "Easy"}, ||"かんたん"},
                                        {RadioButton radio-value = "Medium"}, ||"ふつう"},
                                        {RadioButton radio-value = "Hard"}, ||"むずかしい"},
                                        {Fill}
                                    },
                                    value = "Medium", ||"ふつう",
                                    {on ValueChanged at rf:RadioFrame do
                                        {if rf.value == "Easy" then || "かんたん" then
                                            set t0.interval = 1s
                                            set t1.interval = 1s
                                            set t2.interval = 1s
                                            set t3.interval = 1s
                                            set cnt0 = 1
                                            set cnt1 = 1
                                            set cnt2 = 1
                                            set cnt3 = 1
                                         elseif rf.value == "Medium" then ||"ふつう" then
                                            set t0.interval = .3s
                                            set t1.interval = .3s
                                            set t2.interval = .3s
                                            set t3.interval = .3s
                                         else
                                            set t0.interval = .1s
                                            set t1.interval = .1s
                                            set t2.interval = .1s
                                            set t3.interval = .1s
                                        }
                                    }
                                }
    let clock-box:CommandButton = {CommandButton label = {image source = {url "piyo_i_057_01.gif"}},
                                      style = "rollover",
                                      tooltip = {Tooltip "Start!!"},
                                      {on Action do
                                          {if difficulty.value != "かんたん" then
                                              {set cnt0 = -1}
                                              {set cnt1 = -1}
                                              {set cnt2 = -1}
                                              {set cnt3 = -1}
                                           else
                                              {set cnt0 = 1}
                                              {set cnt1 = 1}
                                              {set cnt2 = 1}
                                              {set cnt3 = 1}
                                          }
                                          {set clock-box.label = {image source = {url "piyo_i_057_11.gif"}}}
                                          let random:Random = {Random}
                                              {set count = 20}
                                              {Timer
                                                  interval = .5s, repeat = 21, delay = 0s,
                                                  {on TimerEvent do
                                                      {if count rem 2 == 0 then
                                                          {set number.value = {String (count div 2)}}}
                                                      let r:int32 = {random.next-in-range 0, 3}
                                                      {if r == 0 then
                                                          {set t0.enabled? = true}
                                                       elseif r == 1 then
                                                          {set t1.enabled? = true}
                                                       elseif r == 2 then
                                                          {set t2.enabled? = true}
                                                       else
                                                          {set t3.enabled? = true}
                                                      }
                                                      {dec count}
                                                      {if count == -1 then
                                                          {set t0.enabled? = false}
                                                          {set t1.enabled? = false}
                                                          {set t2.enabled? = false}
                                                          {set t3.enabled? = false}
                                                          {set t0.repeat = 5}
                                                          {set t1.repeat = 5}
                                                          {set t2.repeat = 5}
                                                          {set t3.repeat = 5}
                                                          
                                                          {h0.clear}
                                                          {h1.clear}
                                                          {h2.clear}
                                                          {h3.clear}
                                                          {h0.add mogura0[0]}
                                                          {h1.add mogura1[0]}
                                                          {h2.add mogura2[0]}
                                                          {h3.add mogura3[0]}
                                                          {set clock-box.label = 
                                                              {image source = {url "piyo_i_057_01.gif"}}}
                                                          {if score-int < 50 then
                                                              {popup-message 
                                                                  {VBox height = .5in, width = 1.3in,
                                                                      {image source = {url "level1.gif"}}}}
                                                              {score-board.add
                                                                  {row-prototype
                                                                      background = "#eeffff",
                                                                      {HBox {Fill}, score-int}, 
                                                                      {text font-size = 9pt, point},
                                                                      {level1},
                                                                      {if difficulty.value == "かんたん" then
                                                                          {difficulty1}
                                                                       elseif difficulty.value == "ふつう" then
                                                                          {difficulty2}
                                                                       else
                                                                          {difficulty3}
                                                                      }}}
                                                           elseif score-int < 100 then
                                                              {popup-message 
                                                                  {VBox height = .5in, width = 1.3in,
                                                                      {image source = {url "level2.gif"}}}}
                                                              {score-board.add
                                                                  {row-prototype
                                                                      background = "#ffffdd",
                                                                      {HBox {Fill}, score-int},
                                                                      {text font-size = 9pt, point},
                                                                      {level2},
                                                                      {if difficulty.value == "かんたん" then
                                                                          {difficulty1}
                                                                       elseif difficulty.value == "ふつう" then
                                                                          {difficulty2}
                                                                       else
                                                                          {difficulty3}
                                                                      }}}
                                                           else
                                                              {popup-message 
                                                                  {VBox height = .5in, width = 1.3in,
                                                                      {image source = {url "level3.gif"}}}}
                                                              {score-board.add
                                                                  {row-prototype
                                                                      background = "#ffeeee",
                                                                      {HBox {Fill}, score-int},
                                                                      {text font-size = 9pt, point},
                                                                      {level3},
                                                                      {if difficulty.value == "かんたん" then
                                                                          {difficulty1}
                                                                       elseif difficulty.value == "ふつう" then
                                                                          {difficulty2}
                                                                       else
                                                                          {difficulty3}
                                                                      }}}
                                                          }
                                                          {set score-int = 0}
                                                          {set score.value = {String score-int}}
                                                          {set number.value = "Ready??"}
                                                      }
                                                  }
                                              }
                                      }
                                  }
    let clock:HBox = {HBox valign = "bottom",
                         number, clock-box,
                         {HBox 
                             font-size = 16pt, color = "red",
                             border-style = "raised", border-color = "yellow", 
                             border-width = 2pt, {bold SCORE}, score}}
    {canvas.add h0, x = .5in, y = 1in}
    {canvas.add h1, x = 1.5in, y = 1in}
    {canvas.add h2, x = 2.5in, y = 1in}
    {canvas.add h3, x = 3.5in, y = 1in}
    {HBox valign = "top",
        {VBox canvas, difficulty, clock}, score-board}
}

