FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Vorace - une autre adaptation depuis l'Hector - Page 2 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-47%
Le deal à ne pas rater :
SAMSUNG T7 Shield Bleu – SSD Externe 1 To à 89,99€
89.99 € 169.99 €
Voir le deal

 

 Vorace - une autre adaptation depuis l'Hector

Aller en bas 
+4
JL35
bignono
lodchjo
Jicehel
8 participants
Aller à la page : Précédent  1, 2
AuteurMessage
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptySam 17 Mar 2012 - 8:38

En tout cas merci d'avoir cherché, Klaus. Je me doutais depuis ton dernier post qu'on aurait du mal à faire mieux. Il faut que je tente maintenant une autre approche, un scene2D et le laby en sprite ou en image et les monstres/joueur en sprites pour voir si ça scintille aussi.
On s'est croisé Bignono, bonne idée, j'essaye Wink
Revenir en haut Aller en bas
Klaus

Klaus


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

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptySam 17 Mar 2012 - 10:40

J'ai appliqué l'idée de Bignono, et il n'y a plus de scintillement !
Code:
' Vorace version converti en Panoramic par Jean-Charles
' Version original en Basic pour l'Hector ecrit par Eddy DUTERTRE

Label Charge_Niveau, Boucle, Relance, Fin, Touche, Collision, Change_dir
Label Test_dirM, relance2

Dim L,N,A,I,A$  : '  Compteur et variables diverses temporaires
Dim M          : '  Competeur de pastilles
Dim Nb_Cases_ligne, Nb_Lignes : Nb_Cases_ligne = 32 : Nb_Lignes = 20
Dim X,Y        : '  Coordonnées du joueur
Dim X1,Y1,D1    : '  Ancienne position du joueur pour effacer
Dim N_Monstres  : N_Monstres = 3 : ' Le nombre de monstres actifs (max 3)
Dim Xm(3),Ym(3),Vm : '  Coordonnées du monstre et vitesse de deplacement (+Vm est ganrd moins il va vite)
Dim S          : '  Direction du monstre
Dim Depl        : '  Deplace monstre si Depl = 1
Dim Etat(Nb_Lignes,Nb_Cases_ligne), traite
Dim Pastilles(Nb_Lignes,Nb_Cases_ligne)
Dim Temps, Score, touche_enfoncee, Pause, Blanc%
Dim LF$, Message$ : LF$=CHR$(10)
Dim taille_case : taille_case=22  : ' à régler entre 10 et 22
Dim n_joueur : ' numéro de picture de l'image actuelle du joueur

Height 0, (Nb_Lignes+13)*taille_case : Width 0, (Nb_Cases_ligne + 4)*taille_case : color 0,255,255,255
Picture 1 : Picture 2 : Hide 2: TOP 2, -2000: Height 2,160 : Width 2,80 : File_load 2,"Sprites_Vorace.bmp"

' créer les picture pour les pastilles
  Picture 1000 : hide 1000 : Height 1000,20 : Width 1000, 20
  Image 3
  2D_Target_Is 1000
  2D_Pen_Color 0,200,200 : 2D_Fill_Color 0,200,200
  2D_Circle 0.5*taille_case,0.5*taille_case,3
  2D_image_copy 3,0,0,20,20
  For N=1 to Nb_Lignes
    For I=1 to Nb_Cases_ligne
      Pastilles(N,I) = 1000+N*Nb_Cases_ligne+I
      A = Pastilles(N,I)
      Picture A : hide A : Height A,20 : Width A, 20
        Top A,N*taille_case : left A,I*taille_case
      2D_Target_Is A : 2D_Image_Paste 3,0,0
    Next I
  Next N
  2D_Target_Is 1
For I = 1 to N_Monstres+1
  Picture 20 + I : Height 20 + I, 20 : Width 20+ I, 20
  Image 3+I: Top 3+I, -2000 : Hide 3+I
Next I
' créer les picture pour le joueur
  ' regarde à gauche
  Picture 51 : Hide 51 : Height 51, 20 : Width 51, 20
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,0,0,20,20
  2D_Target_Is 51 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à droite
  Picture 52 : Hide 52 : Height 52, 20 : Width 52, 20
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,20,0,40,20
  2D_Target_Is 52 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à haut
  Picture 53 : Hide 53 : Height 53, 20 : Width 53, 20
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,60,0,80,20
  2D_Target_Is 53 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à bas
  Picture 54 : Hide 54 : Height 54, 20 : Width 54, 20
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,40,0,60,20
  2D_Target_Is 54 : 2D_IMAGE_PASTE 3,0,0
  n_joueur = 51 : ' au début: à gauche

Blanc% = 4+N_Monstres

 DATA 11111111111111111111111111111111  : ' L1            :
 DATA 10100000010000011000000100000001  : ' L2
 DATA 10101111010111110010101110111111  : ' L3
 DATA 10001000000100010010100010100001
 DATA 11110000000111000110001010100101
 DATA 10000111010101111100001010110101
 DATA 10111100010000110001111010100101
 DATA 10000101111110000111100010101101
 DATA 11110100010011111101001010101001
 DATA 10000111010110010001011010101011
 DATA 10111100010000000001001000000011
 DATA 10000101111111110111111111011111
 DATA 11110100011000110000000001010001
 DATA 10000111000010000111111111010001
 DATA 10111111111111111111011111010001
 DATA 10000000000000000000000000010001
 DATA 10100000010000011000000100000001
 DATA 10101111010111110010101110111111
 DATA 10001000000100000010100010000001
 DATA 11111111111111111111111111111111  : ' L20

Timer 10: Timer_interval 10,80 : Timer_off 10 : On_Timer 10, Boucle
Gosub Charge_Niveau
Score = 0

Relance2:

X1=0: Y1=0 : X = 2: Y=2: D1=0 : VM=3  : ' Position intiale du joueur
Xm(1) = 12 : Ym(1)= 6  :                ' Positions initiales des Voraces
Xm(2) = 22 : Ym(2)= 4  :  Xm(3) = 7  : Ym(3) = 13
Depl = 0 : S=1 : N=0 : traite = 0
n_joueur = 51
2D_Target_is 1
2D_IMAGE_COPY Blanc%,0,0,19,19

If VM < N_Monstres Then VM = N_Monstres

on_key_down 0,touche
timer_on 10
End

Relance:
 hide n_joueur
 M = 0
 Hide 1 : 2D_Target_is 1 : font_color 1,100,255,100
 Height 1, (Nb_Lignes+9)*taille_case : Width 1, (Nb_Cases_ligne+2)*taille_case
 For L = 1 TO Nb_Lignes
  For N = 1 TO Nb_Cases_ligne
    If Etat(L,N)<>2
        If N=2 and L=2
          ' On ne mets pas de pastille à la position de départ
        Else
          2D_Pen_Color 0,200,200 : 2D_Fill_Color 0,200,200
          2D_Circle (N+0.5)*taille_case,(L+0.5)*taille_case,3
          Etat(L,N)=1 : M = M+1
        End_If
    End_If
  Next N
 Next L
Show 1
2D_Pen_Color 255,255,255 : 2D_Fill_Color 255,255,255
goto relance2
return


Change_dir:
  FOR DEPL = 1000 TO 1 STEP -1
    S= INT(RND(4))+1
    Gosub Test_dirM
  NEXT DEPL
return

Test_dirM:

    2D_Target_is 2
    IF S=1 and XM(A) < Nb_Cases_ligne-2
      IF Etat(YM(A),XM(A)+1)<2 Then XM(A)=XM(A)+1: 2D_IMAGE_COPY 3+A,21,19*A+1,40,19*(A+1)+1:DEPL=1
    END_IF
    IF S=2 and YM(A) < Nb_lignes-2
      IF Etat(YM(A)+1,XM(A))<2 Then YM(A)=YM(A)+1: 2D_IMAGE_COPY 3+A,41,19*A+1,60,19*(A+1)+1:DEPL=1
    END_IF
    IF S=3 and XM(A) > 2
      IF Etat(YM(A),XM(A)-1)<2 Then XM(A)=XM(A)-1: 2D_IMAGE_COPY 3+A, 1,19*A+1,20,19*(A+1)+1:DEPL=1
    END_IF
    IF S=4 and YM(A) > 2
      IF Etat(YM(A)-1,XM(A))<2 Then YM(A)=YM(A)-1: 2D_IMAGE_COPY 3+A,61,19*A+1,80,19*(A+1)+1:DEPL=1
    END_IF
    2D_Target_is 20+A
    2D_Image_Paste 3+A,0,0
    2D_Target_is 1
    Top n_joueur,Y*taille_case : Left n_joueur,X*taille_case : ' Affiche le joueur
    show n_joueur
Return

Boucle:
  If pause = 1 then return
  timer_off 10
  If D1= 1
      D1=0
' méthode d'origine: coller un carré blanc
'      2D_image_paste Blanc%,X1*taille_case,Y1*taille_case
' première méthode alternative: dessiner un rectangle blanc
'      2D_rectangle X1*taille_case,Y1*taille_case,(X1+1)*taille_case,(Y1+1)*taille_case
' seconde méthode alternative: dessiner un cercle blanc
'      2D_Circle (X1+0.5)*taille_case,(Y1+0.5)*taille_case,3
' ma s CHACUNE de ces 3 méthodes provoquent le scintillement ! Dommage...
' troisième méthode: cacher le picture de la pastille
      hide pastilles(Y1,X1)
      Top n_joueur,Y*taille_case : Left n_joueur,X*taille_case : ' Affiche le joueur
      show n_joueur
  End_If

  N = N+1 :  A = N
  IF A <= N_Monstres
    L = RND(10)
    If L > 6
      gosub Change_dir
    Else
      gosub Test_dirM
      if depl=0 Then gosub Change_dir
    End_If
    Top 20+A,Ym(A)*taille_case : Left 20+A,Xm(A)*taille_case : Depl=0 : ' Affiche le monstre
  End_If

  IF N= VM THEN N=0

  For I=1 To N_Monstres :  If X=XM(I) and Y=YM(I) then gosub Collision : Next I
  If M = 0 Then Message "Niveau vidé, appuyez pour en faire un autre...": goto relance
  traite = 0
  timer_on 10
