Teken jeux en script ( demo )

Contenu du snippet

héhé g fé un mini jeux teken en script .
testé vs verez ...

lol , bon le nivo graphique est vraiment trés primaire ms je compte le travailler voir le dessiné .

Ce script n'est qu'une version béta ( demo ) et je compte lui apportter bcp de modification .

Projet à venir :
- partie en réseau ( via les sockets )
- ajout de nouvo cou
- graphisme
- ( partie contre l'ordi , si j'y arrive )
- des animations
- du son

et puis ....

J'espere que ca va vs plaire ... ( malgrès le nivo graphisme )

Source / Exemple :


alias teken { .timertek 1 .1 tekenintro | window -doapBkC +dL @teken 1 1 600 250 }

;#########
;# intro #
;#########

alias tekenintro {
  drawrect -f @teken 1 1 0 0 600 250
  set %intro 1
  tekenintro2
}
alias tekenintro1 {
  drawrect -f @teken 1 1 0 0 600 250
  drawtext @teken 4 260 115 $mid(T E K E N irc,1,%intro)
  inc %intro
  if ( %intro >= 15 ) { set %intro 600 | .timergo 1 .1 tekenintro3 | halt }
  tim 15 tekenintro1
}
alias tekenintro2 {
  drawrect -f @teken 1 1 0 0 600 250
  drawtext @teken 4 260 %intro T E K E N
  inc %intro
  .timergo 1 .1 tekenintro2
  if ( %intro >= 250 ) { .timergo off | set %intro 1 | tekenintro1 }
}
alias tekenintro3 {
  drawrect -f @teken 1 1 0 0 600 250
  drawtext @teken 4 260 115 T E K E N irc
  drawtext @teken 4 %intro 140 by aBd0ulaX
  set %intro $calc( %intro -1 )
  if ( %intro <= 290 ) { .timergo off | unset %intro | set %tekx -30 | .timergo 250 .1 tekenintro4 | halt }
  .timergo 1 .1 tekenintro3
}
alias tekenintro4 {
  drawrect -f @teken 1 1 0 0 600 250
  drawtext @teken 4 260 115 T E K E N irc
  drawtext @teken 4 290 140 by aBd0ulaX
  drawline @teken 12 2 $calc( %tekx -10) 210 %tekx 150
  drawline @teken 12 2 $calc( %tekx +10) 210 %tekx 150
  drawline @teken 12 2 %tekx 110 %tekx 170
  drawdot @teken 12 10 $calc( %tekx +2) 105
  inc %tekx
  if ( %tekx >= 220 ) { 
    drawline @teken 12 2 %tekx 125 $calc( %tekx + 15 ) 140 
    drawline @teken 12 2 $calc( %tekx + 15 ) 140 $calc( %tekx + 30 ) 125
    set %cou poing
    tim 10 tekenintro5
  }
}
alias tekenintro5 {
  drawline @teken 1 2 %tekx 125 $calc( %tekx + 15 ) 140 
  drawline @teken 1 2 $calc( %tekx + 15 ) 140 $calc( %tekx + 30 ) 125
  drawline @teken 12 2 %tekx 125 $calc( %tekx + 40 ) 125 
  drawdot @teken 4 5 $calc( %tekx + 40 ) 127
  set %intro 260
  tekenintro6
}
alias tekenintro6 {
  drawrect -f @teken 1 1 0 0 600 250
  drawtext @teken 4 %intro 115 T E K E N irc
  drawtext @teken 4 $calc( %intro + 30 ) 140 by aBd0ulaX
  drawline @teken 12 2 %tekx 125 $calc( %tekx + 40 ) 125 
  drawdot @teken 4 5 $calc( %tekx + 40 ) 127
  drawline @teken 12 2 $calc( %tekx -10) 210 %tekx 150
  drawline @teken 12 2 $calc( %tekx +10) 210 %tekx 150
  drawline @teken 12 2 %tekx 110 %tekx 170
  drawdot @teken 12 10 $calc( %tekx +2) 105
  inc %intro
  if ( %intro >= 650 ) { .timergo off | set %intro -20 | set %tekx 100 | tekenintro7 | halt }
  .timergo 1 .1 tekenintro6
}
alias tekenintro7 {
  drawrect -f @teken 1 1 0 0 600 250
  drawtext @teken 4 190 %intro T E K E N irc
  drawtext @teken 4 220 $calc( %intro + 25 ) by aBd0ulaX
  drawline @teken 12 2 220 $calc( %tekx + 25 ) 260 $calc( %tekx + 25 ) 
  drawdot @teken 4 5 260 $calc( %tekx + 27 )
  drawline @teken 12 2 210 $calc( %tekx + 110 ) 220 $calc( %tekx + 50 )
  drawline @teken 12 2 230 $calc( %tekx + 110 ) 220 $calc( %tekx + 50 )
  drawline @teken 12 2 220 $calc( %tekx + 10 ) 220 $calc( %tekx + 70 )
  drawdot @teken 12 10 222 $calc( %tekx + 5 )
  if ( %intro <= 125 ) { inc %intro }
  if ( $calc( %intro + 25 ) >= 80 ) { inc %tekx }
  if ( %tekx >= 270 ) { .timergo off | unset %intro | teken2 | halt }
  .timergo 1 .1 tekenintro7
}

