FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» PanExpress : l'éditeur Panoramic avec création d'objet
par Jean Claude Aujourd'hui à 8:27

» Projet de planétarium virtuel.
par Pedro Alvarez Hier à 20:53

» Quantité de mémoire utilisée par un exe
par Jack Hier à 16:39

» Problème avec 'file_load'.
par Pedro Alvarez Lun 18 Juin 2018 - 8:12

» Version instantanée V 0.9.28i20 du 13/06/2018
par jjn4 Sam 16 Juin 2018 - 14:25

» string$(0,chr$(32)) sans erreur
par silverman Ven 15 Juin 2018 - 19:56

» Version instantanée V 0.9.28i19 du 13/06/2018
par Minibug Ven 15 Juin 2018 - 19:14

» Mes souhaits d'amélioration de Panoramic.
par Pedro Alvarez Jeu 14 Juin 2018 - 20:17

» [RÉSOLU] Message d'erreur impossible à indentifier
par Minibug Mer 13 Juin 2018 - 20:52

» Cadre pour image
par Jean Claude Mar 12 Juin 2018 - 16:31

» Créateur d'objets Panoramic
par Minibug Mar 12 Juin 2018 - 14:02

» Planétarium gratuit.
par Jean Claude Sam 9 Juin 2018 - 18:50

» Comment afficher une image sans fond.
par JL35 Sam 9 Juin 2018 - 14:16

» image_width(n) et image_height(n)
par silverman Sam 9 Juin 2018 - 11:22

» Site sur la programmation sympa
par Jean Claude Jeu 7 Juin 2018 - 11:20

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2018
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 Jeu "Asticot"

Aller en bas 
AuteurMessage
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Jeu "Asticot"   Sam 28 Juil 2012 - 23:01

Ma petite contribution à la rubrique des jeux: le très ancien et célèbre jeu de l'asticot !

Ce petit ver se déplace tout seul, c'est tout juste qu'il réagit aux indications de direction par les touches des flèches ! Mais hélas, il n'a aucune intelligence: s'il se bute dans un mur, meurt ! Sa tâche principale: manger les 9 friandises placées dans le terrain de jeu. Mais attention: il essaie de croquer n'importe quoi, et s'il se croque lui-même, il meurt aussi !

Lorsque toutes les friandises (cases rouges) sont croquées, on passe au niveau suivant. Pour le moment, les niveaux successifs ajoutent des obstacles, et les friandises avalées font grandir l'asticot. Pour le moment, j'ai prévu 7 niveaux avec des obstacles différents. Au-delà du 7ème, il n'y a pour le moment pas d'autres obstacles - seul l'asticot grandit...

Pas de répertoire particulier, pas de DLL, juste du Panoramic pur...

Code:
' Asticot.bas

label labels : gosub labels
gosub constantes
gosub variables
gosub donnees
gosub form0
gosub menu
gosub GUI
gosub initialisations
end

labels:
  label constantes, variables, donnees
  label form0, menu, GUI, initialisations
  label sortir, playground, start, semer, placer, tick
  label next0, next1, couper, restart, key, obstacles
  label config, close_config, defaut, aide, close_aide
  label apropos, close_apropos, change_config, stopit
  return
 
constantes:
  dim version$ : version$ = "V01.00"
  dim date_cre$ : date_cre$ = "28 Juillet 2012"
  dim taille% : taille% = 25 : ' taille des cases
  dim speed% : speed% = 300  : ' milli-secondes entre chaque mouvement
  dim long_debut% : long_debut% = 10  : ' longueur initiale de l'asticot
  dim M1% : M1% = 0 - 1
  return
 
variables:
  dim no%, no1%, no2%, w%, h%, i%, j%, k%, n%, nvert%, nhor%, no_play%
  dim longueur%, elements%(100,2), fait%, no_timer%, nsem%, s$, dir1%
  dim x%, y%, x1%, y1%, xi%, no_apropos%, no_aide%, no_config%
  dim no_config_taille%, no_config_speed%, no_config_longueur%
  dim no_stop%, no_start%
  dim dir% : ' 1=droite  2=bas  3=gauche  4=haut
  return

donnees:
  return

form0:
  full_space 0
  caption 0,"Asticot"
  on_key_down 0,key
  return