Return

Touche:
if traite = 0
traite = 1
touche_enfoncee = key_down_code
If touche_enfoncee = 37
' Gauche
  If X > 2
'    If Etat(Y,X-1)<2 Then X1=X : Y1=Y : D1=1 : X=X-1 : 2D_IMAGE_COPY 3,0,0,20,20
    If Etat(Y,X-1)<2 Then X1=X : Y1=Y : D1=1 : X=X-1 : hide n_joueur : n_joueur = 51
  End_If
End_If

If touche_enfoncee = 39
' Droite
  If X < (Nb_Cases_ligne-1)
'    If Etat(Y,X+1)<2 Then X1=X : Y1=Y : D1=1 : X=X+1: 2D_IMAGE_COPY 3,20,0,40,20
    If Etat(Y,X+1)<2 Then X1=X : Y1=Y : D1=1 : X=X+1: hide n_joueur : n_joueur = 52
  End_If
End_If

If touche_enfoncee = 38
' Haut
  If Y > 2
'    If Etat(Y-1,X)<2 Then X1=X : Y1=Y : D1=1 : Y=Y-1: 2D_IMAGE_COPY 3,60,0,80,20
    If Etat(Y-1,X)<2 Then X1=X : Y1=Y : D1=1 : Y=Y-1: hide n_joueur : n_joueur = 53
  End_If
End_If

If touche_enfoncee = 40
' Bas
  If Y < (Nb_lignes-1)
'    If Etat(Y+1,X)<2 Then X1=X : Y1=Y : D1=1 : Y=Y+1: 2D_IMAGE_COPY 3,40,0,60,20
    If Etat(Y+1,X)<2 Then X1=X : Y1=Y : D1=1 : Y=Y+1: hide n_joueur : n_joueur = 54
  End_If
End_If

If touche_enfoncee = 88 or touche_enfoncee = 27 Then goto FIN

If touche_enfoncee =  80
 If Pause = 0 then Pause = 1 :else: Pause = 0
End_if

For I = 1 TO N_Monstres
  If X=XM(I) and Y=YM(I) then gosub Collision
Next I

If Etat(Y,X) = 1 Then Score=Score +10 : Etat(Y,X) = 0 : M=M-1 : Caption 13, "Score : " + RIGHT$("00000"+STR$(Score),5)
end_if
Return

Collision:
  Goto fin
Return

Charge_Niveau:
 M = 0
 Hide 1 : 2D_Target_is 1 : font_color 1,100,255,100
 Height 1, (Nb_Lignes+8)*taille_case : Width 1, (Nb_Cases_ligne+2)*taille_case
 For L = 1 TO Nb_Lignes
  Read A$
  For N = 1 TO Nb_Cases_ligne
    If Mid$(A$,N,1)="1"
        2D_Pen_Color 200,200,0 : 2D_Fill_Color 200,200,0
        2D_Rectangle N*taille_case+1,L*taille_case+1,(N+1)*taille_case-1, (L+1)*taille_case-1
        Etat(L,N)=2
    Else
        If N=2 and L=2
          ' On ne mets pas de pastille à la position de départ
        Else
'          2D_Pen_Color 0,200,200 : 2D_Fill_Color 0,200,200
'          2D_Circle (N+0.5)*taille_case,(L+0.5)*taille_case,3
          Etat(L,N)=1 : M = M+1
          Show Pastilles(L,N)
        End_If
    End_If
  Next N
 Next L
 2D_Fill_color 255,255,255 : 2D_Pen_Color 255,0,0
 2D_Rectangle taille_case, (Nb_Lignes+2)*taille_case, (Nb_Cases_ligne+2)*taille_case- taille_case, (Nb_Lignes+8)*taille_case
 Alpha 11 : Left 11,21*taille_case : Top 11, (Nb_Lignes+3)*taille_case : font_name 11, "Courier"
 Caption 11, "Temps : 00000"
 Alpha 12 : Left 12, 6*(taille_case - 7) : Top 12, (Nb_Lignes+5.5)*taille_case : font_bold 12
 font_name 12, "Courier" : Height 12, taille_case+3: Font_size 12,taille_case : Font_color 12,200,200,0
 Caption 12, "- VORACE -  (Version Panoramique)"
 Alpha 13 : Left 13,3*taille_case  : Top 13, (Nb_Lignes+3)*taille_case : font_name 13, "Courier"
 Caption 13, "Score : 00000"
Show 1
2D_Pen_Color 255,255,255 : 2D_Fill_Color 255,255,255
Return

Fin:
 timer_off 10
 Message$ =  "*********************" +LF$+ "*  Partie terminée  *" +LF$+ "*********************"
 Message$ = Message$ +LF$ + LF$ + "Score: "+ STR$ (Score)
 Message$ = Message$ +LF$ + LF$ + "Rejouer ?"
 if Message_confirmation_yes_no (Message$) = 1 then Score = 0 : goto Relance
terminate

Petite info: pour un objet IMAGE, tu n'as pas besoin de faire HIDE, TOP, LEFT, HEIGHT ni WIDTH: c'est un objet invisible avec une taille nativement variable en fonction de ce qu'on colle dedans. Donc, la commande IMAGE seule suffit pour créer cet objet.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptySam 17 Mar 2012 - 12:44

L'alliance de Bignono et de Klaus, ça le fait !! ^^
Merci à vous tous, c'est en effet fluide et sans clignotement et ça me donne une trame pour les jeux 2D. Pour ce type de jeux, je pense en effet que les picture sont plus pratique que les sprites comme les sprites ne peuvent être appliqués qu'à la scene2D sur laquelle beaucoup de traitement ne peuvent pas s'appliquer.

Pour ne pas non plus vous laissez tout faire, j'ai encore simplifié puisque le X1,Y1 qui servait dans les versions antérieures devenait totalement inutile (et laissait une pastille bleue pendant quelques millisecondes après le départ du glouton).

J'aime bien cette version, elle est jolie et sans scintillement. Ca montre que l'on peut faire des jeux avec Panoramic !!

Prochaine étape que je me fixe: le niveau 1 du Pac-man classic et un editeur de niveaux tiré de l'éditeur de JL35 (Les "cases" sur le côté, on clique, on place sur la grille, quand c'est finit, presse papier => programme avec une etiquette dans les data qui correspond au niveau). En fait c'est un travail collaboratif ... ^^

Bon, le source du coup (sans le X1,Y1), ça donne ça:
Code:
' Vorace version converti en Panoramic par Jean-Charles
' Version original en Basic pour l'Hector ecrit par Eddy DUTERTRE

Label Charge_Niveau, Boucle, Relance, Fin, Touche, Collision, Change_dir
Label Test_dirM, relance2

Dim L,N,A,I,A$      : '  Compteur et variables diverses temporaires
Dim M              : '  Competeur de pastilles
Dim Nb_Cases_ligne, Nb_Lignes : Nb_Cases_ligne = 32 : Nb_Lignes = 20
Dim X,Y            : '  Coordonnées du joueur
Dim N_Monstres  : N_Monstres = 3 : ' Le nombre de monstres actifs (max 3)
Dim Xm(3),Ym(3),Vm  : '  Coordonnées du monstre et vitesse de deplacement (+Vm est ganrd moins il va vite)
Dim S              : '  Direction du monstre
Dim Depl            : '  Deplace monstre si Depl = 1
Dim Etat(Nb_Lignes,Nb_Cases_ligne), traite
Dim Pastilles(Nb_Lignes,Nb_Cases_ligne)
Dim Temps, Score, touche_enfoncee, Pause
Dim LF$, Message$ : LF$=CHR$(10)
Dim taille_case : taille_case=22  : ' Taille fixe désormais par ce que c'est plus simple
Dim n_joueur                      : ' numéro de picture de l'image actuelle du joueur

Height 0, (Nb_Lignes+13)*taille_case : Width 0, (Nb_Cases_ligne + 4)*taille_case : color 0,255,255,255
Picture 1 : Picture 2 : Hide 2: TOP 2, -2000: Height 2,160 : Width 2,80 : File_load 2,"Sprites_Vorace.bmp"

' créer les picture pour les pastilles
  Picture 1000 : hide 1000 : Height 1000,20 : Width 1000, 20
  Image 3
  2D_Target_Is 1000
  2D_Pen_Color 0,200,200 : 2D_Fill_Color 0,200,200
  2D_Circle 0.5*taille_case,0.5*taille_case,3
  2D_image_copy 3,0,0,20,20
  For N=1 to Nb_Lignes :  For I=1 to Nb_Cases_ligne
      Pastilles(N,I) = 1000+N*Nb_Cases_ligne+I
      A = Pastilles(N,I) :  Picture A : hide A
      Height A,20 : Width A,20 : Top A,N*taille_case : left A,I*taille_case : 2D_Target_Is A : 2D_Image_Paste 3,0,0
  Next I : Next N
  2D_Target_Is 1
  For I = 1 to N_Monstres+1
    Picture 20 + I : Height 20 + I, 20 : Width 20+ I, 20
    Image 3+I: Top 3+I, -2000 : Hide 3+I
  Next I