;########
;# jeux #
;########

alias teken2 {
  set %tektime $ctime
  .timerout 0 1 kentime
  set %tekx 50
  set %botx 550
  set %scoreman 0
  set %scorebot 0
  set %fight 1
  tekman
}

on 1:KEYDOWN:@teken:*:{ if ( %fight == 1 ) {
    if ( $keyval == %jgauche ) && ( %tekx > 10 ) { set %tekx $calc( %tekx - 8 ) | tekman }
    if ( $keyval == %jdroite ) && ( %tekx < $calc( %botx - 20 ) ) { set %tekx $calc( %tekx + 8 ) | tekman }
    if ( $keyval == %jdroite ) && ( %tekx >= $calc( %botx - 20 ) ) && ( %botx < 590 ) { set %botx $calc( %botx + 2 ) | set %tekx $calc( %tekx + 1 ) | tekman }
    if ( $keyval == %jpoing ) && ( %cou == $null ) {     
      drawline @teken 12 2 %tekx 145 $calc( %tekx + 15 ) 160 
      drawline @teken 12 2 $calc( %tekx + 15 ) 160 $calc( %tekx + 30 ) 145
      set %cou poing
      tim 10 cou1
    }
    if ( $keyval == %jpied ) && ( %cou == $null ) {
      drawline @teken 1 2 $calc( %tekx -10) 240 %tekx 180
      drawline @teken 12 2 $calc( %tekx +20) 170 %tekx 180 
      drawline @teken 12 2 $calc( %tekx +20) 170 $calc( %tekx +40) 180
      set %cou pied
      tim 10 cou2
    }
    if ( $keyval == %jdefence1 ) && ( %cou == $null ) { 
      drawline @teken 12 2 %tekx 145 $calc( %tekx + 15 ) 160 
      drawline @teken 12 2 $calc( %tekx + 15 ) 160 $calc( %tekx + 15 ) 130 
      drawdot @teken 15 5 $calc( %tekx + 17 ) 130
      set %cou defence1
      tim 35 tekman
    }
    if ( $keyval == %jdefence2 ) && ( %cou == $null ) {
      drawline @teken 1 2 $calc( %tekx -10) 240 %tekx 180
      drawline @teken 12 2 $calc( %tekx +20) 170 %tekx 180 
      drawline @teken 12 2 $calc( %tekx +20) 170 $calc( %tekx +20) 200
      drawdot @teken 15 5 $calc( %tekx +20) 203
      set %cou defence2
      tim 35 tekman
    }
    if ( $keyval == %bgauche ) && ( %botx > $calc( %tekx + 20 ) ) { set %botx $calc( %botx - 8 ) | tekman }
    if ( $keyval == %bgauche ) && ( %botx <= $calc( %tekx + 20 ) ) && ( %tekx > 10 ) { set %botx $calc( %botx - 1 ) | set %tekx $calc( %tekx - 2 ) | tekbot }
    if ( $keyval == %bdroite ) && ( %botx < 590 ) { set %botx $calc( %botx + 8 ) | tekman }
    if ( $keyval == %bpoing ) && ( %bcou == $null ) {     
      drawline @teken 4 2 %botx 145 $calc( %botx - 15 ) 160 
      drawline @teken 4 2 $calc( %botx - 15 ) 160 $calc( %botx - 30 ) 145
      set %bcou poing
      btim 10 bcou1
    }
    if ( $keyval == %bpied ) && ( %bcou == $null ) {
      drawline @teken 1 2 $calc( %botx -10) 240 %botx 180
      drawline @teken 4 2 $calc( %botx -20) 170 %botx 180 
      drawline @teken 4 2 $calc( %botx -20) 170 $calc( %botx -40) 180
      set %bcou pied
      btim 10 bcou2
    }
    if ( $keyval == %bdefence1 ) && ( %bcou == $null ) { 
      drawline @teken 4 2 %botx 145 $calc( %botx - 15 ) 160 
      drawline @teken 4 2 $calc( %botx - 15 ) 160 $calc( %botx - 15 ) 130 
      drawdot @teken 14 5 $calc( %botx - 14 ) 130
      set %bcou defence1
      btim 35 tekbot 1
    }
    if ( $keyval == %bdefence2 ) && ( %cou == $null ) {
      drawline @teken 1 2 $calc( %botx +10) 240 %botx 180
      drawline @teken 4 2 $calc( %botx -20) 170 %botx 180 
      drawline @teken 4 2 $calc( %botx -20) 170 $calc( %botx -20) 200
      drawdot @teken 14 5 $calc( %botx -20) 203
      set %bcou defence2
      btim 35 tekbot 1
    }
  }
}