menu:
  no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no%
    caption no%,"Fichier"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : no_start% = no%
    caption no%,"Nouveau jeu" : on_click no%,start
  no% = no% + 1 : sub_menu no% : parent no%,no2% : no_stop% = no%
    caption no%,"Stop" : inactive no% : on_click no%,stopit
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"------------"
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Sortir" : on_click no%,sortir
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no%
    caption no%,"Options"
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Configuration" : on_click no%,config
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Défauts" : on_click no%,defaut
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no%
    caption no%,"Aide"
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Mode d'emploi" : on_click no%,aide
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"A-propos" : on_click no%,apropos
  return

GUI:
  no% = no% + 1 : timer no% : no_timer% = no% : timer_interval no_timer%,speed%
    on_timer no%,tick : timer_off no%
  no% = no% + 1 : picture no% : full_space no% : no_play% = no%
    w% = width(no%) : h% = height(no%) : 2d_target_is no%
  nvert% = int(h%/taille%)
  nhor% =  int(w%/taille%)
  height no_play%,nvert%*taille% + 2
  width no_play%,nhor%*taille% + 2
  w% = width(no%) : h% = height(no%)

  no% = no% + 1 : form no% : hide no% : no_apropos% = no%
    top no%,200 : left no%,200 : caption no%,"A-propos"
    on_close no%,close_apropos
  no% = no% + 1 : alpha no% : parent no%,no_apropos%
    top no%,20 : left no%,20 : font_size no%,12
    s$ = "Jeu ASTICOT"+chr$(13)+chr$(10)+chr$(10)
    s$ = s$ + "Version: "+version$+chr$(13)+chr$(10)
    s$ = s$ + "Du: "+date_cre$+chr$(13)+chr$(10)+chr$(10)
    s$ = s$ + "Auteur: Klaus"+chr$(13)+chr$(10)+chr$(10)
    caption no%,s$

  no% = no% + 1 : form no% : hide no% : no_aide% = no%
    top no%,200 : left no%,200 : caption no%,"Mode d'emploi"
    width no%,450
    on_close no%,close_aide
  no% = no% + 1 : alpha no% : parent no%,no_aide%
    top no%,20 : left no%,20 : font_size no_aide%,12
    s$ = "Bienvenu dans le jeu ASTICOT !" + chr$(13)+chr$(10)+chr$(10)
    s$ = s$ + "L'asticot doit manger les points rouges." + chr$(13)+chr$(10)
    s$ = s$ + "Il se déplace tout seul." + chr$(13)+chr$(10)
    s$ = s$ + "On peut le diriger par les 4 flèches." + chr$(13)+chr$(10)
    s$ = s$ + "Mais attention: il ne doit toucher aucun mur (cases noires)" + chr$(13)+chr$(10)
    s$ = s$ + "et il ne doit pas se toucher lui-même !" + chr$(13)+chr$(10)
    s$ = s$ + "Lorsque tous les points rouges sont mangés," + chr$(13)+chr$(10)
    s$ = s$ + "on passe au niveau suivant."
    caption no%,s$

  no% = no% + 1 : form no% : hide no% : no_config% = no%
    top no%,200 : left no%,200 : caption no%,"Configuration"
    width no%,450
    on_close no%,close_config
    no% = no% + 1 : alpha no% : parent no%,no_config%
      top no%,20 : left no%,10 : caption no%,"Taille des cases:"
    no% = no% + 1 : edit no% : parent no%,no_config% : no_config_taille% = no%
      top no%,20 : left no%,100 : width no%,40
      text no%,str$(taille%)
    no% = no% + 1 : alpha no% : parent no%,no_config%
      top no%,20 : left no%,160 : caption no%,"(20...100)"
    no% = no% + 1 : alpha no% : parent no%,no_config%
      top no%,50 : left no%,10 : caption no%,"Vitesse (en ms):"
    no% = no% + 1 : edit no% : parent no%,no_config% : no_config_speed% = no%
      top no%,50 : left no%,100 : width no%,40
      text no%,str$(speed%)
    no% = no% + 1 : alpha no% : parent no%,no_config%
      top no%,50 : left no%,160 : caption no%,"(50...1000)"
    no% = no% + 1 : alpha no% : parent no%,no_config%
      top no%,80 : left no%,10 : caption no%,"Longueur initiale:"
    no% = no% + 1 : edit no% : parent no%,no_config% : no_config_longueur% = no%
      top no%,80 : left no%,100 : width no%,40
      text no%,str$(long_debut%)
    no% = no% + 1 : alpha no% : parent no%,no_config%
      top no%,80 : left no%,160 : caption no%,"(3...20)"
  return