' créer les picture pour le joueur
  ' regarde à gauche
  Picture 51 : Hide 51 : Height 51, 20 : Width 51, 20
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,0,0,20,20 :  2D_Target_Is 51 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à droite
  Picture 52 : Hide 52 : Height 52, 20 : Width 52, 20
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,20,0,40,20 : 2D_Target_Is 52 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à haut
  Picture 53 : Hide 53 : Height 53, 20 : Width 53, 20
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,60,0,80,20 : 2D_Target_Is 53 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à bas
  Picture 54 : Hide 54 : Height 54, 20 : Width 54, 20
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,40,0,60,20 :  2D_Target_Is 54 : 2D_IMAGE_PASTE 3,0,0

 DATA 11111111111111111111111111111111  : ' L1            :
 DATA 10100000010000011000000100000001  : ' L2
 DATA 10101111010111110010101110111111  : ' L3
 DATA 10001000000100010010100010100001
 DATA 11110000000111000110001010100101
 DATA 10000111010101111100001010110101
 DATA 10111100010000110001111010100101
 DATA 10000101111110000111100010101101
 DATA 11110100010011111101001010101001
 DATA 10000111010110010001011010101011
 DATA 10111100010000000001001000000011
 DATA 10000101111111110111111111011111
 DATA 11110100011000110000000001010001
 DATA 10000111000010000111111111010001
 DATA 10111111111111111111011111010001
 DATA 10000000000000000000000000010001
 DATA 10100000010000011000000100000001
 DATA 10101111010111110010101110111111
 DATA 10001000000100000010100010000001
 DATA 11111111111111111111111111111111  : ' L20

Timer 10: Timer_interval 10,80 : Timer_off 10 : On_Timer 10, Boucle
Gosub Charge_Niveau
Score = 0

Relance2:

X = 2: Y=2 : VM=3      : ' Position intiale du joueur
Xm(1) = 12 : Ym(1)= 6  : ' Positions initiales des Voraces
Xm(2) = 22 : Ym(2)= 4 :  Xm(3) = 7 : Ym(3) = 13
Depl = 0 : S=1 : N=0 : traite = 0

If VM < N_Monstres Then VM = N_Monstres
n_joueur = 51 : Top n_joueur,Y*taille_case : Left n_joueur,X*taille_case
show n_joueur : ' Affiche le joueur

on_key_down 0,touche
timer_on 10
End

Relance:
 hide n_joueur
 M = 0
 Hide 1 : 2D_Target_is 1
 Height 1, (Nb_Lignes+9)*taille_case : Width 1, (Nb_Cases_ligne+2)*taille_case
 For L = 1 TO Nb_Lignes
  For N = 1 TO Nb_Cases_ligne
    If Etat(L,N)<>2
        If N=2 and L=2
          ' On ne mets pas de pastille à la position de départ
        Else
          Etat(L,N)=1 : M = M+1
          Show Pastilles(L,N)
        End_If
    End_If
  Next N
 Next L
Show 1
2D_Pen_Color 255,255,255 : 2D_Fill_Color 255,255,255
goto relance2
return


Change_dir:
  FOR DEPL = 1000 TO 1 STEP -1
    S= INT(RND(4))+1
    Gosub Test_dirM
  NEXT DEPL
return

Test_dirM:

    2D_Target_is 2
    IF S=1 and XM(A) < Nb_Cases_ligne-2 Then IF Etat(YM(A),XM(A)+1)<2 Then XM(A)=XM(A)+1: 2D_IMAGE_COPY 3+A,21,19*A+1,40,19*(A+1)+1:DEPL=1
    IF S=2 and YM(A) < Nb_lignes-2 Then IF Etat(YM(A)+1,XM(A))<2 Then YM(A)=YM(A)+1: 2D_IMAGE_COPY 3+A,41,19*A+1,60,19*(A+1)+1:DEPL=1
    IF S=3 and XM(A) > 2  Then IF Etat(YM(A),XM(A)-1)<2 Then XM(A)=XM(A)-1: 2D_IMAGE_COPY 3+A, 1,19*A+1,20,19*(A+1)+1:DEPL=1
    IF S=4 and YM(A) > 2 Then IF Etat(YM(A)-1,XM(A))<2 Then YM(A)=YM(A)-1: 2D_IMAGE_COPY 3+A,61,19*A+1,80,19*(A+1)+1:DEPL=1
    2D_Target_is 20+A : 2D_Image_Paste 3+A,0,0 : 2D_Target_is 1
Return

Boucle:
  If pause = 1 then return
  timer_off 10
  N = N+1 :  A = N
  IF A <= N_Monstres
    L = RND(10)
    If L > 6
      gosub Change_dir
    Else
      gosub Test_dirM
      if depl=0 Then gosub Change_dir
    End_If
    Top 20+A,Ym(A)*taille_case : Left 20+A,Xm(A)*taille_case : Depl=0 : ' Affiche le monstre
  End_If

  IF N= VM THEN N=0

  For I=1 To N_Monstres :  If X=XM(I) and Y=YM(I) then gosub Collision : Next I
  If M = 0 Then Message "Niveau vidé, appuyez pour en faire un autre...": goto relance
  traite = 0 : timer_on 10
Return

Touche:
if traite = 0
  traite = 1 : touche_enfoncee = key_down_code
  ' Gauche
  If touche_enfoncee = 37 Then If X > 2 Then If Etat(Y,X-1)<2 Then X=X-1 : hide n_joueur : n_joueur = 51
  ' Droite
  If touche_enfoncee = 39 Then If X < (Nb_Cases_ligne-1) Then If Etat(Y,X+1)<2 Then X=X+1: hide n_joueur : n_joueur = 52
  ' Haut
  If touche_enfoncee = 38 Then If Y > 2 Then  If Etat(Y-1,X)<2 Then Y=Y-1: hide n_joueur : n_joueur = 53
  ' Bas
  If touche_enfoncee = 40 Then If Y < (Nb_lignes-1) Then If Etat(Y+1,X)<2 Then Y=Y+1: hide n_joueur : n_joueur = 54
  ' Q ou Echap pour quitter
  If touche_enfoncee = 88 or touche_enfoncee = 27 Then goto FIN
  ' P pour Pause
  If touche_enfoncee =  80 Then If Pause = 0 then Pause = 1 :else: Pause = 0

  For I = 1 TO N_Monstres
    If X=XM(I) and Y=YM(I) then gosub Collision
  Next I

  If Etat(Y,X) = 1 Then Score=Score +10 : Etat(Y,X) = 0 : M=M-1 : Caption 13, "Score : " + RIGHT$("00000"+STR$(Score),5)
  Hide pastilles(Y,X)
  Top n_joueur,Y*taille_case : Left n_joueur,X*taille_case : show n_joueur : ' Affiche le joueur
End_if
Return

Collision:
  Goto fin
Return

Charge_Niveau:
 M = 0
 Hide 1 : 2D_Target_is 1 :  Height 1, (Nb_Lignes+8)*taille_case : Width 1, (Nb_Cases_ligne+2)*taille_case
 For L = 1 TO Nb_Lignes
  Read A$
  For N = 1 TO Nb_Cases_ligne
    If Mid$(A$,N,1)="1"
        2D_Pen_Color 200,200,0 : 2D_Fill_Color 200,200,0
        2D_Rectangle N*taille_case+1,L*taille_case+1,(N+1)*taille_case-1, (L+1)*taille_case-1
        Etat(L,N)=2
    Else
        If N=2 and L=2
          ' On ne mets pas de pastille à la position de départ
        Else
          Etat(L,N)=1 : M = M+1
          Show Pastilles(L,N)
        End_If
    End_If
  Next N
 Next L
 2D_Fill_color 255,255,255 : 2D_Pen_Color 255,0,0
 2D_Rectangle taille_case, (Nb_Lignes+2)*taille_case, (Nb_Cases_ligne+2)*taille_case- taille_case, (Nb_Lignes+8)*taille_case
 Alpha 12 : Left 12, 60 : Top 12, (Nb_Lignes+5.5)*taille_case : font_bold 12
 font_name 12, "Courier" : Height 12, taille_case+3: Font_size 12,taille_case - 5 : Font_color 12,200,200,0
 Caption 12, "- VORACE -  (Version Panoramic Version 0.9.23)"
 Alpha 13 : Left 13,60  : Top 13, (Nb_Lignes+3)*taille_case : font_name 13, "Courier": font_size 13,taille_case -5
 Caption 13, "Score : 00000"
Show 1
Return

Fin:
 timer_off 10
 Message$ =  "*********************" +LF$+ "*  Partie terminée  *" +LF$+ "*********************"
 Message$ = Message$ +LF$ + LF$ + "Score: "+ STR$ (Score)
 Message$ = Message$ +LF$ + LF$ + "Rejouer ?"
 if Message_confirmation_yes_no (Message$) = 1 then Score = 0 : goto Relance
terminate
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptySam 17 Mar 2012 - 15:06

Code relu avant d'aller emmener ma fille à la danse. J'ai retiré aussi le système de validation du déplacement (variable D1 supprimée) qui n'a plus de sens dans cette version. J'ai mis à jour le code dans le post précédent.
Encore merci Bignono et Klaus, j'aime vraiment bien le résultat ^^
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptySam 17 Mar 2012 - 16:58

Bizarre chez moi je ne vois que le joueur, les monstres sont invisibles, alors quant il n'y a presque plus de pastilles à manger, je bouge au pifomètre.

Après recherche, je me suis rendu compte que j'avais une image trop petite. Je l'ai agrandi mais surprise elle s'est coupé en 4 pour servir au joueur et au 3 monstres.

Si tu pouvais nous fournir l'image que tu as pris.


Sinon, résultat impécable, plus de scintillement. C'est beau la collaboration (surtout la mienne Very Happy )

A+

Revenir en haut Aller en bas
JL35




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

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptySam 17 Mar 2012 - 17:11

Pour moi, aucun problème, c'est tout à fait satisfaisant, surtout pour ces saletés de monstres.

Cela dit, beau jeu, bien jouable, impeccable.
En peu de lignes finalement, même si c'est du concentré.