menu @teken {
  recommencer :/teken2
  -
  config :/tekencfg
  close :/window -c @teken | .timerbo off | .timerout off
}

alias tekman {
  if ( %cou == poing ) && ( %bcou != defence1 ) && ( $calc(%botx - %tekx ) <= 45 ) { inc %scoreman | if ( %botx < 590 ) { set %botx $calc( %botx + 4 ) } }
  if ( %cou == pied ) && ( %bcou != defence2 ) && ( $calc(%botx - %tekx ) <= 55 ) { inc %scoreman | if ( %botx < 590 ) { set %botx $calc( %botx + 4 ) } }
  unset %cou 
  drawrect -f @teken 1 1 0 0 600 250
  kentime
  drawtext @teken 12 20 20 %tekman
  drawtext @teken 4 $calc( 550 - $len( %tekbot ) ) 20 %tekbot
  drawtext @teken 9 270 5 %scoreman
  drawtext @teken 9 325 5 %scorebot
  drawrect @teken 12 1 20 9 230 9 | drawrect @teken 4 1 350 9 230 9
  drawrect -f @teken 12 1 20 9 $calc( 230 / %scoreken * %scoreman ) 9 
  drawrect -f @teken 4 1 $calc( 350 + ( 230 - 230 / %scoreken * %scorebot ) ) 9 $calc( 230 / %scoreken * %scorebot ) 9 
  drawline @teken 12 2 $calc( %tekx -10) 240 %tekx 180
  drawline @teken 12 2 $calc( %tekx +10) 240 %tekx 180
  drawline @teken 12 2 %tekx 140 %tekx 180
  drawdot @teken 12 10 $calc( %tekx +2) 135
  drawline @teken 4 2 $calc( %botx -10) 240 %botx 180
  drawline @teken 4 2 $calc( %botx +10) 240 %botx 180
  drawline @teken 4 2 %botx 140 %botx 180
  drawdot @teken 4 10 $calc( %botx +2) 135
  if ( %scorebot == %scoreken ) || ( %scoreman == %scoreken ) { winner } 
}
alias tekbot {
  if ( %bcou == poing ) && ( %cou != defence1 ) && ( $calc(%botx - %tekx ) <= 45 ) { inc %scorebot | if ( %tekx > 10 ) { set %tekx $calc( %tekx - 4 ) } }
  if ( %bcou == pied ) && ( %cou != defence2 ) && ( $calc(%botx - %tekx ) <= 55 ) { inc %scorebot | if ( %tekx > 10 ) { set %tekx $calc( %tekx - 4 ) } }
  unset %bcou
  drawrect -f @teken 1 1 0 0 600 250
  kentime
  drawtext @teken 12 20 20 %tekman
  drawtext @teken 4 $calc( 550 - $len( %tekbot ) ) 20 %tekbot
  drawtext @teken 9 270 5 %scoreman
  drawtext @teken 9 325 5 %scorebot
  drawrect @teken 12 1 20 9 230 9 | drawrect @teken 4 1 350 9 230 9
  drawrect -f @teken 12 1 20 9 $calc( 230 / %scoreken * %scoreman ) 9 
  drawrect -f @teken 4 1 $calc( 350 + ( 230 - 230 / %scoreken * %scorebot ) ) 9 $calc( 230 / %scoreken * %scorebot ) 9 
  drawline @teken 12 2 $calc( %tekx -10) 240 %tekx 180
  drawline @teken 12 2 $calc( %tekx +10) 240 %tekx 180
  drawline @teken 12 2 %tekx 140 %tekx 180
  drawdot @teken 12 10 $calc( %tekx +2) 135
  drawline @teken 4 2 $calc( %botx -10) 240 %botx 180
  drawline @teken 4 2 $calc( %botx +10) 240 %botx 180
  drawline @teken 4 2 %botx 140 %botx 180
  drawdot @teken 4 10 $calc( %botx +2) 135
  if ( %scorebot == %scoreken ) || ( %scoreman == %scoreken ) { winner }
}
alias kentime {
  if ( $calc( %tektimeout - ( $ctime - %tektime ) ) <= 0 ) { .timerout off | drawtext @teken 9 270 100 time out | timerwin 1 2 winner }
  drawrect -f @teken 1 2 285 19 30 15
  drawtext @teken 15 290 20 $calc( %tektimeout - ( $ctime - %tektime ) )
}