initialisations:
  return

sortir:
  terminate

defaut:
  taille% = 25 : ' taille des cases
  speed% = 300 : ' milli-secondes entre chaque mouvement
  long_debut% = 10 : ' longueur initiale de l'asticot
  text no_config_taille%,str$(taille%)
  text no_config_speed%,str$(speed%)
  text no_config_longueur%,str$(long_debut%)
  gosub change_config
  return

playground:
  2d_target_is 0
  if variable("play%")=1 then free play%
  if object_exists(no_play%)=1 then delete no_play%
  picture no_play% : width no_play%,w% : height no_play%,h%
  2d_target_is no_play%
  dim play%(nvert%,nhor%)
  2d_poly_from 0,0
  2d_poly_to w%-1,0
  2d_poly_to w%-1,h%-1
  2d_poly_to 0,h%-1
  2d_poly_to 0,0
  for i%=1 to nvert%
    2d_line 0,i%*taille%,w%,i%*taille%
  next i%
  for i%=1 to nhor%
    2d_line i%*taille%,0,i%*taille%,h%
  next i%
  2d_fill_color 0,0,0
  for i%=1 to nvert%
    2d_rectangle 0,(i%-1)*taille%,taille%,i%*taille%
    2d_rectangle w%-taille%-1,(i%-1)*taille%,w%,i%*taille%
    play%(i%,1) = M1%
    play%(i%,nhor%) = M1%
  next i%
  for i%=1 to nhor%
    2d_rectangle (i%-1)*taille%,0,i%*taille%,taille%
    2d_rectangle (i%-1)*taille%,h%-taille%-1,i%*taille%,h%
    play%(1,i%) = M1%
    play%(nvert%,i%) = M1%
  next i%
  return
 
semer:
  2d_fill_color 255,0,0
  for n%=1 to 9
    j% = int(rnd(nvert%-1))
    i% = int(rnd(nhor%-1))
    if j%=0 then j%=1
    if i%=0 then i%=1
    while play%(j%,i%)<>0
      j% = int(rnd(nvert%-1))
      i% = int(rnd(nhor%-1))
      if j%=0 then j%=1
      if i%=0 then i%=1
    end_while
    play%(j%,i%) = 1
    2d_rectangle (i%-1)*taille%,(j%-1)*taille%,i%*taille%+1,j%*taille%+1
  next n%
  nsem% = 9
  return
 
placer:
  n% = 1
  j% = int(rnd(nvert%-1))
  i% = int(rnd(nhor%-1))
  if j%=0 then j%=1
  if i%=0 then i%=1
  while play%(j%,i%)<>0
    j% = int(rnd(nvert%-1))
    i% = int(rnd(nhor%-1))
    if j%=0 then j%=1
    if i%=0 then i%=1
  end_while
  2d_fill_color 0,0,255
  play%(j%,i%) = 2
  2d_rectangle (i%-1)*taille%,(j%-1)*taille%,i%*taille%+1,j%*taille%+1
  elements%(n%,1) = i%
  elements%(n%,2) = j%
  dir% = 1
  while n%<longueur%
    n% = n% + 1
    gosub next0
    if fait%=0
      message "impossible"
      exit_while
    end_if
  end_while
  return
 

next0:
      fait% = 0
      if i%<nhor%
        if play%(j%,i%+1)=0
          i% = i% + 1
          play%(j%,i%) = 2
          2d_rectangle (i%-1)*taille%,(j%-1)*taille%,i%*taille%+1,j%*taille%+1
          elements%(n%,1) = i%
          elements%(n%,2) = j%
          fait% = 1
          dir% = 1
        end_if
      end_if
      if fait%=0
        if j%<nvert%
          if play%(j%+1,i%)=0
            j% = j% + 1
            play%(j%,i%) = 2
            2d_rectangle (i%-1)*taille%,(j%-1)*taille%,i%*taille%+1,j%*taille%+1
            elements%(n%,1) = i%
            elements%(n%,2) = j%
            fait% = 1
            dir% = 2
          end_if
        end_if
      end_if
      if fait%=0
        if i%>1
          if play%(j%,i%-1)=0
            i% = i% - 1
            play%(j%,i%) = 2
            2d_rectangle (i%-1)*taille%,(j%-1)*taille%,i%*taille%+1,j%*taille%+1
            elements%(n%,1) = i%
            elements%(n%,2) = j%
            fait% = 1
            dir% = 3
          end_if
        end_if
      end_if
      if fait%=0
        if j%>1
          if play%(j%-1,i%)=0
            j% = j% - 1
            play%(j%,i%) = 2
            2d_rectangle (i%-1)*taille%,(j%-1)*taille%,i%*taille%+1,j%*taille%+1
            elements%(n%,1) = i%
            elements%(n%,2) = j%
            fait% = 1
            dir% = 4
          end_if
        end_if
      end_if
  return