Tu ne pourrais pas nous faire une version sans les monstres, c'est agaçant à la fin ! du genre 'le Vorace pour les nuls'.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptySam 17 Mar 2012 - 17:39

Je viens de re_parcourir le sujet, ce qui m'a permis de voir que l'image est fournie à la première page.

C'est beaucoup mieux, le vorace tourne la tête du coté ou il se dirige.

cheers A+
Revenir en haut Aller en bas
JL35




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

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptySam 17 Mar 2012 - 18:02

du moment qu'il regarde dans ta direction...
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptySam 17 Mar 2012 - 18:35

T'inquiète JL35, dès qu'il aura gouté une fois il n'y reviendra pas Evil or Very Mad

J'ai voulu y apporter mon grain de sel, alors je vous l'ai fait sur un fond noir (je suis le noircisseur officiel de Panoramic Razz ) et je l'ai agrandi (taille_case=31), mais pour que ce soit beau il a fallu que je modifie l'image.

Je suis assez content du résultat (transformé en application çà donne bien)

Voici les 2:

Code:
' Version original en Basic pour l'Hector ecrit par Eddy DUTERTRE


Label Charge_Niveau, Boucle, Relance, Fin, Touche, Collision, Change_dir
Label Test_dirM, relance2

Dim L,N,A,I,A$      : '  Compteur et variables diverses temporaires
Dim M              : '  Competeur de pastilles
Dim Nb_Cases_ligne, Nb_Lignes : Nb_Cases_ligne = 32 : Nb_Lignes = 20
Dim X,Y            : '  Coordonnées du joueur
Dim N_Monstres  : N_Monstres = 3 : ' Le nombre de monstres actifs (max 3)
Dim Xm(3),Ym(3),Vm  : '  Coordonnées du monstre et vitesse de deplacement (+Vm est ganrd moins il va vite)
Dim S              : '  Direction du monstre
Dim Depl            : '  Deplace monstre si Depl = 1
Dim Etat(Nb_Lignes,Nb_Cases_ligne), traite
Dim Pastilles(Nb_Lignes,Nb_Cases_ligne)
Dim Temps, Score, touche_enfoncee, Pause
Dim LF$, Message$ : LF$=CHR$(10)
Dim taille_case : taille_case=31  : ' Taille
Dim n_joueur                      : ' numéro de picture de l'image actuelle du joueur

Height 0, (Nb_Lignes+13)*taille_case : Width 0, (Nb_Cases_ligne + 4)*taille_case : color 0,0,0,0
Picture 1 : Picture 2 : Hide 2: TOP 2, -2000: Height 2,160 : Width 2,80 : File_load 2,"spritesvoracenoir.bmp"
width 1,taille_case*34:height 1,taille_case*30: color 1,0,0,0
' créer les picture pour les pastilles
  Picture 1000 : hide 1000 : Height 1000,20 : Width 1000, 20
color 1000,0,0,0
  Image 3
  2D_Target_Is 1000
  2D_Pen_Color 0,200,200 : 2D_Fill_Color 0,200,200
  2D_Circle 0.5*taille_case,0.5*taille_case,3
  2D_image_copy 3,0,0,20,20
  For N=1 to Nb_Lignes :  For I=1 to Nb_Cases_ligne
      Pastilles(N,I) = 1000+N*Nb_Cases_ligne+I
      A = Pastilles(N,I) :  Picture A : hide A
      Height A,20 : Width A,20 : Top A,N*taille_case : left A,I*taille_case : 2D_Target_Is A : 2D_Image_Paste 3,0,0
  Next I : Next N
  2D_Target_Is 1
  For I = 1 to N_Monstres+1
    Picture 20 + I : Height 20 + I, 20 : Width 20+ I, 20:color 20+I,0,0,0
    Image 3+I: Top 3+I, -2000 : Hide 3+I
  Next I
' créer les picture pour le joueur
  ' regarde à gauche
  Picture 51 : Hide 51 : Height 51, 20 : Width 51, 20:color 51,0,0,0
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,0,0,20,20 :  2D_Target_Is 51 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à droite
  Picture 52 : Hide 52 : Height 52, 20 : Width 52, 20:color 52,0,0,0
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,20,0,40,20 : 2D_Target_Is 52 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à haut
  Picture 53 : Hide 53 : Height 53, 20 : Width 53, 20:color 53,0,0,0
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,60,0,80,20 : 2D_Target_Is 53 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à bas
  Picture 54 : Hide 54 : Height 54, 20 : Width 54, 20:color 54,0,0,0
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,40,0,60,20 :  2D_Target_Is 54 : 2D_IMAGE_PASTE 3,0,0

 DATA 11111111111111111111111111111111  : ' L1            :
 DATA 10100000010000011000000100000001  : ' L2
 DATA 10101111010111110010101110111111  : ' L3
 DATA 10001000000100010010100010100001
 DATA 11110000000111000110001010100101
 DATA 10000111010101111100001010110101
 DATA 10111100010000110001111010100101
 DATA 10000101111110000111100010101101
 DATA 11110100010011111101001010101001
 DATA 10000111010110010001011010101011
 DATA 10111100010000000001001000000011
 DATA 10000101111111110111111111011111
 DATA 11110100011000110000000001010001
 DATA 10000111000010000111111111010001
 DATA 10111111111111111111011111010001
 DATA 10000000000000000000000000010001
 DATA 10100000010000011000000100000001
 DATA 10101111010111110010101110111111
 DATA 10001000000100000010100010000001
 DATA 11111111111111111111111111111111  : ' L20

Timer 10: Timer_interval 10,80 : Timer_off 10 : On_Timer 10, Boucle
Gosub Charge_Niveau
Score = 0

Relance2:

X = 2: Y=2 : VM=3      : ' Position intiale du joueur
Xm(1) = 12 : Ym(1)= 6  : ' Positions initiales des Voraces
Xm(2) = 22 : Ym(2)= 4 :  Xm(3) = 7 : Ym(3) = 13
Depl = 0 : S=1 : N=0 : traite = 0

If VM < N_Monstres Then VM = N_Monstres
n_joueur = 51 : Top n_joueur,Y*taille_case : Left n_joueur,X*taille_case
show n_joueur : ' Affiche le joueur

on_key_down 0,touche
timer_on 10
End

Relance:
 hide n_joueur
 M = 0
 Hide 1 : 2D_Target_is 1
 Height 1, (Nb_Lignes+9)*taille_case : Width 1, (Nb_Cases_ligne+2)*taille_case
 For L = 1 TO Nb_Lignes
  For N = 1 TO Nb_Cases_ligne
    If Etat(L,N)<>2
        If N=2 and L=2
          ' On ne mets pas de pastille à la position de départ
        Else
          Etat(L,N)=1 : M = M+1
          Show Pastilles(L,N)
        End_If
    End_If
  Next N
 Next L
Show 1
2D_Pen_Color 255,255,255 : 2D_Fill_Color 0,0,0
goto relance2
return


Change_dir:
  FOR DEPL = 1000 TO 1 STEP -1
    S= INT(RND(4))+1
    Gosub Test_dirM
  NEXT DEPL
return

Test_dirM:

    2D_Target_is 2
    IF S=1 and XM(A) < Nb_Cases_ligne-2 Then IF Etat(YM(A),XM(A)+1)<2 Then XM(A)=XM(A)+1: 2D_IMAGE_COPY 3+A,21,19*A+1,40,19*(A+1)+1:DEPL=1
    IF S=2 and YM(A) < Nb_lignes-2 Then IF Etat(YM(A)+1,XM(A))<2 Then YM(A)=YM(A)+1: 2D_IMAGE_COPY 3+A,41,19*A+1,60,19*(A+1)+1:DEPL=1
    IF S=3 and XM(A) > 2  Then IF Etat(YM(A),XM(A)-1)<2 Then XM(A)=XM(A)-1: 2D_IMAGE_COPY 3+A, 1,19*A+1,20,19*(A+1)+1:DEPL=1
    IF S=4 and YM(A) > 2 Then IF Etat(YM(A)-1,XM(A))<2 Then YM(A)=YM(A)-1: 2D_IMAGE_COPY 3+A,61,19*A+1,80,19*(A+1)+1:DEPL=1
    2D_Target_is 20+A : 2D_Image_Paste 3+A,0,0 : 2D_Target_is 1
Return

Boucle:
  If pause = 1 then return
  timer_off 10
  N = N+1 :  A = N
  IF A <= N_Monstres
    L = RND(10)
    If L > 6
      gosub Change_dir
    Else
      gosub Test_dirM
      if depl=0 Then gosub Change_dir
    End_If
    Top 20+A,Ym(A)*taille_case : Left 20+A,Xm(A)*taille_case : Depl=0 :' Affiche le monstre
  End_If

  IF N= VM THEN N=0

  For I=1 To N_Monstres :  If X=XM(I) and Y=YM(I) then gosub Collision : Next I
  If M = 0 Then Message "Niveau vidé, appuyez pour en faire un autre...": goto relance
  traite = 0 : timer_on 10
Return

Touche:
if traite = 0
  traite = 1 : touche_enfoncee = key_down_code
  ' Gauche
  If touche_enfoncee = 37 Then If X > 2 Then If Etat(Y,X-1)<2 Then X=X-1 : hide n_joueur : n_joueur = 51
  ' Droite
  If touche_enfoncee = 39 Then If X < (Nb_Cases_ligne-1) Then If Etat(Y,X+1)<2 Then X=X+1: hide n_joueur : n_joueur = 52
  ' Haut
  If touche_enfoncee = 38 Then If Y > 2 Then  If Etat(Y-1,X)<2 Then Y=Y-1: hide n_joueur : n_joueur = 53
  ' Bas
  If touche_enfoncee = 40 Then If Y < (Nb_lignes-1) Then If Etat(Y+1,X)<2 Then Y=Y+1: hide n_joueur : n_joueur = 54
  ' Q ou Echap pour quitter
  If touche_enfoncee = 88 or touche_enfoncee = 27 Then goto FIN
  ' P pour Pause
  If touche_enfoncee =  80 Then If Pause = 0 then Pause = 1 :else: Pause = 0

  For I = 1 TO N_Monstres
    If X=XM(I) and Y=YM(I) then gosub Collision
  Next I

  If Etat(Y,X) = 1 Then Score=Score +10 : Etat(Y,X) = 0 : M=M-1 : Caption 13, "Score : " + RIGHT$("00000"+STR$(Score),5)
  Hide pastilles(Y,X)
  Top n_joueur,Y*taille_case : Left n_joueur,X*taille_case : show n_joueur : ' Affiche le joueur