alias winner {
  drawrect -f @teken 1 2 265 99 70 15
  set %fight 0
  if ( %scorebot == 0 ) && ( %scorebot < %scoreman ) { drawtext @teken 9 270 100 perfect for %tekman }
  elseif ( %scoreman == 0 ) && ( %scorebot > %scoreman ) { drawtext @teken 9 270 100 perfect for %tekbot }
  elseif ( %scorebot > %scoreman ) { drawtext @teken 9 270 100 %tekbot win }
  elseif ( %scorebot < %scoreman ) { drawtext @teken 9 270 100 %tekman win }
  elseif ( %scorebot == %scoreman ) { drawtext @teken 9 270 100 equality }
  set %scorebot 0
  set %scoreman 0
  set %tekx 50
  set %botx 550
  .timer 1 3 fight
}

alias fight { set %fight 1 | set %tektime $ctime | tekman }

alias cou1 {
  drawline @teken 1 2 %tekx 145 $calc( %tekx + 15 ) 160 
  drawline @teken 1 2 $calc( %tekx + 15 ) 160 $calc( %tekx + 30 ) 145
  drawline @teken 12 2 %tekx 145 $calc( %tekx + 40 ) 145 
  drawdot @teken 4 5 $calc( %tekx + 40 ) 147
  tim2 25 tekman
}

