Frog revival

Contenu du snippet

Hop, apres pong, je m attaque a frog ! Bref un pti jeu sans pretention à la va vite comme source de retour. Testez le et faites vos critiques ! Comme a l accoutumé, hash table,picwin sont au rendez vous.

Source / Exemple :


alias -l h { hadd f $1- }
alias -l g { return $hget(f,$1-) }
alias frog {
  window -c @gameover
  if ($hget(f)) hfree f
  hmake f 100
  window -ph @b 0 0 640 480
  window -pdCB +L @frog 0 0 640 480
  drawrect -f @frog 15 1 0 0 640 100
  drawrect -f @frog 15 1 0 380 640 100
  $drawb(@b)
  $drawb(@frog)
  ;dlife
  h xf 320
  h yf 10
  h x1c 640
  h y1c 125
  h x2c 0
  h y2c 207
  h x3c 0
  h y3c 305
  h c1 2
  h c2 4
  h c3 3
  h l 3
  h lvl 1
  h sc 0
  h fps 60
  h cl1 6
  h cl12 13
  h cl2 7
  h cl22 8
  h cl3 12
  h cl32 10
  h v 4
  titlebar @frog  = score : $g(sc) - lvl : $g(lvl) - vie : $g(l)=
  $dfrog($g(xf),$g(yf))
  drawf
}
alias -l llife {
  drawcopy @b $calc($g(xf)-10) $calc($g(yf)-5) 40 40 @frog $calc($g(xf)-10) $calc($g(yf)-5) 40 40
  hdec f l
  $h(yf,60)
  titlebar @frog  = score : $g(sc) - lvl : $g(lvl) - vie : $g(l)=
}

alias -l drawf {

  var %begincode = $ticks

  ;variable coordonnes
  var %x1 = $g(x1c), %x2 = $g(x2c), %x3 = $g(x3c)
  var %y1 = $g(y1c), %y2 = $g(y2c), %y3 = $g(y3c)
  var %v1 = $g(c1), %v2 = $g(c2), %v3 = $g(c3)
  var %x = $g(xf), %y = $g(yf)

  if ( $g(l) < 1) {
    .timerreset 1 3 frog
    window -c @frog
    window -pdCB +Let @gameover 0 0 640 480
    drawrect -f @gameover 15 1 0 0 640 480
    drawtext -b @gameover 0 1 arial 18 280 200 GamE OveR    
  }

  ;collision
  if ( %x >= %x1 && %x <= $calc(%x1 + 90) && %y >= %y1 && %y <= $calc(%y1 + 45) ) {   
    llife
  }

  elseif ( %x >= %x2 && %x <= $calc(%x2 - 90) && %y >= %y2 && %y <= $calc(%y3 + 45) ) {
    llife   
  }

  elseif ( %x >= %x3 && %x <= $calc(%x3 + 90) && %y >= %y3 && %y <= $calc(%y3 + 45) ) {
    llife   
  }
  ; }
  ;effacage du fond derriere la    grenouille
  drawcopy -n @b $calc($g(xf)- $g(v)*2) $calc($g(yf)- $g(v)*2) $calc(40 + $g(v)*2) $calc(40 + $g(v)*2) @frog $calc($g(xf)- $g(v)*2) $calc($g(yf)- $g(v)*2) $calc(40 + $g(v)*2)  $calc(40 + $g(v)*2)

  ;derriere les voitures
  drawcopy -n @b 0 120 640 50 @frog 0 120 650 50
  drawcopy -n @b 0 202 640 50 @frog 0 202 650 50
  drawcopy -n @b 0 300 640 50 @frog 0 300 650 50

  ;affichage du decor
  $dfrog($g(xf),$g(yf))

  ;gestion des voitures
  $dcar(%x1,$g(y1c),$g(cl1),$g(cl12))
  $h(x1c,$calc(%x1 - %v1))
  if ( %x1 < -90) {
    $h(x1c,$calc(640 + $rand(200,400)- ($g(lvl)*5)))
    $h(c2,$rand(1+ $g(lvl)/2,$g(lvl)))
    h cl1 $rand(3,6)
    h cl12 $rand(6,8)
  }
  $dcar(%x2,$g(y2c),$g(cl2),$g(cl22))
  $h(x2c,$calc(%x2 + %v2))
  if ( %x2 > 640) {
    $h(x2c,$calc(-90 - $rand(200,400) + ($g(lvl)*5)))
    $h(c2,$rand(1+ $g(lvl)/2,$g(lvl)))
    h cl2 $rand(7,8)
    h cl22 $rand(10,12)

  }
  $dcar(%x3,$g(y3c),$g(cl3),$g(cl32))
  $h(x3c,$calc(%x3 - %v3))
  if ( %x3 < -90) {
    $h(x3c,$calc(640 + $rand(200,400)- ($g(lvl)*5)))
    $h(c3,$rand(1+ $g(lvl)/2,$g(lvl)))
    h cl3 $rand(3,6)
    h cl32 $rand(6,8)
  }
  ;stage clear
  if ( $g(yf) > 400 ) {
    drawcopy @b 100 0 40 40 @frog $calc($g(xf)-5) $calc($g(yf)-5) 40 40
    h sc $calc($g(sc) + 150)
    h yf 60
    hinc f lvl  
    titlebar @frog  = score : $g(sc) - lvl : $g(lvl) =
  }
  drawpic @frog
  ;boucle
  .timerfrog -h 1 $calc( ( 1000 / $g(fps) ) - ($ticks - %begincode) ) drawf
}