End_if
Return

Collision:
  Goto fin
Return

Charge_Niveau:
 M = 0
 Hide 1 : 2D_Target_is 1 :  Height 1, (Nb_Lignes+8)*taille_case : Width 1, (Nb_Cases_ligne+2)*taille_case
 For L = 1 TO Nb_Lignes
  Read A$
  For N = 1 TO Nb_Cases_ligne
    If Mid$(A$,N,1)="1"
        2D_Pen_Color 200,200,0 :  2D_Fill_Color 0,0,0
        2D_Rectangle N*taille_case+1,L*taille_case+1,(N+1)*taille_case-1, (L+1)*taille_case-1
        Etat(L,N)=2
    Else
        If N=2 and L=2
          ' On ne mets pas de pastille à la position de départ
        Else
          Etat(L,N)=1 : M = M+1
          Show Pastilles(L,N)
        End_If
    End_If
  Next N
 Next L
 2D_Fill_color 0,0,0 : 2D_Pen_Color 255,0,0
 2D_Rectangle taille_case, (Nb_Lignes+2)*taille_case, (Nb_Cases_ligne+2)*taille_case- taille_case, (Nb_Lignes+8)*taille_case
 Alpha 12 : Left 12, 60 : Top 12, (Nb_Lignes+5.5)*taille_case : font_bold 12
 font_name 12, "Courier" : Height 12, taille_case+3: Font_size 12,taille_case - 5 : Font_color 12,200,200,0
 Caption 12, "- VORACE -  (Version Panoramic Version 0.9.23)"
 Alpha 13 : Left 13,60  : Top 13, (Nb_Lignes+3)*taille_case : font_name 13, "Courier": font_size 13,taille_case -5
 Caption 13, "Score : 00000"
Show 1
Return

Fin:
 timer_off 10
 Message$ =  "*********************" +LF$+ "*  Partie terminée  *" +LF$+ "*********************"
 Message$ = Message$ +LF$ + LF$ + "Score: "+ STR$ (Score)
 Message$ = Message$ +LF$ + LF$ + "Rejouer ?"
 if Message_confirmation_yes_no (Message$) = 1 then Score = 0 : goto Relance
terminate


Vorace - une autre adaptation depuis l'Hector - Page 2 Sprite10


Vous pouvez récupérer l'image ici et la ré_enregistrer en BMP sous ce nom; "spritesvoracenoir.bmp"

https://i.servimg.com/u/f40/17/20/61/90/sprite10.jpg

bounce
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptySam 17 Mar 2012 - 23:51

Mes amis viennent de partie et je ai testé ta version et j l'aime bien ta "black version", Jean-Claude Smile
J'ai dû faire quelques réajustement pour que ça tienne sur mon écran (et oui 768 de haut ...) et pour éviter le clignotement au démarrage sur fond noir ...
J'ai changé aussi la couleur de la police du score que l'on ne voyait plus en noir sur noir. Ca donne ça en code:
Code:
' Version original en Basic pour l'Hector ecrit par Eddy DUTERTRE


Label Charge_Niveau, Boucle, Relance, Fin, Touche, Collision, Change_dir
Label Test_dirM, relance2

Dim L,N,A,I,A$      : '  Compteur et variables diverses temporaires
Dim M              : '  Competeur de pastilles
Dim Nb_Cases_ligne, Nb_Lignes : Nb_Cases_ligne = 32 : Nb_Lignes = 20
Dim X,Y            : '  Coordonnées du joueur
Dim N_Monstres  : N_Monstres = 3 : ' Le nombre de monstres actifs (max 3)
Dim Xm(3),Ym(3),Vm  : '  Coordonnées du monstre et vitesse de deplacement (+Vm est ganrd moins il va vite)
Dim S              : '  Direction du monstre
Dim Depl            : '  Deplace monstre si Depl = 1
Dim Etat(Nb_Lignes,Nb_Cases_ligne), traite
Dim Pastilles(Nb_Lignes,Nb_Cases_ligne)
Dim Temps, Score, touche_enfoncee, Pause
Dim LF$, Message$ : LF$=CHR$(10)
Dim taille_case : taille_case=26  : ' Taille
Dim n_joueur                      : ' numéro de picture de l'image actuelle du joueur

Height 0, (Nb_Lignes+8)*taille_case : Width 0, (Nb_Cases_ligne + 3)*taille_case : Hide 0
Picture 1 : Height 1, (Nb_Lignes+6.5)*taille_case : Width 1, (Nb_Cases_ligne+1.5)*taille_case : Color 1,0,0,0
Picture 2 : Hide 2: TOP 2, -2000: Height 2,160 : Width 2,80 : File_load 2,"spritesvoracenoir.bmp"

' créer les picture pour les pastilles
  Picture 1000 : hide 1000 : Height 1000,20 : Width 1000, 20 :  Color 1000,0,0,0
  Image 3
  2D_Target_Is 1000 :  2D_Pen_Color 0,200,200 : 2D_Fill_Color 0,200,200
  2D_Circle 0.5*taille_case,0.5*taille_case,3  : 2D_image_copy 3,0,0,20,20
  For N=1 to Nb_Lignes :  For I=1 to Nb_Cases_ligne
      Pastilles(N,I) = 1000+N*Nb_Cases_ligne+I
      A = Pastilles(N,I) :  Picture A : hide A
      Height A,20 : Width A,20 : Top A,N*taille_case : left A,I*taille_case : 2D_Target_Is A : 2D_Image_Paste 3,0,0
  Next I : Next N
  2D_Target_Is 1
  For I = 1 to N_Monstres+1
    Picture 20 + I : Height 20 + I, 20 : Width 20+ I, 20:color 20+I,0,0,0
    Image 3+I: Top 3+I, -2000 : Hide 3+I
  Next I
' créer les picture pour le joueur
  ' regarde à gauche
  Picture 51 : Hide 51 : Height 51, 20 : Width 51, 20:color 51,0,0,0
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,0,0,20,20 :  2D_Target_Is 51 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à droite
  Picture 52 : Hide 52 : Height 52, 20 : Width 52, 20:color 52,0,0,0
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,20,0,40,20 : 2D_Target_Is 52 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à haut
  Picture 53 : Hide 53 : Height 53, 20 : Width 53, 20:color 53,0,0,0
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,60,0,80,20 : 2D_Target_Is 53 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à bas
  Picture 54 : Hide 54 : Height 54, 20 : Width 54, 20:color 54,0,0,0
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,40,0,60,20 :  2D_Target_Is 54 : 2D_IMAGE_PASTE 3,0,0

 DATA 11111111111111111111111111111111  : ' L1            :
 DATA 10100000010000011000000100000001  : ' L2
 DATA 10101111010111110010101110111111  : ' L3
 DATA 10001000000100010010100010100001
 DATA 11110000000111000110001010100101
 DATA 10000111010101111100001010110101
 DATA 10111100010000110001111010100101
 DATA 10000101111110000111100010101101
 DATA 11110100010011111101001010101001
 DATA 10000111010110010001011010101011
 DATA 10111100010000000001001000000011
 DATA 10000101111111110111111111011111
 DATA 11110100011000110000000001010001
 DATA 10000111000010000111111111010001
 DATA 10111111111111111111011111010001
 DATA 10000000000000000000000000010001
 DATA 10100000010000011000000100000001
 DATA 10101111010111110010101110111111
 DATA 10001000000100000010100010000001
 DATA 11111111111111111111111111111111  : ' L20

Timer 10: Timer_interval 10,80 : Timer_off 10 : On_Timer 10, Boucle
color 0,0,0,0
Gosub Charge_Niveau
Score = 0

Relance2:

X = 2: Y=2 : VM=3      : ' Position intiale du joueur
Xm(1) = 12 : Ym(1)= 6  : ' Positions initiales des Voraces
Xm(2) = 22 : Ym(2)= 4 :  Xm(3) = 7 : Ym(3) = 13
Depl = 0 : S=1 : N=0 : traite = 0

If VM < N_Monstres Then VM = N_Monstres
n_joueur = 51 : Top n_joueur,Y*taille_case+2: Left n_joueur,X*taille_case+2
show n_joueur : ' Affiche le joueur

on_key_down 0,touche
timer_on 10
End

Relance:
 hide n_joueur
 M = 0
 Hide 1 : 2D_Target_is 1
 Height 1, (Nb_Lignes+6.5)*taille_case : Width 1, (Nb_Cases_ligne+2)*taille_case
 For L = 1 TO Nb_Lignes
  For N = 1 TO Nb_Cases_ligne
    If Etat(L,N)<>2
        If N=2 and L=2
          ' On ne mets pas de pastille à la position de départ
        Else
          Etat(L,N)=1 : M = M+1
          Show Pastilles(L,N)
        End_If
    End_If
  Next N
 Next L
Show 1
goto relance2
return


Change_dir:
  FOR DEPL = 1000 TO 1 STEP -1
    S= INT(RND(4))+1
    Gosub Test_dirM
  NEXT DEPL
return

