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.