next1:
  fait% = 0
  dir1% = dir%
  2d_fill_color 0,0,255
  2d_rectangle (i%-1)*taille%,(j%-1)*taille%,i%*taille%+1,j%*taille%+1
'  2d_fill_color 0,0,255
  2d_fill_color 127,127,255
  select dir1%
    case 1:  ' à droite
      if i%<nhor%
        if play%(j%,i%+1)=1
          nsem% = nsem% - 1
          play%(j%,i%+1) = 0
        end_if
        if (play%(j%,i%+1)=M1%) or (play%(j%,i%+1)=2)
          fait% = M1%
          return
        end_if
        if play%(j%,i%+1)=0
          i% = i% + 1
          play%(j%,i%) = 2
          2d_rectangle (i%-1)*taille%,(j%-1)*taille%,i%*taille%+1,j%*taille%+1
          elements%(n%,1) = i%
          elements%(n%,2) = j%
          fait% = 1
        end_if
      end_if
    case 2:  ' en bas
      if j%<nvert%
        if (play%(j%+1,i%)=M1%) or (play%(j%+1,i%)=2)
          fait% = M1%
          return
        end_if
        if play%(j%+1,i%)=1
          nsem% = nsem% - 1
          play%(j%+1,i%) = 0
        end_if
        if play%(j%+1,i%)=0
          j% = j% + 1
          play%(j%,i%) = 2
          2d_rectangle (i%-1)*taille%,(j%-1)*taille%,i%*taille%+1,j%*taille%+1
          elements%(n%,1) = i%
          elements%(n%,2) = j%
          fait% = 1
        end_if
      end_if
    case 3:  ' à gauche
      if i%>1
        if (play%(j%,i%-1)=M1%) or (play%(j%,i%-1)=2)
          fait% = M1%
          return
        end_if
        if play%(j%,i%-1)=1
          nsem% = nsem% - 1
          play%(j%,i%-1) = 0
        end_if
        if play%(j%,i%-1)=0
          i% = i% - 1
          play%(j%,i%) = 2
          2d_rectangle (i%-1)*taille%,(j%-1)*taille%,i%*taille%+1,j%*taille%+1
          elements%(n%,1) = i%
          elements%(n%,2) = j%
          fait% = 1
        end_if
      end_if
    case 4:  ' en haut
      if j%>1
        if (play%(j%-1,i%)=M1%) or (play%(j%-1,i%)=2)
          fait% = M1%
          return
        end_if
        if play%(j%-1,i%)=1
          nsem% = nsem% - 1
          play%(j%-1,i%) = 0
        end_if
        if play%(j%-1,i%)=0
          j% = j% - 1
          play%(j%,i%) = 2
          2d_rectangle (i%-1)*taille%,(j%-1)*taille%,i%*taille%+1,j%*taille%+1
          elements%(n%,1) = i%
          elements%(n%,2) = j%
          fait% = 1
        end_if
      end_if
  end_select
  display
  return

stopit:
  timer_off no_timer%
  inactive no_stop%
  active no_start%
  return

start:
  longueur% = long_debut%
  active no_stop%
  inactive no_start%
restart:
  timer_off no_timer%
  gosub playground
  gosub obstacles
  gosub semer
  gosub placer
  timer_on no_timer%
  return
 