Test_dirM:

    2D_Target_is 2
    IF S=1 and XM(A) < Nb_Cases_ligne-2 Then IF Etat(YM(A),XM(A)+1)<2 Then XM(A)=XM(A)+1: 2D_IMAGE_COPY 3+A,21,19*A+1,40,19*(A+1)+1:DEPL=1
    IF S=2 and YM(A) < Nb_lignes-2 Then IF Etat(YM(A)+1,XM(A))<2 Then YM(A)=YM(A)+1: 2D_IMAGE_COPY 3+A,41,19*A+1,60,19*(A+1)+1:DEPL=1
    IF S=3 and XM(A) > 2  Then IF Etat(YM(A),XM(A)-1)<2 Then XM(A)=XM(A)-1: 2D_IMAGE_COPY 3+A, 1,19*A+1,20,19*(A+1)+1:DEPL=1
    IF S=4 and YM(A) > 2 Then IF Etat(YM(A)-1,XM(A))<2 Then YM(A)=YM(A)-1: 2D_IMAGE_COPY 3+A,61,19*A+1,80,19*(A+1)+1:DEPL=1
    2D_Target_is 20+A : 2D_Image_Paste 3+A,0,0 : 2D_Target_is 1
Return

Boucle:
  If pause = 1 then return
  timer_off 10
  N = N+1 :  A = N
  IF A <= N_Monstres
    L = RND(10)
    If L > 6
      gosub Change_dir
    Else
      gosub Test_dirM
      if depl=0 Then gosub Change_dir
    End_If
    Top 20+A,Ym(A)*taille_case+2 : Left 20+A,Xm(A)*taille_case+2 : Depl=0 :' Affiche le monstre
  End_If

  IF N= VM THEN N=0

  For I=1 To N_Monstres :  If X=XM(I) and Y=YM(I) then gosub Collision : Next I
  If M = 0 Then Message "Niveau vidé, appuyez pour en faire un autre...": goto relance
  traite = 0 : timer_on 10
Return

Touche:
if traite = 0
  traite = 1 : touche_enfoncee = key_down_code
  ' Gauche
  If touche_enfoncee = 37 Then If X > 2 Then If Etat(Y,X-1)<2 Then X=X-1 : hide n_joueur : n_joueur = 51
  ' Droite
  If touche_enfoncee = 39 Then If X < (Nb_Cases_ligne-1) Then If Etat(Y,X+1)<2 Then X=X+1: hide n_joueur : n_joueur = 52
  ' Haut
  If touche_enfoncee = 38 Then If Y > 2 Then  If Etat(Y-1,X)<2 Then Y=Y-1: hide n_joueur : n_joueur = 53
  ' Bas
  If touche_enfoncee = 40 Then If Y < (Nb_lignes-1) Then If Etat(Y+1,X)<2 Then Y=Y+1: hide n_joueur : n_joueur = 54
  ' Q ou Echap pour quitter
  If touche_enfoncee = 88 or touche_enfoncee = 27 Then goto FIN
  ' P pour Pause
  If touche_enfoncee =  80 Then If Pause = 0 then Pause = 1 :else: Pause = 0

  For I = 1 TO N_Monstres
    If X=XM(I) and Y=YM(I) then gosub Collision
  Next I

  If Etat(Y,X) = 1 Then Score=Score +10 : Etat(Y,X) = 0 : M=M-1 : Caption 13, "Score : " + RIGHT$("00000"+STR$(Score),5)
  Hide pastilles(Y,X)
  Top n_joueur,Y*taille_case+2 : Left n_joueur,X*taille_case+2 : show n_joueur : ' Affiche le joueur
End_if
Return

Collision:
  Goto fin
Return

Charge_Niveau:
 M = 0
 2D_Target_is 1 :  Hide 1
 For L = 1 TO Nb_Lignes
  Read A$
  For N = 1 TO Nb_Cases_ligne
    If Mid$(A$,N,1)="1"
        2D_Pen_Color 200,200,0 :  2D_Fill_Color 0,0,0
        2D_Rectangle N*taille_case+1,L*taille_case+1,(N+1)*taille_case-1, (L+1)*taille_case-1
        Etat(L,N)=2
    Else
        If N=2 and L=2
          ' On ne mets pas de pastille à la position de départ
        Else
          Etat(L,N)=1 : M = M+1
          Show Pastilles(L,N)
        End_If
    End_If
  Next N
 Next L
 2D_Fill_color 0,0,0 : 2D_Pen_Color 255,0,0
 2D_Rectangle taille_case, (Nb_Lignes+2)*taille_case, (Nb_Cases_ligne+2)*taille_case- taille_case, (Nb_Lignes+6)*taille_case
 Alpha 12 : Left 12, 60 : Top 12, (Nb_Lignes+4.5)*taille_case : font_bold 12
 font_name 12, "Courier" : Height 12, taille_case+3: Font_size 12,taille_case - 5 : Font_color 12,200,200,0
 Caption 12, "- VORACE -  (Version Panoramic Version 0.9.23)"
 Alpha 13 : Left 13,60  : Top 13, (Nb_Lignes+2.5)*taille_case : font_name 13, "Courier": font_size 13,taille_case -5
 Font_color 13,0,80,200 : Caption 13, "Score : 00000"
Show 1 : Show 0
Return

Fin:
 timer_off 10
 Message$ =  "*********************" +LF$+ "*  Partie terminée  *" +LF$+ "*********************"
 Message$ = Message$ +LF$ + LF$ + "Score: "+ STR$ (Score)
 Message$ = Message$ +LF$ + LF$ + "Rejouer ?"
 if Message_confirmation_yes_no (Message$) = 1 then Score = 0 : goto Relance
terminate


Dernière édition par Jicehel le Dim 18 Mar 2012 - 10:14, édité 1 fois
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 9:03

Salut Jicehel

Forcément " noir c'est noir il n'y a plus d'espoir ho! ho! " Razz (Johnny)


Plus sérieusement:
Dans ta version black, Il manque une ligne (ligne25) pour que le fond du labyrinthe soit noir:
Code:
width 1,taille_case*34:height 1,taille_case*30: color 1,0,0,0

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 9:21

Heu non, elle est supprimé car ligne 23, il y a :
Code:
Picture 1 : Color 1,0,0,0

et le picture 1 est déjà redimensionné ligne 190 dans la procédure charge_niveau (mais bon initialement c'était pour redimensionner la fenêtre en fonction de la taille du labyrinthe, mais bon, autant dimensionner une fois pour toute à la taille max et prévoir le labyrinthe en conséquence)
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 9:34

Question

Quant j'ai essayer ton dernier code le picture 1 est resté à sa dimension d'origine ????
en rajoutant la ligne 25, çà a marché Neutral

Bref c'est pas important, j'en ai un qui marche...

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 10:13

ok Smile En effet c'est le plus important, mais je ne vois pas pourquoi, ça ne marche pas selon l'emplacement où la même commande se trouve. J'ai mis à jour le source.
Revenir en haut Aller en bas
papydall

papydall


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

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 10:39

Bonjour à tous.
Je n’arrive pas à faire exécuter VORACE.
J’obtiens le message : Impossible to load the file. Line 23
J’ai récupéré l’image en clickant sur le lien donné et je l’ai enregistrée sous : spritesvoracenoir.bmp.
J’ai indiqué le chemin complet de l’image en ligne 23, mais en vain.
Comment procéder ?
Merci d’avance
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 10:59

Attention, l'image fournit par Jean-Claude est en JPG, tu peux l'ouvrir dans Paint par exemple et l'enregistrer au format bmp (comme l'encodage de l'image n'est pas le même, le simple renommage ne suffit pas). C'est un peu pénible avec les sites de partage d'image, ils ne veulent pas du format bmp et le transforme automatiquement (pour ceux que je connais en tout cas)...
Pareil, si tes extensions connues sont masquées, fais attention, tu vois peut être le nom avec bmp après et il y a peut être encore une extension masqué après.

Voilà Papydall, j'espère que c'est un de ces cas que tu rencontres, sinon, il faudra chercher par une autre piste
Revenir en haut Aller en bas
papydall

papydall


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

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 11:20

Merci, Jicehel
J'ai fait comme tu m'as expliqué, mais ça n'a pas marché.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 11:33

Re_Bonjour,
Voici une version (Black) à utiliser avec l'image en noir

J'ai ajouté un FORM 1002 qui à pour but de faire patienter pendant la mise en place. Si on clique sur la croix rouge on sort par terminate. Attention le form est tout petit, on ne voit que le bandeau. (J'ai laissé la position 0,0)

Si çà te plait Jicehel, tu pourrais untiliser ce form pour un menu de réglage avec l'écran de l'utilisateur en proposant la modification de taille_case et même d'un règlage automatique avec SCREEN_Y.
A toi de voir
Ici j'ai laissé taille_case=22, moi je met taille_case=31 pour un écran d'une hauteur de 1024 (Ce qui donnerai une valeur de 33.0322580645 la case)

voila le code:
Code:
'
      ' Vorace version converti en Panoramic par Jean-Charles et améliorée par l'equipe des "Panoramiciens"
' Version original en Basic pour l'Hector ecrit par Eddy DUTERTRE


Label Charge_Niveau, Boucle, Relance, Fin, fin2, Touche, Collision, Change_dir
Label Test_dirM, relance2

Dim L,N,A,I,A$      : '  Compteur et variables diverses temporaires
Dim M              : '  Competeur de pastilles
Dim Nb_Cases_ligne, Nb_Lignes : Nb_Cases_ligne = 32 : Nb_Lignes = 20
Dim X,Y            : '  Coordonnées du joueur
Dim N_Monstres  : N_Monstres = 3 : ' Le nombre de monstres actifs (max 3)
Dim Xm(3),Ym(3),Vm  : '  Coordonnées du monstre et vitesse de deplacement (+Vm est ganrd moins il va vite)
Dim S              : '  Direction du monstre
Dim Depl            : '  Deplace monstre si Depl = 1
Dim Etat(Nb_Lignes,Nb_Cases_ligne), traite
Dim Pastilles(Nb_Lignes,Nb_Cases_ligne)
Dim Temps, Score, touche_enfoncee, Pause
Dim LF$, Message$ : LF$=CHR$(10)
Dim taille_case : taille_case=22  : ' Taille
Dim n_joueur                      : ' numéro de picture de l'image actuelle du joueur

