blue vs red

Post Reply
deniskolsanov
Posts: 8
Joined: Thu Dec 20, 2012 4:19 pm

blue vs red

Post by deniskolsanov » Thu Dec 20, 2012 8:50 pm

Написал игру для планшетов и телефонов с мультитачем. Цель игры: перекликать соперника, тем самым увеличив свою площадь до максимума.
Возможно добавлю:
-ограничение нажатий ( игрок использовав все нажатия устройства в этой версии блокирует нажатие соперника )
-оптимизация кода
-настройки
-бонусы
-больше игроков, до 4( но требование будет уже более трех нажатий )
-что предложите ?

Code: Select all

xsize = get_xsize(0)
ysize = get_ysize(0)

while(1) { //главный цикл

//сброс некоторых переменых
while(get_event()){
    if EVT [EVT_TYPE] == EVT_QUIT {halt}
}
var = 0
player1 = 0
player2 = 0

//запрос на старт игры
while( player1 + player2 < 2 ) {
    frame()
    clear(RED)
    fvar = ( fvar*2 + var ) / 3
    fbox( fvar-xsize, -ysize/2, xsize, ysize, BLUE)
    if player1 == 0 {
         lines( -xsize/2, -ysize/2, xsize/2, ysize)
    }
    if player2 == 0 {
         lines( 0, -ysize/2, xsize/2, ysize)
    }
    while(get_event()) {
            if EVT [EVT_TYPE] == (EVT_MOUSEBUTTONDOWN) | EVT [EVT_TYPE] == (EVT_TOUCHBEGIN) {
                  x = EVT [ EVT_X ]
                  if  x < 0 {
                         player1 = 1
                  } else {
                         player2 = 1
                  }
            }
            if EVT [EVT_TYPE] == EVT_QUIT {halt}
    }
}

//сама игра
while( var > -xsize/2 & var < xsize/2 ) {
    frame()
    clear(RED)
    fvar = ( fvar*2 + var ) / 3
    fbox( fvar-xsize, -ysize/2, xsize, ysize, BLUE)
    //обработка нажатий
    while(get_event()) {
            if EVT [EVT_TYPE] == (EVT_MOUSEBUTTONDOWN) | EVT [EVT_TYPE] == (EVT_TOUCHBEGIN) {
                  x = EVT [ EVT_X ]
                  if  x < var {
                         var + 30
                  } else {
                         var - 30
                  }
            if EVT [EVT_TYPE] == EVT_QUIT {halt}
            }
    }
}

//плавное выранивание поля по центру
while( fvar<-5 | fvar>5 ) {
    frame()
    fvar = fvar * 4 div 5
    if fvar > 0 {
         fbox( fvar, -ysize/2, xsize/2, ysize, RED)
    } else {
         fbox( fvar-(xsize/2), -ysize/2, xsize/2, ysize, BLUE)
    }
}

}

//функция штрифовки экрана
fn lines( $x, $y, $xsize, $ysize, $size) {
     $lx = $x
     $xsize = $xsize + $x
     $ysize = $ysize + $y
     if $size<2 {$size = 10}

      while($y < $ysize){
            $x = $lx
            if $y>0 {
                  var1 = $y - $y div $size * $size - ($size/2)
            } else {
                  var1 = $y - $y div $size * $size + ($size/2)
            }
            while($x-$size < $xsize){
                  dot( var1 + $x , $y, BLACK)
                  $x + $size
            }
           $y + 1
      }
}
Last edited by deniskolsanov on Fri Dec 21, 2012 12:39 am, edited 1 time in total.

User avatar
NightRadio
Site Admin
Posts: 2860
Joined: Fri Jan 23, 2004 12:28 am
Location: Ekaterinburg. Russia
Contact:

Re: blue vs red

Post by NightRadio » Thu Dec 20, 2012 10:29 pm

Прикольно :)
Только надо бы еще добавить код обработки события EVT_QUIT, чтобы корректно выходить из приложения.

Post Reply