tick:
  timer_off no_timer%
  n% = longueur% + 1
  gosub next1
  if fait%=M1%
    s$ = "Dommage ! Vous avez perdu au niveau "+str$(longueur%-long_debut%+1) + chr$(13)+chr$(10)
    s$ = s$ + "Choisissez Nouveau jeu dans le menu pour recommencer une partie..."
    longueur% = long_debut%
    inactive no_stop%
    active no_start%
    message s$
    return
  end_if
  if nsem%=0
    s$ = "Bravo ! Vous avez gagné le niveau "+str$(longueur%-long_debut%+1)+" !" + chr$(13)+chr$(10)
    s$ = s$ + "Vous passez au niveau suivant..."
    longueur% = n%
    inactive no_stop%
    message s$
    goto restart
  end_if
  gosub couper
  timer_on no_timer%
  return
 
couper:
  i% = elements%(1,1)
  j% = elements%(1,2)
  play%(j%,i%) = 0
  2d_fill_color 255,255,255
  2d_rectangle (i%-1)*taille%,(j%-1)*taille%,i%*taille%+1,j%*taille%+1
  for i%=1 to longueur%
    elements%(i%,1) = elements%(i%+1,1)
    elements%(i%,2) = elements%(i%+1,2)
  next i%
  i% = elements%(longueur%,1)
  j% = elements%(longueur%,2)
  display
  return
 
key:
  k% = key_down_code
  caption 0,str$(k%)
  select k%
    case 37: if dir%<>1 then dir% = 3
    case 38: if dir%<>2 then dir% = 4
    case 39: if dir%<>3 then dir% = 1
    case 40: if dir%<>4 then dir% = 2
  end_select
  return
 
obstacles:
  select longueur%-long_debut%+1
  case 2: ' 1 barre horizontale
    y% = int(nvert%/2)
    x% = int(nhor%/10)
    for i%=x% to nhor%-x%
      2d_rectangle (i%-1)*taille%,(y%-1)*taille%,i%*taille%,y%*taille%
      play%(y%,i%) = M1%
    next i%
  case 3: ' 2 barres verticales
    y% = int(nvert%/5)
    x% = int(nhor%/3)
    for i%=y% to nvert%-y%
      2d_rectangle (x%-1)*taille%,(i%-1)*taille%,x%*taille%,i%*taille%
      2d_rectangle (nhor%-x%-1)*taille%,(i%-1)*taille%,(nhor%-x%)*taille%,i%*taille%
      play%(i%,x%) = M1%
      play%(i%,nhor%-x%) = M1%
    next i%
  case 4: ' 2 barres horizontales
    y% = int(nvert%/3)
    x% = int(nhor%/10)
    for i%=x% to nhor%-x%
      2d_rectangle (i%-1)*taille%,(y%-1)*taille%,i%*taille%,y%*taille%
      2d_rectangle (i%-1)*taille%,(nvert%-y%-1)*taille%,i%*taille%,(nvert%-y%)*taille%
      play%(y%,i%) = M1%
      play%(nvert%-y%,i%) = M1%
    next i%
  case 5: ' 1 croix
    y% = int(nvert%/2)
    x% = int(nhor%/10)
    for i%=x% to nhor%-x%
      2d_rectangle (i%-1)*taille%,(y%-1)*taille%,i%*taille%,y%*taille%
      play%(y%,i%) = M1%
    next i%
    y% = int(nvert%/5)
    x% = int(nhor%/2)
    for i%=y% to nvert%-y%
      2d_rectangle (x%-1)*taille%,(i%-1)*taille%,x%*taille%,i%*taille%
      play%(i%,x%) = M1%
    next i%
  case 6: ' 1 chambre
    y% = int(nvert%/3)
    x% = int(nhor%/3)
    x1% = int(nhor%/2)
    for i%=y% to nvert%-y%
      2d_rectangle (x%-1)*taille%,(i%-1)*taille%,x%*taille%,i%*taille%
      2d_rectangle (nhor%-x%-1)*taille%,(i%-1)*taille%,(nhor%-x%)*taille%,i%*taille%
      play%(i%,x%) = M1%
      play%(i%,nhor%-x%) = M1%
    next i%
    for i%=x% to nhor%-x%
      if (i%<(x1%-2)) or (i%>(x1%+2))
        2d_rectangle (i%-1)*taille%,(y%-1)*taille%,i%*taille%,y%*taille%
        play%(y%,i%) = M1%
      end_if
      2d_rectangle (i%-1)*taille%,(nvert%-y%-1)*taille%,i%*taille%,(nvert%-y%)*taille%
      play%(nvert%-y%,i%) = M1%
    next i%
  case 7: ' 8 gros piliers
    y% = int(nvert%/5)
    x% = int((nhor%-2)/9)
    x1% = x%
    y1% = y%
    x% = x% + 2
    y% = y% + 2
    for xi%=1 to 4
      for i%=y% to y%+y1%
        for j%=x% to x%+x1%
          2d_rectangle (j%-1)*taille%,(i%-1)*taille%,j%*taille%,i%*taille%
          play%(i%,j%) = M1%
        next j%
      next i%
      x% = x% + x1%*2 + 1
    next xi%
    x% = x1% + 2
    y% = y1%*3 + 2
    for xi%=1 to 4
      for i%=y% to y%+y1%
        for j%=x% to x%+x1%
          2d_rectangle (j%-1)*taille%,(i%-1)*taille%,j%*taille%,i%*taille%
          play%(i%,j%) = M1%
        next j%
      next i%
      x% = x% + x1%*2 + 1
    next xi%
  end_select
  if (longueur%-long_debut%+1)>7  : ' provisoire: identique au niveau 7
    y% = int(nvert%/5)
    x% = int((nhor%-2)/9)
    x1% = x%
    y1% = y%
    x% = x% + 2
    y% = y% + 2
    for xi%=1 to 4
      for i%=y% to y%+y1%
        for j%=x% to x%+x1%
          2d_rectangle (j%-1)*taille%,(i%-1)*taille%,j%*taille%,i%*taille%
          play%(i%,j%) = M1%
        next j%
      next i%
      x% = x% + x1%*2 + 1
    next xi%
    x% = x1% + 2
    y% = y1%*3 + 2
    for xi%=1 to 4
      for i%=y% to y%+y1%
        for j%=x% to x%+x1%
          2d_rectangle (j%-1)*taille%,(i%-1)*taille%,j%*taille%,i%*taille%
          play%(i%,j%) = M1%
        next j%
      next i%
      x% = x% + x1%*2 + 1
    next xi%
  end_if
  return
 