Height 0, (Nb_Lignes+13)*taille_case : Width 0, (Nb_Cases_ligne + 4)*taille_case : color 0,0,0,0
form 1002:hide 0:height 1002,40:caption 1002,"VORACE: Patientez....":show 1002:on_close 1002,fin2
Picture 1 : Picture 2 : Hide 2: TOP 2, -2000: Height 2,160 : Width 2,80 : File_load 2,"spritesvoracenoir.bmp"
width 1,taille_case*34:height 1,taille_case*30: color 1,0,0,0
' créer les picture pour les pastilles
  Picture 1000 : hide 1000 : Height 1000,20 : Width 1000, 20
color 1000,0,0,0
  Image 3
  2D_Target_Is 1000
  2D_Pen_Color 0,200,200 : 2D_Fill_Color 0,200,200
  2D_Circle 0.5*taille_case,0.5*taille_case,3
  2D_image_copy 3,0,0,20,20
  For N=1 to Nb_Lignes :  For I=1 to Nb_Cases_ligne
      Pastilles(N,I) = 1000+N*Nb_Cases_ligne+I
      A = Pastilles(N,I) :  Picture A : hide A
      Height A,20 : Width A,20 : Top A,N*taille_case : left A,I*taille_case : 2D_Target_Is A : 2D_Image_Paste 3,0,0
  Next I : Next N
  2D_Target_Is 1
  For I = 1 to N_Monstres+1
    Picture 20 + I : Height 20 + I, 20 : Width 20+ I, 20:color 20+I,0,0,0
    Image 3+I: Top 3+I, -2000 : Hide 3+I
  Next I
' créer les picture pour le joueur
  ' regarde à gauche
  Picture 51 : Hide 51 : Height 51, 20 : Width 51, 20:color 51,0,0,0
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,0,0,20,20 :  2D_Target_Is 51 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à droite
  Picture 52 : Hide 52 : Height 52, 20 : Width 52, 20:color 52,0,0,0
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,20,0,40,20 : 2D_Target_Is 52 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à haut
  Picture 53 : Hide 53 : Height 53, 20 : Width 53, 20:color 53,0,0,0
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,60,0,80,20 : 2D_Target_Is 53 : 2D_IMAGE_PASTE 3,0,0
  ' regarde à bas
  Picture 54 : Hide 54 : Height 54, 20 : Width 54, 20:color 54,0,0,0
  2D_Target_Is 2 : 2D_IMAGE_COPY 3,40,0,60,20 :  2D_Target_Is 54 : 2D_IMAGE_PASTE 3,0,0

 DATA 11111111111111111111111111111111  : ' L1            :
 DATA 10100000010000011000000100000001  : ' L2
 DATA 10101111010111110010101110111111  : ' L3
 DATA 10001000000100010010100010100001
 DATA 11110000000111000110001010100101
 DATA 10000111010101111100001010110101
 DATA 10111100010000110001111010100101
 DATA 10000101111110000111100010101101
 DATA 11110100010011111101001010101001
 DATA 10000111010110010001011010101011
 DATA 10111100010000000001001000000011
 DATA 10000101111111110111111111011111
 DATA 11110100011000110000000001010001
 DATA 10000111000010000111111111010001
 DATA 10111111111111111111011111010001
 DATA 10000000000000000000000000010001
 DATA 10100000010000011000000100000001
 DATA 10101111010111110010101110111111
 DATA 10001000000100000010100010000001
 DATA 11111111111111111111111111111111  : ' L20

Timer 10: Timer_interval 10,80 : Timer_off 10 : On_Timer 10, Boucle
Gosub Charge_Niveau
Score = 0

Relance2:

X = 2: Y=2 : VM=3      : ' Position intiale du joueur
Xm(1) = 12 : Ym(1)= 6  : ' Positions initiales des Voraces
Xm(2) = 22 : Ym(2)= 4 :  Xm(3) = 7 : Ym(3) = 13
Depl = 0 : S=1 : N=0 : traite = 0

If VM < N_Monstres Then VM = N_Monstres
n_joueur = 51 : Top n_joueur,Y*taille_case : Left n_joueur,X*taille_case
show n_joueur : ' Affiche le joueur

on_key_down 0,touche
timer_on 10
End

Relance:
 hide n_joueur
 M = 0
 Hide 1 : 2D_Target_is 1
 Height 1, (Nb_Lignes+9)*taille_case : Width 1, (Nb_Cases_ligne+2)*taille_case
 For L = 1 TO Nb_Lignes
  For N = 1 TO Nb_Cases_ligne
    If Etat(L,N)<>2
        If N=2 and L=2
          ' On ne mets pas de pastille à la position de départ
        Else
          Etat(L,N)=1 : M = M+1
          Show Pastilles(L,N)
        End_If
    End_If
  Next N
 Next L
Show 1
2D_Pen_Color 255,255,255 : 2D_Fill_Color 0,0,0
goto relance2
return


Change_dir:
  FOR DEPL = 1000 TO 1 STEP -1
    S= INT(RND(4))+1
    Gosub Test_dirM
  NEXT DEPL
return

Test_dirM:

    2D_Target_is 2
    IF S=1 and XM(A) < Nb_Cases_ligne-2 Then IF Etat(YM(A),XM(A)+1)<2 Then XM(A)=XM(A)+1: 2D_IMAGE_COPY 3+A,21,19*A+1,40,19*(A+1)+1:DEPL=1
    IF S=2 and YM(A) < Nb_lignes-2 Then IF Etat(YM(A)+1,XM(A))<2 Then YM(A)=YM(A)+1: 2D_IMAGE_COPY 3+A,41,19*A+1,60,19*(A+1)+1:DEPL=1
    IF S=3 and XM(A) > 2  Then IF Etat(YM(A),XM(A)-1)<2 Then XM(A)=XM(A)-1: 2D_IMAGE_COPY 3+A, 1,19*A+1,20,19*(A+1)+1:DEPL=1
    IF S=4 and YM(A) > 2 Then IF Etat(YM(A)-1,XM(A))<2 Then YM(A)=YM(A)-1: 2D_IMAGE_COPY 3+A,61,19*A+1,80,19*(A+1)+1:DEPL=1
    2D_Target_is 20+A : 2D_Image_Paste 3+A,0,0 : 2D_Target_is 1
Return

Boucle:
show 0:hide 1002
  If pause = 1 then return
  timer_off 10
  N = N+1 :  A = N
  IF A <= N_Monstres
    L = RND(10)
    If L > 6
      gosub Change_dir
    Else
      gosub Test_dirM
      if depl=0 Then gosub Change_dir
    End_If
    Top 20+A,Ym(A)*taille_case : Left 20+A,Xm(A)*taille_case : Depl=0 :' Affiche le monstre
  End_If

  IF N= VM THEN N=0

  For I=1 To N_Monstres :  If X=XM(I) and Y=YM(I) then gosub Collision : Next I
  If M = 0 Then Message "Niveau vidé, appuyez pour en faire un autre...": goto relance
  traite = 0 : timer_on 10
Return

Touche:
if traite = 0
  traite = 1 : touche_enfoncee = key_down_code
  ' Gauche
  If touche_enfoncee = 37 Then If X > 2 Then If Etat(Y,X-1)<2 Then X=X-1 : hide n_joueur : n_joueur = 51
  ' Droite
  If touche_enfoncee = 39 Then If X < (Nb_Cases_ligne-1) Then If Etat(Y,X+1)<2 Then X=X+1: hide n_joueur : n_joueur = 52
  ' Haut
  If touche_enfoncee = 38 Then If Y > 2 Then  If Etat(Y-1,X)<2 Then Y=Y-1: hide n_joueur : n_joueur = 53
  ' Bas
  If touche_enfoncee = 40 Then If Y < (Nb_lignes-1) Then If Etat(Y+1,X)<2 Then Y=Y+1: hide n_joueur : n_joueur = 54
  ' Q ou Echap pour quitter
  If touche_enfoncee = 88 or touche_enfoncee = 27 Then goto FIN
  ' P pour Pause
  If touche_enfoncee =  80 Then If Pause = 0 then Pause = 1 :else: Pause = 0

  For I = 1 TO N_Monstres
    If X=XM(I) and Y=YM(I) then gosub Collision
  Next I

  If Etat(Y,X) = 1 Then Score=Score +10 : Etat(Y,X) = 0 : M=M-1 : Caption 13, "Score : " + RIGHT$("00000"+STR$(Score),5)
  Hide pastilles(Y,X)
  Top n_joueur,Y*taille_case : Left n_joueur,X*taille_case : show n_joueur : ' Affiche le joueur
End_if
Return

Collision:
  Goto fin
Return