alias drawb {
  drawrect -f $1 1 1 0 0 640 480
  drawrect -f $1 15 1 0 0 640 100
  drawrect -f $1 14 1 0 100 640 10
  drawrect -f $1 14 1 0 370 640 10
  drawrect -f $1 15 1 0 380 640 100
  var %i = 0
  while (%i < 20) {
    drawrect -f $1 0 1 $calc(32*%i) 190 20 10
    inc %i
  }
  var %i = 0
  while (%i < 20) {
    drawrect -f $1 0 1 $calc(32*%i) 260 20 10
    inc %i
  }
}
alias dfrog {
  ;$1 = x
  ;$2 = y
  drawrect -ndf @frog 3 1 $calc($1 - 2) $calc($2 + 1) 8 10
  drawrect -ndf @frog 3 1 $calc($1 - 4) $calc($2 + 18) 8 10
  drawrect -ndf @frog 3 1 $calc($1 + 14) $calc($2 + 1) 8 10
  drawrect -ndf @frog 3 1 $calc($1 + 16) $calc($2 + 18) 8 10
  drawrect -ndf @frog 9 1 $calc($1 +3) $2 14 25
  drawrect -ndf @frog 9 1 $1 $calc($2 +10) 20 15
  drawrect -ndf @frog 0 1 $calc($1 + 1) $calc($2 + 15) 10 8
  drawrect -ndf @frog 0 1 $calc($1 + 10) $calc($2 + 15) 10 8
  drawdot -ndf @frog 1 3 $calc($1 + 7) $calc($2 + 22)
  drawdot -ndf @frog 1 3 $calc($1 + 16) $calc($2 + 22)
}

alias -l dcar {
  ;echo -a $1-
  drawrect -nf @frog 14 1 $calc($1 +5) $calc($2 -3) 10 47
  drawrect -nf @frog 14 1 $calc($1 +75) $calc($2 -3) 10 47
  drawrect -nf @frog $3 1 $1 $2 90 40 
  drawrect -nf @frog 15 1 $calc($1 +20) $2 10 40
  drawrect -nf @frog $4 1 $calc($1 +30) $2 35 40
  drawrect -nf @frog 15 1 $calc($1 +60) $2 10 40
}

on *:keydown:@frog:*: {
  ; le code ici va de soit ;) ;
  var %x = $g(xf),%y = $g(yf),%v = $g(v)
  if ( $keyval = 39 )  h xf $calc(%x + %v)
  if ( $keyval = 37 )  h xf $calc(%x - %v)
  if ( $keyval = 38 )  h yf $calc(%y - %v)
  if ( $keyval = 40 )  h yf $calc(%y + %v)
  if ( $keyval = 109 )  hdec f v
  if ( $keyval = 107 )  hinc f v
}

on *:close:@frog: {
  window -c @b
  window -c @gameover
  timerfrog off
  timerreset off
  hfree f
}

Conclusion :


/frog pour lancer le jeu.
+ pour augmenter la vitesse de la grenouille
- pour la reduire

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.