config:
  inactive 0
  show no_config%
  return
 
close_config:
  s$ = text$(no_config_taille%)
  if numeric(s$)=0
    message "La taille des cases est invalide !"
    text no_config_taille%,str$(taille%)
    active 0
    return
  end_if
  x1% = val(s$)
  if (x1%<20) or (x1%>100)
    message "La taille des cases est invalide !"
    text no_config_taille%,str$(taille%)
    active 0
    return
  end_if
  s$ = text$(no_config_speed%)
  if numeric(s$)=0
    message "La vitesse est invalide !"
    text no_config_taille%,str$(speed%)
    active 0
    return
  end_if
  y1% = val(s$)
  if (y1%<50) or (y1%>1000)
    message "La vitesse est invalide !"
    text no_config_taille%,str$(speed%)
    active 0
    return
  end_if
  s$ = text$(no_config_longueur%)
  if numeric(s$)=0
    message "La longueur initiale est invalide !"
    text no_config_taille%,str$(long_debut%)
    active 0
    return
  end_if
  xi% = val(s$)
  if (xi%<3) or (xi%>20)
    message "La longueur initiale est invalide !"
    text no_config_taille%,str$(long_debut%)
    active 0
    return
  end_if
  taille% = x1%
  speed% = y1%
  long_debut% = xi%
  gosub change_config
 
  active 0
  return

change_config:
  nvert% = int(h%/taille%)
  nhor% =  int(w%/taille%)
  height no_play%,nvert%*taille% + 2
  width no_play%,nhor%*taille% + 2
  timer_interval no_timer%, speed%
  return
 
aide:
  inactive 0
  show no_aide%
  return

close_aide:
  active 0
  return

apropos:
  inactive 0
  show no_apropos%
  return

close_apropos:
  active 0
  return



Dernière édition par Klaus le Dim 29 Juil 2012 - 0:53, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 6273
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Jeu "Asticot"   Sam 28 Juil 2012 - 23:40

Voilà Klaus qui s'y met lui aussi !

Cela dit, joli petit jeu, pas trop facile à maîtriser à proximité des murs, on se mélange vite les pinceaux avec les flèches, et pan !
Seul petit truc, les saccades au rafraîchissement d'écran, mais ça je ne vois pas comment on peut l'éviter.