Charge_Niveau:
 M = 0
 Hide 1 : 2D_Target_is 1 :  Height 1, (Nb_Lignes+8)*taille_case : Width 1, (Nb_Cases_ligne+2)*taille_case
 For L = 1 TO Nb_Lignes
  Read A$
  For N = 1 TO Nb_Cases_ligne
    If Mid$(A$,N,1)="1"
        2D_Pen_Color 0,0,0 :  2D_Fill_Color 250,100,0:' couleur des parois du Labyrinthe
        2D_Rectangle N*taille_case+1,L*taille_case+1,(N+1)*taille_case-1, (L+1)*taille_case-1
        Etat(L,N)=2
    Else
        If N=2 and L=2
          ' On ne mets pas de pastille à la position de départ
        Else
          Etat(L,N)=1 : M = M+1
          Show Pastilles(L,N)
        End_If
    End_If
  Next N
 Next L
 2D_Fill_color 0,0,0 : 2D_Pen_Color 255,0,0
 2D_Rectangle taille_case, (Nb_Lignes+2)*taille_case, (Nb_Cases_ligne+2)*taille_case- taille_case, (Nb_Lignes+8)*taille_case
 Alpha 12 : Left 12, 60 : Top 12, (Nb_Lignes+5.5)*taille_case : font_bold 12
 font_name 12, "Courier" : Height 12, taille_case+3: Font_size 12,taille_case - 5 : Font_color 12,200,200,0
 Caption 12, "- VORACE -  (Version Panoramic Version 0.9.23)"
 Alpha 13 : Left 13,60  : Top 13, (Nb_Lignes+3)*taille_case : font_name 13, "Courier": font_size 13,taille_case -5
font_bold 13: Font_color 13,255,255,0: Caption 13, "Score : 00000"
Show 1
Return

Fin:
 timer_off 10
 Message$ =  "*********************" +LF$+ "*  Partie terminée  *" +LF$+ "*********************"
 Message$ = Message$ +LF$ + LF$ + "Score: "+ STR$ (Score)
 Message$ = Message$ +LF$ + LF$ + "Rejouer ?"
 if Message_confirmation_yes_no (Message$) = 1 then Score = 0 : goto Relance
fin2:
terminate

A+

EDIT: salut Papydal on s'est croisé. fait attention au nom de l'image, il faut quel s'appelle pareil dans le code
Revenir en haut Aller en bas
papydall

papydall


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

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 11:49

J'ai enregistré l'image sous "SpritesVoraceNoir.jpg" et j'ai rectifié l'extension .bmp dans le programme et ça a marché !!
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 12:10

Tu veux dire que tu as écris "SpritesVoraceNoir.jpg" dans le code ?
Revenir en haut Aller en bas
papydall

papydall


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

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 12:26

Parfaitement, Jean Claude.
J'ai bien écrit dans le code : SpritesVoraceNoir.jpg"
D'ailleurs j'ai constaté (en inscrivant une extension quelconque ) que PANORAMIC accepte les 2 extensions : BMP ou JPG en affichant le message d'erreur suivant :
File extension must be .BMP or .JPG
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Severin




Nombre de messages : 547
Localisation : Braunschweig / Germany
Date d'inscription : 13/12/2010

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 13:24

Hallo Panoramic's

welches Format ist besser BMP oder JPG ?
Vorteile / Nachteile

Ich habe mir ein Konvertierungsprogramm runter geladen.
Bevor ich alle meine Bilder konvertiere, meine Frage.

Danke
Severin der Sonntagsprogrammierer

@ Jack
Sind noch andere Bildformate in Zukunft vorgesehen ?


Salut Panoramic's

quel format est mieux BMP ou JPG ?
Avantages/désavantages

Je me suis chargé un programme de conversion.
Avant que je ne convertisse tout mes images, ma question.

Remerciement
Severin des programmeurs de dimanche

@ Jack
Encore d'autres formats photo sont-ils prévus à l'avenir ?
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 14:42

Format JPG
Avantages: faible taille (taux de compression important)
Inconvenients: Dégradation de la qualité de l'image (modification des couleurs)

Format BMP:
Avantages: Aucune perte de qualité de l'image
Inconvénients: Taille des fichiers importante
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyDim 18 Mar 2012 - 19:12

Merci à Papydall, je ne me rappelais plus que Panoramic supportait les 2 formats.

Merci a Jicehel pour l'info sur ces formats

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 EmptyLun 19 Mar 2012 - 0:19

Bon, mon internet est toujours aussi pourri, j'ai pu enfin me reconnecter.
Bon, ce soir, j'ai commencé un éditeur de niveau.
Je vous donne le début (on clique sur l'icone puis sur la grille du niveau).
Plus qu'à finaliser plus tard ^^
Code:
LABEL Clic, Fin, Desgril, Desoc

DIM Objet%, Icone1%, P_Travail%, P_Icones%, Image%, Grille%
DIM Ligne%, Colonne%, i%, j%
DIM Prem_Ligne%, Nb_Lignes%, Nb_Colonnes% : Prem_Ligne%=6 : Nb_Lignes%=3 : Nb_Colonnes%=4
DIM PAS% : PAS%=20
DIM Nb_C_niveau%,Nb_L_niveau% : Nb_C_niveau% = 32 : Nb_L_niveau% = 20
DIM Niveaux%(Nb_L_niveau%,Nb_C_niveau%)
DIM Selection%, xcl%, ycl%
COLOR 0,192,255,255: WIDTH 0,800: FONT_BOLD 0

Objet%=1 : Selection%=1
P_Travail% = Objet% : objet%=objet%+1
Picture P_Travail% : Hide P_Travail%: TOP P_Travail%, -2000: Height P_Travail%,160
Width P_Travail%,80 : File_load P_Travail%,"spritesvoracenoir.bmp"
P_Icones% = objet%: PICTURE P_Icones%: : TOP P_Icones%, 20: LEFT P_Icones%,10
WIDTH P_Icones%, 100: HEIGHT P_Icones%, 76
2D_Target_is P_Icones% : objet%=objet%+1
Image%=objet%  : objet%=objet%+1: Image Image%
Icone1%=objet% : objet%=objet%+1
2D_Fill_color 0,0,0
FOR Ligne%= (Prem_Ligne% - 1) TO (Prem_Ligne% + Nb_Lignes%  - 2)
  FOR Colonne% = 0 TO 3
    Picture Objet% : LEFT Objet%,14+Colonne%*(PAS%+4) : TOP Objet%, 24+(Ligne%-5)*(PAS%+4) : WIDTH Objet%, 20
    Height Objet%, 20 : 2D_target_is objet% : On_click Objet%, Clic : 2D_Rectangle 0,0,20,20
    2D_Target_Is P_Travail% : 2D_IMAGE_COPY  Image%,Colonne%*20,19*Ligne%+1,(Colonne%+1)*20,19*(Ligne%+1)+1
    2D_Target_Is Objet% : 2D_IMAGE_PASTE Image%,0, 0 : Objet%=Objet%+1
  Next Colonne%
Next ligne%

Grille% = Objet% : objet%=objet%+1 : Picture Grille%
TOP Grille%,20: LEFT Grille%, 130: ON_CLICK Grille%, Desoc
GOSUB Desgril

END

Desgril:
WIDTH  Grille%, Nb_C_niveau% * pas% : HEIGHT Grille%, Nb_L_niveau% * pas%
2D_TARGET_IS Grille%: 2D_PEN_COLOR 128,128,128: 2D_RECTANGLE 0,0,WIDTH(Grille%),HEIGHT(Grille%)
FOR j% = 0 TO HEIGHT(Grille%) STEP pas%: 2D_LINE 0,j%,WIDTH(Grille%),j% : NEXT j%
FOR i% = 0 TO WIDTH(Grille%)  STEP pas%: 2D_LINE i%,0,i%,HEIGHT(Grille%): NEXT i%
2D_PEN_COLOR 255,128,255: 2D_LINE 0,HEIGHT(Grille%)/2,WIDTH(Grille%),HEIGHT(Grille%)/2
2D_LINE WIDTH(Grille%)/2,0,WIDTH(Grille%)/2,HEIGHT(Grille%)
RETURN

Desoc:
xcl% = INT(MOUSE_X_POSITION(Grille%)/pas%): ycl% = INT(MOUSE_Y_POSITION(Grille%)/pas%)
Niveaux%(ycl%,xcl%)=Selection%
2D_Target_Is Icone1%+Selection% : 2D_IMAGE_COPY  Image%,0,0,20,20
2D_Target_Is Grille%: 2D_IMAGE_PASTE  Image%, xcl%*pas%,ycl%*pas%
RETURN


Clic:
2D_Target_is P_Icones%
i%=int((Selection%-1) / 4) : j%=mod(Selection%-1,4)
' caption 0, str$(Selection%) +";"+str$(i%)+";"+str$(j%)
2D_PEN_COLOR 255,255,255: 2D_RECTANGLE 2+j%*(PAS%+4), 2+i%*(PAS%+4),26+j%*(PAS%+4), 26+i%*(PAS%+4)
wait 1
Selection% = Icone1%
FOR Ligne%= 1 TO Nb_Lignes%
  FOR Colonne% = 1 TO 4
    Selection% = Selection% + 1
    if Selection% > Nb_Lignes%*4+Icone1%+1 Then Selection%= Nb_Lignes%*4+Icone1%+1
    IF CLICKED(Selection%) = 1
      Colonne% =  3 :  Ligne%= Prem_Ligne% + Nb_Lignes%  - 2
    END_IF
  Next Colonne%
Next ligne%
Selection% = Selection% - Icone1% -1
i%=int((Selection%-1) / 4) : j%=mod(Selection%-1,4)
2D_PEN_COLOR 255,0,0: 2D_RECTANGLE 2+j%*(PAS%+4), 2+i%*(PAS%+4),26+j%*(PAS%+4), 26+i%*(PAS%+4)
Return

Fin:
Terminate
Revenir en haut Aller en bas
Contenu sponsorisé





Vorace - une autre adaptation depuis l'Hector - Page 2 Empty
MessageSujet: Re: Vorace - une autre adaptation depuis l'Hector   Vorace - une autre adaptation depuis l'Hector - Page 2 Empty

Revenir en haut Aller en bas
 
Vorace - une autre adaptation depuis l'Hector
Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» Fichier zip depuis Panoramic
» Objets depuis un fichier
» lire depuis un raccourcis.
» Ouvrir la corbeille depuis Panoramic
» Récupérer un source depuis un executable

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: