Defuser

This example is simple game. Bombs are placed randomly on the cube surface and they must be defused by placing cursor on them followed by a generic tap. Time is limited and every bomb counts for the final score. If the defusing goes well, frequency and speed of bombs goes up, so more points can be achieved. This example also shows how to create a customized icon in the script.

#include <futurocube>

new len = 5
new time_step = 500
new bomb
new cursor
new defuse

new icon[]=[ICON_MAGIC1, ICON_MAGIC2, 0, 0, RED, BLUE, RED, BLUE, RED, BLUE, GREEN, GREEN, GREEN,
''INSTRM2'', ''UFO'']

new missed_flag = 0

draw()
{
  ClearCanvas()

  if (missed_flag)
  {
    SetColor(RED)
    DrawCube()
    missed_flag--
  }

  SetColor(cORANGE)
  DrawCross(bomb, len)
  SetRgbColor(0xFF, 0xFF, 0xFF)
  DrawPoint(bomb)
  if (_i(bomb) == _i(cursor)) SetColor(cRED)
  else SetColor(cMAGENTA)
  DrawPoint(cursor)

  if (GetTimer(1))
  {
    SetColor(cPURPLE)
    DrawSquare(defuse)
  }

  PrintCanvas()
}

new score=0

over()
{
  new i
  SetRgbColor(255, 255, 255)
  Play("snd1")
  for (i=0; i<25; i++)
  {
    Delay(41)
    ClearCanvas()
    DrawCube()
    PrintCanvas()
    Delay(41)
    ClearCanvas()
    PrintCanvas()
  }
  Quiet()
  Score(score)
}

main()
{
  new good = 0
  new missed = 0

  ICON(icon)
  RegMotion(TAP_GENERIC)
  bomb = GetRnd(54)
  SetTimer(0, time_step)

  new warn=0

  for(;;)
  {
    Sleep()
    if (GetAppMsecs() > 40000) warn = 1
    if (GetAppMsecs() > 50000) over()

    cursor = GetCursor()
    if (!GetTimer(0))
    {
      if (len > 0) len--
      else
      {
        Play("kap")
        missed_flag = 10
        PrintCanvas()
        bomb = GetRnd(54)
        len = 5
        if (time_step < 500) time_step += 20
        good = 0
        missed++
      }
      SetTimer(0, time_step)
    }

    if (warn && GetTimer(2) == 0)
    {
      Play("bell1");
      SetTimer(2,1000);
    }

    if (Motion())
    {
      if (_i(cursor) == _i(bomb))
      {
        Play("vzum")
        SetTimer(1, 500)
        defuse = bomb
        bomb = GetRnd(54)
        len = 5
        good++
        score++
        if (missed == 0 || good >= 3)
        {
          if (time_step > 150) time_step -= 20
          good = 0
        }
        SetTimer(0, time_step)
      }
    }
    AckMotion
    draw()
  }
}

Last updated

Was this helpful?