alias cou2 {
  drawline @teken 1 2 $calc( %tekx +20) 170 %tekx 180 
  drawline @teken 1 2 $calc( %tekx +20) 170 $calc( %tekx +40) 180
  drawline @teken 12 2 $calc( %tekx +50) 180 %tekx 180
  drawdot @teken 4 5 $calc( %tekx +50) 183
  tim2 25 tekman
}

alias bcou1 {
  drawline @teken 1 2 %botx 145 $calc( %botx - 15 ) 160 
  drawline @teken 1 2 $calc( %botx - 15 ) 160 $calc( %botx - 30 ) 145
  drawline @teken 4 2 %botx 145 $calc( %botx - 40 ) 145 
  drawdot @teken 12 5 $calc( %botx - 40 ) 147
  btim2 25 tekbot 
}
alias bcou2 {
  drawline @teken 1 2 $calc( %botx -20) 170 %botx 180 
  drawline @teken 1 2 $calc( %botx -20) 170 $calc( %botx -40) 180
  drawline @teken 4 2 $calc( %botx -50) 180 %botx 180
  drawdot @teken 12 5 $calc( %botx -50) 183
  btim2 25 tekbot 
}

;##########
;# dialog #
;##########

alias tekencfg { dialog -m teken teken }

dialog teken {
  title "teken by abdoulax"
  size -1 -1 200 100
  option dbu
  button "~~---o?0O@° .:(ok):. °@O0?o---~~" 1,4 90 192 8,ok
  box "joueur gauche",2, 4 4 61 84
  edit "" ,3, 33 14 30 10,read
  button "gauche",4, 6 14 25 10
  edit "" ,5, 33 26 30 10,read
  button "droite",6, 6 26 25 10
  edit "" ,7, 33 38 30 10,read
  button "poing",8, 6 38 25 10
  edit "" ,9, 33 50 30 10,read
  button "pied",10, 6 50 25 10
  edit "" ,11, 33 62 30 10,read
  button "défence1",12, 6 62 25 10
  edit "" ,13, 33 74 30 10,read
  button "défence2",14, 6 74 25 10

  box "joueur droite",15, 74 4 61 84
  edit "" ,16, 103 14 30 10,read
  button "gauche",17, 76 14 25 10
  edit "" ,18, 103 26 30 10,read
  button "droite",19, 76 26 25 10
  edit "" ,20, 103 38 30 10,read
  button "poing",21, 76 38 25 10
  edit "" ,22, 103 50 30 10,read
  button "pied",23, 76 50 25 10
  edit "" ,24, 103 62 30 10,read
  button "défence1",25, 76 62 25 10
  edit "" ,26, 103 74 30 10,read
  button "défence2",27, 76 74 25 10

  text "joueur gauche :",28, 142 6 54 8  
  edit "" ,29, 142 14 55 10
  text "joueur droite :",30, 142 26 54 8  
  edit "" ,31, 142 34 55 10
  text "time out :",32, 142 46 45 8  
  edit "" ,33, 142 54 55 10
  text "score gagnant :",34, 142 66 54 8  
  edit "" ,35, 142 74 55 10
}
alias seltek { window -doapBkC +dL @select 1 1 200 40 | drawrect -f @select 12 1 0 0 200 50 | drawtext @select 4 20 10 appuyer sur le boutton }

on 1:KEYDOWN:@select:*:set %seltek $keyval | %selbut | window -c @select

on *:dialog:teken:init:0:{
  did -a teken 3 %jgauche
  did -a teken 5 %jdroite
  did -a teken 7 %jpoing
  did -a teken 9 %jpied
  did -a teken 11 %jdefence1
  did -a teken 13 %jdefence2
  did -a teken 16 %bgauche
  did -a teken 18 %bdroite
  did -a teken 20 %bpoing
  did -a teken 22 %bpied
  did -a teken 24 %bdefence1
  did -a teken 26 %bdefence2
  did -a teken 29 %tekman
  did -a teken 31 %tekbot
  did -a teken 33 %tektimeout
  did -a teken 35 %scoreken
}