J'ai au moins réussi le niveau 1, après ça se corse très vite.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Jeu "Asticot"   Sam 28 Juil 2012 - 23:55

Oui, le problème vient de la façon dont Panoramic gère les mises à jour du canvas du picture à chaque action graphique. Ce problème a déjà été signalé il y a longtemps, et c'est toujours ainsi. 0 chaque itération, je redessine juste 3 cases: l'ancienne tête de l'asticot qui prend la couleur du corps, la nouvelle tête de l'asticot, et l'effacement de la dernière case de l'asticot, obtenant ainsi l'impression d'avancement de la bébête. Chacune de ces actions est faite par une commande 2d_rectangle. Mais, à chaque fois, Panoramic réaffiche l'ensemble du canvas, d'où le scintillement.

As-tu vu que par le menu "Options", tu peux entre autres changer la vitesse, la longueur initiale, ... ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

Nombre de messages : 5951
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Jeu "Asticot"   Sam 28 Juil 2012 - 23:56

JL35 a écrit exactement ce que j’allais écrire !
Alors à +
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
papydall

avatar

Nombre de messages : 5951
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Jeu "Asticot"   Dim 29 Juil 2012 - 0:16

Lorsqu’on perd, on a le message "Dommage ! Vous avez perdu au niveau ….. Choisissez Démarrer pour recommencer une partie... "
Je ne voie pas où est ‘Démarrer’. Pas moyen de recommencer une partie que de fermer le programme et le relancer.
Ou peut-être que (comme disait ygeronimi) je n’ai plus les yeux devant les orbites !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

Nombre de messages : 8077
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: Re: Jeu "Asticot"   Dim 29 Juil 2012 - 0:18

Sad Sad Sad Sad Sad Sad Sad

Peux pas jouer moi.....bouhouhou!!..
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Jeu "Asticot"   Dim 29 Juil 2012 - 0:35

??????????

Voici le début du programme:
Code:
' Asticot.bas

label labels : gosub labels
gosub constantes

Et le t'assure: le label "labels" n'existe qu'une seule fois dans le programme !


Dernière édition par Klaus le Dim 29 Juil 2012 - 0:39, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Jeu "Asticot"   Dim 29 Juil 2012 - 0:39

@Papydall:
"Démarrer" est un reste d'une ancienne version qui m'a échappé. Il faut lire "Nouveau jeu". J'ai modifié le source dans mon premier poste dans ce sens. Cela se trouve dans le menu "Fichier"...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 8077
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 29 Juil 2012 - 0:48

Mille excuses Embarassed

J'ai une souris bizarre qui me fait des doubles commandes, du coup elle m'a collé deux fois le code... bounce


A part çà ,...


...vivement le niveau 8 !!!
Laughing Laughing Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5951
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Jeu "Asticot"   Dim 29 Juil 2012 - 0:50

Quand on perd, 'Nouveau jeu' reste inactif de sorte que l'on est obligé de fermer et de relancer
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Jeu "Asticot"   Dim 29 Juil 2012 - 0:53

@Papydall:
Trouvé. C'est corrigé dans le source.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

Nombre de messages : 5951
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Jeu "Asticot"   Dim 29 Juil 2012 - 0:54

@ygeronimi
j'ai eu exactement le même problème avec ma souris!
A croire que les souris usent de télépathie !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

Nombre de messages : 8077
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 29 Juil 2012 - 1:26

C'est des souris cyclistes,
elles sont élevées à l'EPO... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
lodchjo

avatar

Nombre de messages : 162
Age : 47
Localisation : Anvers
Date d'inscription : 26/12/2011

MessageSujet: Re: Jeu "Asticot"   Dim 29 Juil 2012 - 20:02

Marche très bien, et c'est fun de jouer, bravo!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://lode.weebly.com
Jicehel

avatar

Nombre de messages : 5923
Age : 45
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Jeu "Asticot"   Dim 29 Juil 2012 - 23:38

Merci pour ta participation au domaine du jeu également. Très amusant.
Par contre j'ai encore le phénomène de scintillement. Il me semble que l'on avait trouvé un truc dans mon pac-man pour que ça ne "scintille" plus...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Jeu "Asticot"   

Revenir en haut Aller en bas
 
Jeu "Asticot"
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Jeu "Asticot"
» Worms: Armageddon au Pays des Asticots!!!

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Les jeux faits avec Panoramic-
Sauter vers: