Jezzball est un jeu Ti89 à la base si je me trompe pas , n'ayant pas trop d'idée de quoi coder en ces fins de vacances j'ai fait ca depuis deux jours ca m'a permis de me mettre un peu aux picwins (après un premier essai de dessins de fractales) et j'vous en fais profiter , au sens ou c'est comme le serpent sur le portable , si vous êtes joueurs vous allez y passer un moment malgré la simplicité et/ou la qualité assez basse du jeu (par rapport a dbz par exemple)
Le but du jeu est de 'remplir' son écran , en isolant les billes :
une fois une zone de l'écran isolée , si elle ne contient pas de billes elle se retrouve colorée ,
une fois 75% de l'écran coloré on passe au niveau suivant en ajoutant une bille :))
Control permet de faire tourner le curseur
Entrée permet de l'étendre ou de recommencer après un Game Over
Source / Exemple :
/*
Jezzball pour mirc .
Le but du jeu est de 'remplir' son écran , en isolant les billes :
une fois une zone de l'écran isolée , si elle ne contient pas de billes elle se retrouve colorée ,
une fois 75% de l'écran coloré on passe au niveau suivant en ajoutant une bille :))
Alias JezzBall {
hfree -w Jball*
hmake Jball2 100
;score limite à changer pour rendre le jeu plus ou moins difficile
hadd Jball2 Score 75
;nombres de vies initialement
hadd Jball2 Lives 3
;nombre de balles au premier appel
hadd Jball2 N 1
;couleur de remplissage
hadd Jball2 color $rgb(0,105,155)
Jezzball0 1
}
Alias -l JezzBall0 {
if !$1 && !$hget(Jball2,N) { echo -s * Syntaxe : /jezzball <N> | halt }
hfree -w Jball
hmake Jball 100
window -hp @J2 -1 -1 520 430
window -aCpdh +l @J -1 -1 520 430
drawfill -r @J2 $rgb(224,224,224) 1 1 1
drawfill -r @J $rgb(224,224,224) 1 1 1
drawtext -r @J $rgb(12,74,143) Tahoma 10 50 35 Jezzball mIRC
drawtext -r @J $rgb(12,74,143) Tahoma 10 50 355 Touches : [Ctrl][Enter][v][ $+ $chr(139) $+ ][^][ $+ $chr(155) $+ ]
hadd Jball S0 4
hadd Jball S1 49 50 450 50
hadd Jball S2 450 50 450 350
hadd Jball S3 450 350 50 350
hadd Jball S4 50 350 50 49
hadd Jball R0 4
hadd Jball R1 52 51 400 2
hadd Jball R2 451 52 2 300
hadd Jball R3 52 351 400 2
hadd Jball R4 51 52 2 300
hadd Jball T0 1
hadd Jball T1 50 50 400 300
hadd Jball C0 0
hadd Jball Percent 0
hadd Jball2 Stop 0
Jb.segments
Jb.display
Jb.ball0 $1
hadd Jball cursor 250 200 1
hadd Jball line 0
.timerJball -m 0 10 Jb.ball $1
}
Alias -l Jb.AddSeg {
hadd Jball line 0
hinc Jball S0
hinc Jball R0
hadd Jball S $+ $hget(Jball,S0) $1-
tokenize 32 $calc($1 + 2) $calc($2 + 2) $calc($3 - $1) $calc($4 - $2)
hadd Jball R $+ $hget(JBall,R0) $1 $2 $iif(!$3,2 $4,$3 2)
Jb.Segments
}
Alias -l Jb.segments {
var %i 1
while $hget(Jball,s $+ %i) {
drawline @J 1 2 $ifmatch
drawline @J2 1 2 $ifmatch
inc %i
}
}
Alias -l Jb.ball0 {
var %i $1
while %i {
hadd Jball %i 250 200 $iif($r(0,1),-) $+ $calc(0.7 + $r(0,60) / 100) $iif($r(0,1),-) $+ $calc(0.7 + $r(0,60) / 100) 2
dec %i
}
}
Alias -l Jb.cursor {
if !$window(@J) { .timerJb* off | halt }
tokenize 32 $hget(Jball,cursor) $1
if ($4 != $null) { drawline -r @J $4 1 $calc($1 $iif($3,- 4)) $calc($2 $iif(!$3,- 4)) $calc($1 $iif($3,+ 4)) $calc($2 $iif(!$3,+ 4)) }
else { drawcopy @J2 $calc($1 -4) $calc($2 -4) 8 8 @J $calc($1 -4) $calc($2 -4) }
}
Alias -l Jb.line {
;horizontal
tokenize 32 $hget(JBall,line) $hget(JBall,line)
if !$window(@J) { .timerJb* off | hfree -w Jball* | halt }
;horizontal
if $6 {
drawdot -r @J $rgb(250,0,0) 1 $1 $2
drawdot -r @J $rgb(250,0,0) 1 $4 $5
var %i = $Jb.IsSeg2($1,$2) , %j = $Jb.IsSeg2($4,$5)
if !%i { tokenize 32 $calc($1 -2) $2-6 }
if !%j { tokenize 32 $1-3 $calc($4 +2) $5-6 }
if (%i && %j) { .timerJbLine off | Jb.AddSeg $1-2 $4-5 | Jb.color $1-2 $4-5 }
else { hadd Jball line $1-6 }
}
;vertical
else {
drawdot -r @J $rgb(250,0,0) 1 $1 $2
drawdot -r @J $rgb(250,0,0) 1 $4 $5
var %i = $Jb.IsSeg2($1,$2) , %j = $Jb.IsSeg2($4,$5)
if !%i { tokenize 32 $1 $calc($2 -2) $3-6 }
if !%j { tokenize 32 $1-4 $calc($5 +2) $6 }
if (%i && %j) { .timerJbLine off | Jb.AddSeg $1-2 $4-5 | Jb.color $1-2 $4-5 }
else { hadd Jball line $1-6 }
}
}
Alias -l Jb.IsSeg {
var %i 1,%i2,%x $1,%y $2
while $hget(Jball,R $+ %i) {
tokenize 32 $ifmatch
if $inrect(%x,%y,$1,$2,$3,$4) { %i2 = %i2 %i }
inc %i
}
return %i2
}
Alias -l Jb.IsSeg2 {
var %i $hget(Jball,S0),%x $1,%y $2
while %i {
tokenize 32 $hget(Jball,S $+ %i)
if (%x isnum $sorttok($+($1,-,$3),45,n)) && (%y isnum $sorttok($+($2,-,$4),45,n)) { return 1 }
dec %i
}
return 0
}
Alias -l Jb.IsLine {
var %x $int($1),%y $int($2)
tokenize 32 $hget(Jball,line)
return $inrect(%x,%y,$calc($1 -3),$calc($2 -3),$calc($4 - $1 +5),$calc($5 - $2 +5))
}
Alias -l Jb.ball {
var %i 1 , %imax = $1
while (%i <= %imax) {
tokenize 32 $hget(Jball,%i)
if $hget(JBall,line) && $Jb.IsLine($1,$2) { Jb.go | halt }
tokenize 32 $Jb.Rebond($1,$2,$3,$4) $5
hadd Jball %i $calc($1 + $3) $calc($2 + $4 ) $3-
if !$window(@J) || $hget(Jball2,stop) { .timerJb* off | hfree -w Jball | halt }
drawcopy @J2 $calc($1 -3) $calc($2 -3) 6 6 @J $calc($1 -3) $calc($2 -3)
;drawdot -r @J $rgb(225,225,225) 2 $1 $2
drawdot @J $5 2 $calc($1 + $3) $calc($2 + $4)
;Jb.segments
inc %i
}
Jb.cursor $rgb(255,0,0)
}
Alias -l Jb.Go {
.timerJb* off
if !$hget(Jball2,Lives) {
drawtext -r @J $rgb(200,0,0) Tahoma 36 150 150 GAME OVER
hadd Jball2 Stop 1
}
else { hdec Jball2 Lives | Jb.display | jezzball0 $hget(Jball2,N) }
}
Alias -l Jb.rebond {
var %s = $Jb.IsSeg($int($1),$int($2))
if $gettok(%s,2,32) { return $1-2 $calc(-1 * $3) $calc(-1 * $4) }
elseif %s {
%s = $hget(Jball,S $+ %s)
if ($gettok(%s,1,32) == $gettok(%s,3,32)) { return $1-2 $calc(-1 * $3) $4 }
return $1-3 $calc(-1 * $4)
}
return $1-
}
Alias -l Jb.rect {
var %i = $hget(Jball,T0),%x $1,%y $2
while %i {
tokenize 32 $hget(Jball,T $+ %i)
if $inrect(%x,%y,$1,$2,$3,$4) { return %i }
dec %i
}
}
Alias -l Jb.color {
;$Jb.color(coordspts)
var %r = $hget(Jball,T)
tokenize 32 $hget(Jball,T $+ %r) $1-4
hinc Jball T0
;honrizontal
if ($6 == $8) {
hadd Jball T $+ %r $1-3 $calc($6 - $2)
hadd Jball T $+ $hget(Jball,T0) $5-6 $3 $calc($2 + $4 - $6)
}
;vertical
else {
hadd Jball T $+ %r $1-2 $calc($5 - $1) $4
hadd Jball T $+ $hget(Jball,T0) $5-6 $calc($1 + $3 - $5) $4
}
tokenize 32 $hget(Jball,T $+ %r) $hget(Jball,T $+ $hget(Jball,T0))
.timerJball off
var %i = $hget(Jball2,N),%1 0,%2 0
while %i {
if $inrect($gettok($hget(Jball,%i),1,32),$gettok($hget(Jball,%i),2,32),$1,$2,$3,$4) { inc %1 }
if $inrect($gettok($hget(Jball,%i),1,32),$gettok($hget(Jball,%i),2,32),$5,$6,$7,$8) { inc %2 }
dec %i
}
if (!%1) { drawrect -rf @J $hget(Jball2,color) 1 $1-4 | drawrect -rf @J2 $hget(Jball2,color) 1 $1-4 | hadd Jball percent $calc($hget(Jball,percent) + $3 * $4) | Jb.display }
if (!%2) { drawrect -rf @J $hget(Jball2,color) 1 $5-8 | drawrect -rf @J2 $hget(Jball2,color) 1 $5-8 | hadd Jball percent $calc($hget(Jball,percent) + $7 * $8) | Jb.display }
Jb.segments
.timerJball -m 0 10 Jb.ball $hget(Jball2,N)
hdel Jball T
}
Alias -l Jb.display {
var %s = $int($calc($hget(Jball,percent) /1200))
if (%s >= $hget(Jball2,Score)) {
.timerJb* off
hadd Jball2 Stop 1
if ($hget(Jball2,N) == 10) { drawtext -r @J $rgb(0,37,187) Tahoma 36 150 150 GAGNE ! | halt }
if ($hget(Jball2,N) < 10) {
hinc Jball2 N
drawtext -bor @J $rgb(0,37,187) $rgb(225,225,225) Tahoma 16 100 20 Niveau suivant : $hget(Jball2,N) balles
hinc Jball2 Lives
.timer 1 2 Jezzball0 $hget(Jball2,N)
}
}
drawtext -br @J $rgb(12,74,143) $rgb(225,225,225) Tahoma 10 330 35 $str($chr(160),80)
drawtext -br @J $rgb(12,74,143) $rgb(225,225,225) Tahoma 10 330 35 Score : %s % - Vies : $hget(Jball2,Lives)
}
on *:KEYDOWN:@J:13,37,38,39,40,17:{
if $hget(Jball2,stop) && ($keyval != 13) { halt }
if $hget(Jball2,stop) && ($keyval == 13) { JezzBall | halt }
if ($keyval == 13) && ($getdot(@J2,$gettok($hget(Jball,cursor),1,32),$gettok($hget(Jball,cursor),2,32)) isnum 14700000-14900000) {
tokenize 32 $hget(Jball,cursor) $hget(Jball,cursor)
if $hget(Jball,line) || $Jb.IsSeg2($1,$2) { halt }
hadd Jball line $iif($6,$calc($1 -2) $2-3 $calc($4 -2) $5,$1 $calc($2 -2) $3-4 $calc($5 -2)) $6
hadd Jball T $Jb.rect($1,$2)
;hadd Jball line $1-
.timerJbLine -m 0 25 Jb.line
halt
}
if ($keyval == 17) && (!$keyrpt) { Jb.cursor | tokenize 32 $hget(Jball,cursor) | hadd Jball cursor $1 $2 $iif($3,0,1) | Jb.cursor 4 | halt }
var %d = $iif($keyrpt,6,2)
tokenize 32 $hget(Jball,cursor)
Jb.cursor
Jb.segments
tokenize 32 $calc($1 + $iif($keyval == 37,- %d,$iif($keyval == 39,%d,0))) $calc($2 + $iif($keyval == 40,%d,$iif($keyval == 38,- %d,0))) $3 $1 $2
hadd Jball cursor $iif($1 isnum 50-450,$1,$4) $iif($2 isnum 50-350,$2,$5) $3
Jb.cursor $rgb(255,0,0)
}
Conclusion :
Il reste certains bugs , notamment des balles restant piégées dans un segment lors de tentatives "limite" mais j'espère que ca vous plaira quand même :p
Lorsque j'aurai fini de corriger ces bugs j'en ferai probablement une version plus configurable , même si au dela de 7-8 balles chez moi ca rame beaucoup trop pour être jouable (les détections de collision seront certainement changées en conséquence dans une prochaine version)
/jezzball
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.