on *:dialog:teken:sclick:4:set %selbut jgauche | seltek
on *:dialog:teken:sclick:6:set %selbut jdroite | seltek
on *:dialog:teken:sclick:8:set %selbut jpoing | seltek
on *:dialog:teken:sclick:10:set %selbut jpied | seltek
on *:dialog:teken:sclick:12:set %selbut jdefence1 | seltek
on *:dialog:teken:sclick:14:set %selbut jdefence2 | seltek

on *:dialog:teken:sclick:17:set %selbut bgauche | seltek
on *:dialog:teken:sclick:19:set %selbut bdroite | seltek
on *:dialog:teken:sclick:21:set %selbut bpoing | seltek
on *:dialog:teken:sclick:23:set %selbut bpied | seltek
on *:dialog:teken:sclick:25:set %selbut bdefence1 | seltek
on *:dialog:teken:sclick:27:set %selbut bdefence2 | seltek

on *:dialog:teken:edit:29:set %tekman $did(teken,29)
on *:dialog:teken:edit:31:set %tekbot $did(teken,31)
on *:dialog:teken:edit:33:set %tektimeout $did(teken,33)
on *:dialog:teken:edit:35:set %scoreken $did(teken,35)

alias jgauche {
  set %jgauche %seltek
  did -r teken 3
  did -a teken 3 %jgauche
}
alias jdroite {
  set %jdroite %seltek
  did -r teken 5
  did -a teken 5 %jdroite
}
alias jpoing {
  set %jpoing %seltek
  did -r teken 7
  did -a teken 7 %jpoing
}
alias jpied {
  set %jpied %seltek
  did -r teken 9
  did -a teken 9 %jpied
}
alias jdefence1 {
  set %jdefence1 %seltek
  did -r teken 11
  did -a teken 11 %jdefence1
}
alias jdefence2 {
  set %jdefence2 %seltek
  did -r teken 13
  did -a teken 13 %jdefence2
}

alias bgauche {
  set %bgauche %seltek
  did -r teken 16
  did -a teken 16 %bgauche
}
alias bdroite {
  set %bdroite %seltek
  did -r teken 18
  did -a teken 18 %bdroite
}
alias bpoing {
  set %bpoing %seltek
  did -r teken 20
  did -a teken 20 %bpoing
}
alias bpied {
  set %bpied %seltek
  did -r teken 22
  did -a teken 22 %bpied
}
alias bdefence1 {
  set %bdefence1 %seltek
  did -r teken 24
  did -a teken 24 %bdefence1
}
alias bdefence2 {
  set %bdefence2 %seltek
  did -r teken 26
  did -a teken 26 %bdefence2
}

;#######
;# tim #
;#######

alias btim {
  set %btim 1
  btimtim $1-
}
alias btimtim {
  inc %btim
  if ( %btim == $1 ) { $2- }
  if ( %btim < $1 ) { .timerbtim 1 .1 btimtim $1- }
}

alias btim2 {
  set %btim2 1
  btimtim2 $1-
}
alias btimtim2 {
  inc %btim2
  if ( %btim2 == $1 ) { $2- }
  if ( %btim2 < $1 ) { .timerbtim2 1 .1 btimtim2 $1- }
}

alias tim {
  set %tim 1
  timtim $1-
}
alias timtim {
  inc %tim
  if ( %tim == $1 ) { $2- }
  if ( %tim < $1 ) { .timertim 1 .1 timtim $1- }
}

alias tim2 {
  set %tim2 1
  timtim2 $1-
}
alias timtim2 {
  inc %tim2
  if ( %tim2 == $1 ) { $2- }
  if ( %tim2 < $1 ) { .timertim2 1 .1 timtim2 $1- }
}

Conclusion :


n'oublier pas de configurer les touche avant de commencer . ( clic droit , config )

have fun

by abdoulax

A voir également

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.