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.
Débarquement V3 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Débarquement V3 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Débarquement V3 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Débarquement V3 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Débarquement V3 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Débarquement V3 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Débarquement V3 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Débarquement V3 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Débarquement V3 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Débarquement V3 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Débarquement V3 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Débarquement V3 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Débarquement V3 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Débarquement V3 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Débarquement V3 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
-55%
Le deal à ne pas rater :
Friteuse sans huile – PHILIPS – Airfryer HD9200/90 Série 3000
49.99 € 109.99 €
Voir le deal

 

 Débarquement V3

Aller en bas 
4 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Jean Claude

Jean Claude


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

Débarquement V3 Empty
MessageSujet: Débarquement V3   Débarquement V3 EmptyMer 10 Juin 2015 - 11:08

Vous trouverez sur mon Webdav, dans le dossier "jeu_en_2D" le zip "débarquement V3"

Après avoir dé-zipper, lancez deb3.bas ou deb3.exe, ensuite cliquez sur mission dans le menu, pour prendre les infos.
Cette version fonctionne sans bug (connu de ma part) et elle est jouable.

Le niveau est facile (je gagne pratiquement toujours)

Bonne bataille aux intéressés.

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyMer 10 Juin 2015 - 17:13

J'ai vu ton post, je ne pourrais pas tester avant ce soir. A ma nouvelle place, je suis juste à côté du DSI alors ce n'est pas le genre de tests que je peu effectuer dans de bonnes conditions pour ma santé morale et ma gestion de carrière Very Happy
Par contre, j'ai une grande confiance dans l'interet de ton jeu donc je lme testerais très certainement ce soir sauf en cas d'impératif famillial (ça arrive de temps en temps)
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyMer 10 Juin 2015 - 18:25

Heu... ! c'est quoi un DSI ? Directeur pour D je suppose, mais le reste ???.
N'importe comment, inutile de risquer sa carrière sur un petit jeu en 2D. Very Happy

Sur ce jeu là, je vais arrêter, sauf peut-être une version plus rapide, pour ne pas se lasser trop vite.

J'ai une nouvelle idée, je ne sais pas encore si elle aboutira, mais je commence à en écrire le scénario.
Et cette fois, ce ne sera pas la guerre...

N'hésite pas à critiquer (dans le sens positif du terme, analyser, juger... Comme tu le fait habituellement) Very Happy

A+
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyMer 10 Juin 2015 - 18:52

Voici la même version, mais le déplacement des soldats est plus rapide, ça raccourci bien le temps d'une partie.

deb3.bas
Code:
' Débarquement
hide 0
menu() : dim_label() : piste()
' règlages divers
niveau%=2 : DistanceTir%=200
NbBouleBatBG%=10 : NbBouleBatBD%=10 : NBbouletCanHG%=10 : NBbouletCanHD%=10
show 0 : on_close 0,fin
start()
END
rem ============================================================================
sub start()
nbtour%=nbtour%+1
    if even(nbtour%)=0 then tour$="ami"
    if even(nbtour%)=1 then tour$="ennemi"
    caption 0,"|  Tour => "+str$(nbtour%)+"  |  Soldats amis: "+str$(NbSoldatA%)+"  |  Soldats ennemis: "+str$(NbSoldatE%)+"  |"
    if NbSoldatA%<1 then victoireE()
    if NbSoldatE%<1 then victoireA()
    if tour$="ami"
      file_load picture1%,"Feu_Vert.bmp" : file_load picture2%,"Ami.bmp"
      caption alpha1%,"C'est votre tour" : tour_ami()
    end_if
    if tour$="ennemi"
      off_click scene_2d% : file_load picture1%,"Feu_Rouge.bmp" : file_load picture2%,"Ennemi.bmp"
      caption alpha1%,"Attaque Ennemi" : tour_ennemi()
    end_if
end_sub
rem ============================================================================
sub victoireA()
    if NbSoldatA%>9 then message "BRAVO ! vous avez gagné, largement !": pause 1000 : arret() : terminate
    if NbSoldatA%>5 and NbSoldatA%<10 then message "BRAVO ! mais beaucoup de dégâts.": pause 1000 : arret() : terminate
    if NbSoldatA%>0 and NbSoldatA%<6 then message "BRAVO ! vous avez gagné, mais à quel prix !": pause 1000 : arret() : terminate
end_sub
' ------------------------------------------------------------------------------
sub victoireE()
    message "L'ennemi vous a vaincu... Vous allez devoir recommencer" : pause 1000 : arret() : terminate
end_sub
rem ============================================================================
sub tour_ennemi()
    Select_Actor_E()
    if NumSpriteE%=0 then caption alpha1%,"L'ennemi passe son tour" : start() : exit_sub
    Clear_Variables_EL(nb_V%) : EXPLODE("|",nom_sprite$(NumSpriteE%)) : Incremente_Variables_EL(Dlist_tri%)
    type_spriteE$=el$(2)
    if type_spriteE$="soldatE"
      caption alpha1%,"Mouvement d'un soldat ennemi..."
      Tir_Soldat_Ennemi(NumSpriteE%) : start() : exit_sub
    end_if
    if type_spriteE$="canonEG"
      if NBbouletCanHG%>0
          caption alpha1%,"Bombardement du canon de gauche."
          tir_canon(NumSpriteE%,type_spriteE$,flammeHG%,bouletHG%,36,42) : start() : exit_sub
      else
          caption alpha1%,"L'ennemi passe son tour" : start() : exit_sub
      end_if
    end_if
    if type_spriteE$="canonED"
      if NBbouletCanHD%>0
          caption alpha1%,"Bombardement du canon de droite."
          tir_canon(NumSpriteE%,type_spriteE$,flammeHD%,bouletHD%,546,42) : start() : exit_sub
      else
          caption alpha1%,"L'ennemi passe son tour" : start() : exit_sub
      end_if
    end_if
end_sub
' ------------------------------------------------------------------------------
sub Tir_Soldat_Ennemi(NSA%)
dim_local xa,ya,xd,yd,my%,mx%
    ' définir un point de déplacement
    ' pour les premier tours allez en avant
      mx%=width(scene_2d%) : my%=(height(scene_2d%)-150)
      repeat : xa=int(rnd(mx%)): until xa>0 and xa<mx% : repeat : ya=int(rnd(my%)): until ya>0 and ya<(my%+100)
    ' enregistrer le dernier my% comme base de départ pour les premiers tours (empêche le soldat de reculer)
      if nbtour%<40
        if count(Dlist_tri4%)>0 then my%=val(item_read$(Dlist_tri4%,1))+50
        clear Dlist_tri4% : item_add Dlist_tri4%,my%
      end_if
    ' position de la balle
      sprite_position bal%,sprite_x_position(NSA%),sprite_y_position(NSA%)
      xd=sprite_x_position(bal%) : yd=sprite_y_position(bal%) :' position de départ
    ' déplacement
      Move_SoldatE(NSA%,xa,ya,xd,yd,50)
    ' recheche d'une cible à proximité
      Search_Cible_E(NSA%)
      if cible%=0
        exit_sub
      else
        ' tir
        sprite_show bal% : xd=sprite_x_position(NSA%) : yd=sprite_y_position(NSA%) :' position de départ
        sprite_file_load NSA%,"soldatET.bmp" : sprite_position NSA%,xd,yd : pause 200
        sprite_file_load NSA%,"soldatE.bmp" : sprite_position NSA%,xd,yd
        xa=sprite_x_position(cible%) : ya=sprite_y_position(cible%)
        Move_And_Test_Sprite(bal%,xa,ya,xd,yd+10,50,"ami"):' vit%(100) + => moins rapide et - => plus rapide
        sprite_hide bal%
        sprite_show boum% : sprite_position boum%,sprite_x_position(bal%),sprite_y_position(bal%)
        pause 200 : sprite_hide boum%
        sprite_position boum%,-50,-50 : sprite_position bal%,-100,-100  : ' déplacer hors de la vue
        if sprite_collisionsp%<>0
            caption alpha1%,"Ce soldat est une plaie !"
            Kill_Target_And_Updates(sprite_collisionsp%)
        else
            if sprite_collisionsp%=0 and PrecisionTir%<>10 then caption alpha1%,"A coté ! "
            if sprite_collisionsp%=0 and PrecisionTir%=10 then caption alpha1%,"A coté ! "
        end_if
      end_if
end_sub
' ------------------------------------------------------------------------------
sub Search_Cible_E(NSA%)
    ' retourne cible%
dim_local i%,pxa,pya,pxmax,pymax,pxmin,pymin,pxc,pyc
    ' définition de la zone de tir
  if nbtour%>60 then elarg=elarg+1
      pxa=sprite_x_position(NSA%) : pya=sprite_y_position(NSA%) :' position HG du soldat
      pxmax=pxa+50+elarg : pxmin=pxa-(50+elarg) :' position en x 50 de chaque coté
      pymax=pya+60+elarg : pymin=pya-(60+elarg) :' position en y devant
      if pxmax>width(scene_2d%) then pxmax=width(scene_2d%)-10
      if pxmin<0 then pxmax=10
      if pymax>(height(scene_2d%)-200) then pymax=(height(scene_2d%)-150)
      if pymin<0 then pymax=10
    ' recheche d'une cible à l'intérieur du carré
      cible%=0
      for i%=13 to 32
          if sprites(i%,4)=1 and sprites(i%,2)=1
            pxc=sprite_x_position(i%):pyc=sprite_y_position(i%)
            if pxc>pxmin and pxc<pxmax and pyc>pymin and pyc<pymax
              cible%=i%:exit_for
            end_if
          end_if
      next i%
end_sub
' ------------------------------------------------------------------------------
sub Move_SoldatE(nsp%,pxa,pya,pxd,pyd,nbI%)
  ' Déplace le sprite nsp% des coordonées de départ (pxd,pyd) vers l'arrivée (pxa,pya)
    dim_local i%,i2%,deltaX,deltaY
  ' vérification zone libre
    Verif_Place(nsp%) : if cible%<>0 then pxa=pxa+15:pya=pya+25
  ' calcul du déplacement (nbI%=nombre d'images à afficher)
    deltaX = (pxa - pxd)/nbI% : deltaY = (pya - pyd)/ nbI%
  ' déplacement du soldat
    for i%=1 to nbI%-int(nbI%/3)
        pause 50
        sprite_file_load nsp%,"SoldatE.bmp"
        sprite_position nsp%,pxd + int(i%*deltaX),pyd + int(i% * deltaY) : display
        pause 50
        sprite_file_load nsp%,"SoldatED.bmp"
        sprite_position nsp%,pxd + int(i%*deltaX),pyd + int(i% * deltaY) : display
    next i%
  end_sub
' ------------------------------------------------------------------------------
sub tir_canon(NSA%,TypeNSA$,NumFlam%,NumBoulet%,poxb%,poyb%)
dim_local xa,ya,xd,yd,my%,mx%
    ' définir un point de tir
    if TypeNSA$="canonEG"
      mx%=width(scene_2d%) : my%=height(scene_2d%)
      repeat : xa=int(rnd(mx%)): until xa>250 and xa<mx% : repeat : ya=int(rnd(my%)): until ya>350 and ya<my%
    end_if
    if TypeNSA$="canonED"
      mx%=width(scene_2d%) : my%=height(scene_2d%)
      repeat : xa=int(rnd(mx%)): until xa>0 and xa<mx% and xa<250: repeat : ya=int(rnd(my%)): until ya>350 and ya<my%
    end_if
    Search_Cible_E(NSA%)
    ' déplacement du boulet vers la cible
    sprite_show NumFlam% : pause 200 : sprite_hide NumFlam%
    sprite_show NumBoulet% : xd=sprite_x_position(NumBoulet%) : yd=sprite_y_position(NumBoulet%) :' position de départ
    Move_And_Test_Sprite(NumBoulet%,xa,ya,xd,yd,100,"ami"):' vit%(100) + => moins rapide et - => plus rapide
    sprite_hide NumBoulet%
    if NumBoulet%=bouletHG% then NBbouletCanHG%=NBbouletCanHG%-1
    if NumBoulet%=bouletHD% then NBbouletCanHD%=NBbouletCanHD%-1
    sprite_show boum% : sprite_position boum%,sprite_x_position(NumBoulet%),sprite_y_position(NumBoulet%)
    pause 200 : sprite_hide boum%
    sprite_position boum%,-50,-33    : ' déplacer hors de la vue
    sprite_position NumBoulet%,poxb%,poyb% : ' remettre à l'emplacement d'origine
        if sprite_collisionsp%<>0
          caption alpha1%,"Misère ! l'ennemi gagne sur ce tour."
          Kill_Target_And_Updates(sprite_collisionsp%)
        else
          if sprite_collisionsp%=0 and PrecisionTir%<>10 then caption alpha1%,"A coté ! "
          if sprite_collisionsp%=0 and PrecisionTir%=10 then caption alpha1%,"A coté ! "
        end_if
end_sub
' ------------------------------------------------------------------------------
sub Select_Actor_E()
dim_local i%,i2%
    if nbtour%=2 or nbtour%=6 then NumSpriteE%=53 : exit_sub
    if nbtour%=4 or nbtour%=8 then NumSpriteE%=54 : exit_sub
    ' Comptage et stocage des numéros de sprites ennemis vivants et visibles
    n%=0 : clear Dlist_tri2%
    for i%=33 to 54
        if sprites(i%,4)=1 and sprites(i%,2)=1 then item_add Dlist_tri2%,i%
    next i%
    pas%=0
    repeat
    pas%=pas%+1 :i2%=int(rnd(count(Dlist_tri2%))+1)
    if pas%>500 then i2%=0 : exit_repeat
    until i2%>0 and i2%<(count(Dlist_tri2%)+1)
    if pas%<501
      NumSpriteE%=item_read$(Dlist_tri2%,i2%)
    else
      NumSpriteE%=0
    end_if
end_sub
rem ============================================================================
sub tour_ami()
    on_click scene_2d%,select_actor
end_sub
' ------------------------------------------------------------------------------
select_actor:
  What_Srite_Is_Clicked()
  if NumSpriteClicked%=0 then start() : return
  off_click scene_2d%
  NumSpriteA% = NumSpriteClicked%
  Clear_Variables_EL(nb_V%) : EXPLODE("|",nom_sprite$(NumSpriteA%)) : Incremente_Variables_EL(Dlist_tri%)
  if el$(2)="BateauG"
    if NbBouleBatBG%>0
        tir_bateau(NumSpriteA%,"BateauG",flammeBG%,bouletBG%,62,488) : start() : return
    else
        message "Ce bateau n'a plus de munition" : start() : return
    end_if
  end_if
  if el$(2)="BateauD"
    if NbBouleBatBD%>0
        tir_bateau(NumSpriteA%,"BateauD",flammeBD%,bouletBD%,536,488) : start() : return
    else
        message "Ce bateau n'a plus de munition" : start() : return
    end_if
  end_if

  if el$(2)="barge"
    Barge(NumSpriteA%) : start() : return
  end_if

  if el$(2)="soldatA"
    ' déplacement aléatoire et tir (avec recheche d'une cible à proximité mais en face)
    Tir_Soldat_Ami(NumSpriteA%): start() : return
  end_if
start()
return
' ------------------------------------------------------------------------------
sub Tir_Soldat_Ami(NSA%)
dim_local xa,ya,xd,yd,my%,mx%
    ' définir un point de déplacement
    ' pour les premier tours allez en avant
      if nbtour%<20
        mx%=width(scene_2d%) : my%=(height(scene_2d%)-350)
        repeat : xa=int(rnd(mx%)): until xa>0 and xa<mx% : repeat : ya=int(rnd(my%)): until ya>0 and ya<(my%-50)
      else
        mx%=width(scene_2d%) : my%=(height(scene_2d%)-250)
        repeat : xa=int(rnd(mx%)): until xa>0 and xa<mx% : repeat : ya=int(rnd(my%)): until ya>0 and ya<my%
      end_if
    ' enregistrer le dernier my% comme base de départ pour les premiers tours (empêche le soldat de reculer)
      if nbtour%<20
        if count(Dlist_tri3%)>0 then my%=val(item_read$(Dlist_tri3%,1))-50
        clear Dlist_tri3% : item_add Dlist_tri3%,my%
      end_if
    ' position de la balle
      sprite_position bal%,sprite_x_position(NSA%),sprite_y_position(NSA%)
      xd=sprite_x_position(bal%) : yd=sprite_y_position(bal%) :' position de départ
    ' déplacement
      Move_SoldatA(NSA%,xa,ya,xd,yd,50)
    ' recheche d'une cible à proximité
      Search_Cible(NSA%)
      if cible%=0
        exit_sub
      else
        ' tir
        sprite_show bal% : xd=sprite_x_position(NSA%) : yd=sprite_y_position(NSA%) :' position de départ
        sprite_file_load NSA%,"soldatAT.bmp" : sprite_position NSA%,xd,yd : pause 200
        sprite_file_load NSA%,"soldatA.bmp" : sprite_position NSA%,xd,yd
        xa=sprite_x_position(cible%) : ya=sprite_y_position(cible%)
        Move_And_Test_Sprite(bal%,xa,ya,xd,yd,50,"ennemi"):' vit%(100) + => moins rapide et - => plus rapide
        sprite_hide bal%
        sprite_show boum% : sprite_position boum%,sprite_x_position(bal%),sprite_y_position(bal%)
        pause 200 : sprite_hide boum%
        sprite_position boum%,-50,-50 : sprite_position bal%,-100,-100  : ' déplacer hors de la vue
        if sprite_collisionsp%<>0
            caption alpha1%,"Ce soldat est un héros !"
            Kill_Target_And_Updates(sprite_collisionsp%)
        else
            if sprite_collisionsp%=0 and PrecisionTir%<>10 then caption alpha1%,"A coté ! "
            if sprite_collisionsp%=0 and PrecisionTir%=10 then caption alpha1%,"A coté ! "
        end_if
      end_if
end_sub
' ------------------------------------------------------------------------------
sub Search_Cible(NSA%)
    ' retourne cible%
dim_local i%,pxa,pya,pxmax,pymax,pxmin,pymin,pxc,pyc
    if nbtour%>50 then elarg=elarg+1
    ' définition de la zone de tir
      pxa=sprite_x_position(NSA%) : pya=sprite_y_position(NSA%) :' position HG du soldat
      pxmax=pxa+50+elarg : pxmin=pxa-(50+elarg) :' position en x 50 de chaque coté
      pymax=pya+20+elarg : pymin=pya-(70+elarg) :' position en y devant
      if pxmax>width(scene_2d%) then pxmax=width(scene_2d%)-10
      if pxmin<0 then pxmax=10
      if pymax>(height(scene_2d%)-250) then pymax=(height(scene_2d%)-260)
      if pymin<0 then pymax=10
    ' recheche d'une cible à l'intérieur du carré
      cible%=0
      for i%=33 to 52
          if sprites(i%,4)=1 and sprites(i%,2)=1
            pxc=sprite_x_position(i%):pyc=sprite_y_position(i%)
            if pxc>pxmin and pxc<pxmax and pyc>pymin and pyc<pymax
                cible%=i%:exit_for
            end_if
          end_if
      next i%
end_sub
' ------------------------------------------------------------------------------
sub Move_SoldatA(nsp%,pxa,pya,pxd,pyd,nbI%)
  ' Déplace le sprite nsp% des coordonées de départ (pxd,pyd) vers l'arrivée (pxa,pya)
    dim_local i%,i2%,deltaX,deltaY
  ' vérification zone libre
    Verif_Place(nsp%) : if cible%<>0 then pxa=pxa+15:pya=pya+25
  ' calcul du déplacement (nbI%=nombre d'images à afficher)
    deltaX = (pxa - pxd)/nbI% : deltaY = (pya - pyd)/ nbI%
  ' déplacement du soldat
    for i%=1 to nbI%-int(nbI%/3)
        pause 50
        sprite_file_load nsp%,"SoldatA.bmp"
        sprite_position nsp%,pxd + int(i%*deltaX),pyd + int(i% * deltaY) : display
        pause 50
        sprite_file_load nsp%,"SoldatAD.bmp"
        sprite_position nsp%,pxd + int(i%*deltaX),pyd + int(i% * deltaY) : display
    next i%
  end_sub
' ------------------------------------------------------------------------------
sub Verif_Place(NSA%)
    ' retourne cible%
dim_local i%,pxa,pya,pxmax,pxmin,pymin,pxc,pyc
    ' définition de la zone
      pxa=sprite_x_position(NSA%) : pya=sprite_y_position(NSA%) :' position HG du soldat
      pxmax=pxa+10 : pxmin=pxa-10 :' position en x 5 de chaque coté
      pymin=pya+30
      if pxmax>width(scene_2d%) then pxmax=width(scene_2d%)-10
      if pxmin<0 then pxmax=10
    ' recheche d'une cible à l'intérieur du carré
      cible%=0
      for i%=1 to 54
          pxc=sprite_x_position(i%):pyc=sprite_y_position(i%)
          if pxc>pxmin and pxc<pxmax and pyc<pymin
            cible%=i%:exit_for
          end_if
      next i%
end_sub
' ------------------------------------------------------------------------------
sub tir_bateau(NSA%,TypeNSA$,NumFlam%,NumBoulet%,poxb%,poyb%)
dim_local xa,ya,xd,yd,my%,mx%
    ' définir un point de tir
    if TypeNSA$="BateauG"
      mx%=width(scene_2d%) : my%=(height(scene_2d%)-200)
      repeat : xa=int(rnd(mx%)): until xa>0 and xa<mx% and xa>200: repeat : ya=int(rnd(my%)): until ya>0 and ya<my%
    end_if
    if TypeNSA$="BateauD"
      mx%=width(scene_2d%) : my%=(height(scene_2d%)-200)
      repeat : xa=int(rnd(mx%)): until xa>0 and xa<mx% and xa<200: repeat : ya=int(rnd(my%)): until ya>0 and ya<my%
    end_if
    ' déplacement du boulet vers la cible
    sprite_show NumFlam% : pause 200 : sprite_hide NumFlam%
    sprite_show NumBoulet% : xd=sprite_x_position(NumBoulet%) : yd=sprite_y_position(NumBoulet%) :' position de départ
    Move_And_Test_Sprite(NumBoulet%,xa,ya,xd,yd,100,"ennemi"):' vit%(100) + => moins rapide et - => plus rapide
    sprite_hide NumBoulet%
    if NumBoulet%=bouletBG% then NbBouleBatBG%=NbBouleBatBG%-1
    if NumBoulet%=bouletBD% then NbBouleBatBD%=NbBouleBatBD%-1
    sprite_show boum% : sprite_position boum%,sprite_x_position(NumBoulet%),sprite_y_position(NumBoulet%)
    pause 200 : sprite_hide boum%
    sprite_position boum%,-50,-33    : ' déplacer hors de la vue
    sprite_position NumBoulet%,poxb%,poyb% : ' remettre à l'emplacement d'origine
        if sprite_collisionsp%<>0
          caption alpha1%,"Bravo ! Joli tir ! "
          Kill_Target_And_Updates(sprite_collisionsp%)
        else
          if sprite_collisionsp%=0 and PrecisionTir%<>10 then caption alpha1%,"A coté ! "
          if sprite_collisionsp%=0 and PrecisionTir%=10 then caption alpha1%,"A coté ! "
        end_if
end_sub
rem ============================================================================
sub Move_And_Test_Sprite(nsp%,pxa,pya,pxd,pyd,nbI%,camp$)
  ' Déplace le sprite nsp% des coordonées de départ (pxd,pyd) vers l'arrivée (pxa,pya)
    dim_local i2%,deltaX,deltaY,pxst%,pyst%,pxb%,pyb%
    sprite_position nsp%,pxd,pyd
  ' calcul du déplacement (nbI%=nombre d'images à afficher)
    deltaX = (pxa - pxd)/nbI% : deltaY = (pya - pyd)/ nbI%
  ' déplacement du boulet et détection collision
    sprite_collisionsp%=0
    for i2%=1 to nbI%
        sprite_position nsp%,pxd + int(i2%*deltaX),pyd + int(i2% * deltaY) : pause 1
      ' Tester_Si_Collision
        pxb%=sprite_X_position(nsp%)+sprites(nsp%,0) :pyb%=sprite_Y_position(nsp%)+sprites(nsp%,1)
        sprite_collisionsp%=0
        if camp$="ennemi" then verif_if_collide_with_ennemi(pxb%,pyb%)
        if camp$="ami" then verif_if_collide_with_ami(pxb%,pyb%)
    next i2%
end_sub
' ------------------------------------------------------------------------------
sub verif_if_collide_with_ami(lpx%,lpy%)
    dim_local i%,lpxst%,lpyst%
    for i%=32 to 1 step -1
        lpxst%=sprite_X_position(i%) : lpyst%=sprite_Y_position(i%)
        if lpx%>=lpxst% and lpx%<(lpxst%+sprites(i%,0)) and lpy%>=lpyst% and lpy%<(lpyst%+sprites(i%,1))
          if sprites(i%,4)<>0 and sprites(i%,2)<>0
              sprite_collisionsp%=i% : x%=sprite_X_position(i%) :y%=sprite_Y_position(i%)
              exit_sub
          else
              sprite_collisionsp%=0
          end_if
        end_if
    next i%
end_sub
' ------------------------------------------------------------------------------
sub verif_if_collide_with_ennemi(lpx%,lpy%)
    dim_local i%,lpxst%,lpyst%
    for i%=54 to 33 step -1
        lpxst%=sprite_X_position(i%) : lpyst%=sprite_Y_position(i%)
        if lpx%>=lpxst% and lpx%<(lpxst%+sprites(i%,0)) and lpy%>=lpyst% and lpy%<(lpyst%+sprites(i%,1))
          if sprites(i%,4)<>0
              sprite_collisionsp%=i% : x%=sprite_X_position(i%) :y%=sprite_Y_position(i%)
              exit_sub
          end_if
        end_if
    next i%
    sprite_collisionsp%=0
end_sub
' ------------------------------------------------------------------------------
sub Kill_Target_And_Updates(nsp%)
    Clear_Variables_EL(nb_V%) : EXPLODE("|",nom_sprite$(nsp%)) : Incremente_Variables_EL(Dlist_tri%)
    if el$(2)="BateauG" then NbBouleBatBG%=0 : sprites(nsp%,2) = 0  : sprites(nsp%,4) = 0 : sprite_hide nsp%
    if el$(2)="BateauD" then NbBouleBatBD%=0 : sprites(nsp%,2) = 0  : sprites(nsp%,4) = 0 : sprite_hide nsp%
    if el$(2)="barge"
      ' voir si débarquée
      if sprites(nsp%,2) <> 0
          ' tuer les 2 soldats à l'intérieur
          if nsp%=3 then sprites(15,4)=0 : sprite_hide 15 : sprites(16,4)=0 : sprite_hide 16 : NbSoldatA%=NbSoldatA%-2
          if nsp%=4 then sprites(19,4)=0 : sprite_hide 19 : sprites(20,4)=0 : sprite_hide 20 : NbSoldatA%=NbSoldatA%-2
          if nsp%=5 then sprites(23,4)=0 : sprite_hide 23 : sprites(24,4)=0 : sprite_hide 24 : NbSoldatA%=NbSoldatA%-2
          if nsp%=6 then sprites(27,4)=0 : sprite_hide 27 : sprites(28,4)=0 : sprite_hide 28 : NbSoldatA%=NbSoldatA%-2
          if nsp%=7 then sprites(31,4)=0 : sprite_hide 31 : sprites(32,4)=0 : sprite_hide 32 : NbSoldatA%=NbSoldatA%-2
          if nsp%=8 then sprites(13,4)=0 : sprite_hide 13 : sprites(14,4)=0 : sprite_hide 14 : NbSoldatA%=NbSoldatA%-2
          if nsp%=9 then sprites(17,4)=0 : sprite_hide 17 : sprites(18,4)=0 : sprite_hide 18 : NbSoldatA%=NbSoldatA%-2
          if nsp%=10 then sprites(21,4)=0 : sprite_hide 21 : sprites(22,4)=0 : sprite_hide 22 : NbSoldatA%=NbSoldatA%-2
          if nsp%=11 then sprites(25,4)=0 : sprite_hide 25 : sprites(26,4)=0 : sprite_hide 26 : NbSoldatA%=NbSoldatA%-2
          if nsp%=12 then sprites(29,4)=0 : sprite_hide 29 : sprites(30,4)=0 : sprite_hide 30 : NbSoldatA%=NbSoldatA%-2
          sprites(nsp%,2) = 0  : sprites(nsp%,4) = 0 : sprite_hide nsp%
      end_if
    end_if
    if el$(2)="soldatA"
    ' animation si soldat
      sprite_file_load nsp%,"soldatAM.bmp" : sprite_position nsp%,x%,y% : pause 300
      NbSoldatA%=NbSoldatA%-1 : sprites(nsp%,2) = 0  : sprites(nsp%,4) = 0 : sprite_hide nsp%
    end_if
    if el$(2)="canonEG" then NBbouletCanHG%=0 : sprites(nsp%,2) = 0  : sprites(nsp%,4) = 0 : sprite_hide nsp%
    if el$(2)="canonED" then NBbouletCanHD%=0 : sprites(nsp%,2) = 0  : sprites(nsp%,4) = 0 : sprite_hide nsp%
    if el$(2)="soldatE"
    ' animation si soldat
      sprite_file_load nsp%,"soldatEM.bmp" : sprite_position nsp%,x%,y% : pause 300
      NbSoldatE%=NbSoldatE%-1 : sprites(nsp%,2) = 0  : sprites(nsp%,4) = 0 : sprite_position nsp%,-50,-50
    end_if
end_sub
rem ============================================================================
sub menu()
    dim no%
    label mission
    no%=1 : main_menu no%
    no%=2 : sub_menu no% : parent no%,1 : caption no%,"Fichier"

    no%=3 : sub_menu no% : parent no%,1 : caption no%,"Mission" : on_click no%,mission

' création des autres objets
    dim Dlist_tri% : no%=no%+1 : Dlist_tri%=no% : dlist no%
    dim Dlist_tri2% : no%=no%+1 : Dlist_tri2%=no% : dlist no%
    dim Dlist_tri3% : no%=no%+1 : Dlist_tri3%=no% : dlist no%
    dim Dlist_tri4% : no%=no%+1 : Dlist_tri4%=no% : dlist no%
end_sub
' ------------------------------------------------------------------------------
mission:
  execute_wait "Débarquement_V3.txt"
return
rem ============================================================================
sub dim_label()
    dim vit_S% : vit_S%=30
    dim niveau%
    dim PrecisionTir% : PrecisionTir%=niveau% :' précision du tir (plus c'est grand et moins le tir est préci)
    dim DistanceTir% : DistanceTir%=100 :' distance du soldat/cible pour pouvoir tirer (+ = tir plus souvent)
    dim scene_2d%,n%,x%,y%,picture1%,picture2%,picture3%,alpha1%,nbtour%,cible%,pas%
    dim flammeBG%,flammeBD%,flammeHG%,flammeHD%,bouletBG%,bouletBD%,bouletHG%,bouletHD%,boum%,bal%
    dim NbBouleBatBG%,NbBouleBatBD%,NBbouletCanHG%,NBbouletCanHD%,NbObjA%,NbObjE%
    dim NbSoldatA%,NbSoldatE%
    dim tour$
    dim el$(3),nb_V%: ' pour Explode
    dim type_spriteA$            :' identification du type de sprite acteur ami (tireur)
    dim type_spriteE$            :' identification du type de sprite acteur ennemi (tireur)
    dim type_spriteC$            :' identification du type de sprite cible
    dim NumSprite%              :' numéro de sprite
    dim NumDerSprite%            :' numéro du dernier sprite créé
    dim NumSpriteClicked%        :' numéro du sprite trouvé (ou 0 si non trouvé)
    dim NumSpriteA%              :' numéro du sprite trouvé (NumSpriteClicked%) sélectionné pour l'action (ami)
    dim NumSpriteE%              :' numéro du sprite sélectionné aléatoirement pour l'action de l'ennemi
    dim NumSpriteC%              :' numéro du sprite trouvé (NumSpriteClicked%) sélectionné comme cible
    dim sprite_collisionsp%      :' numéro du sprite trouvé dans une collision
    dim elarg                    :' pour augmenter la zone de tir
    ' --------------------------------------------------------------------------
    label fin,select_actor
end_sub
rem ============================================================================
sub piste()
    width 0,620 : height 0,647
    left 0,(screen_x/2)-(width(0)/2) : top 0,(screen_y/2)-(height(0)/2)
    no%=no%+1 : scene_2d%=no% :scene2d no%
    width no%,width(0)-18 : left no%,1 : height no%,height(0)-94 : top no%,0
    file_load scene_2d%,"fond.bmp" : sprite_target_is scene_2d%
    no%=no%+1 : picture1%=no% : picture picture1%
                height no%,32 : width no%,32 : top no%,555 : left no%,2
    no%=no%+1 : picture2%=no% : picture picture2%
                height no%,32 : width no%,32 : top no%,top(picture1%)
                left no%,width(picture1%)+left(picture1%)+10
    no%=no%+1 : alpha1%=no% : alpha alpha1%
                height no%,20 : top no%,top(picture1%)+5 : left no%,width(picture2%)+left(picture2%)+10
                font_bold no% : font_size no%,12
'    no%=no%+1 : picture3%=no% : picture picture3%
'                height no%,32 : width no%,32 : top no%,554 : left no%,width(0)-52
'                file_load picture3%,"Patientez.bmp"
    ' Création des Sptites
    dim sprites(no%+63,4) : ' pour création de 52 sprite(s) avec 3 fonctions
    dim nom_sprite$(no%+63): '  pour identifier le sprite par son nom d'image
' AMIS
    ' les 2 navires de guerre (2)
    Create_Sprite(10,500,"BateauG","ami",50,50,0) : sprites(NumSprite%,2) = 1 :' 1
    Create_Sprite(550,500,"BateauD","ami",50,50,0) : sprites(NumSprite%,2) = 1 :' 2
    ' barges de débarquement (10) (2+10=12)
    x%=-60:y%=450 : for n%=1 to 5 : x%=x%+120 : Create_Sprite(x%,y%,"barge","ami",34,25,0) : sprites(NumSprite%,2) = 1 : next n% :' 3 à 7
    x%=-110:y%=400 : for n%=1 to 5 : x%=x%+120 : Create_Sprite(x%,y%,"barge","ami",34,25,0) : sprites(NumSprite%,2) = 1 : next n% :' 8 à 12
    ' soldats amis (20) (12+20=32)
    x%=-12 : y%=368 : NbSoldatA%=20
              for n%=1 to 2 : x%=x%+19 : Create_Sprite(x%,y%,"soldatA","ami",20,20,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : next n% :' 13 et 14
    x%=x%+13 : for n%=3 to 4 : x%=x%+19 : Create_Sprite(x%,y%,"soldatA","ami",20,20,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : next n% :' 15 et 16
    x%=x%+30 : for n%=5 to 6 : x%=x%+19 : Create_Sprite(x%,y%,"soldatA","ami",20,20,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : next n% :' 17 et 18
    x%=x%+13 : for n%=7 to 8 : x%=x%+19 : Create_Sprite(x%,y%,"soldatA","ami",20,20,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : next n% :' 19 et 20
    x%=x%+30 : for n%=9 to 10 : x%=x%+19 : Create_Sprite(x%,y%,"soldatA","ami",20,20,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : next n% :' 21 et 22
    x%=x%+13 : for n%=11 to 12 : x%=x%+19 : Create_Sprite(x%,y%,"soldatA","ami",20,20,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : next n% :' 23 et 24
    x%=x%+31 : for n%=13 to 14 : x%=x%+19 : Create_Sprite(x%,y%,"soldatA","ami",20,20,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : next n% :' 25 et 26
    x%=x%+13 : for n%=15 to 16 : x%=x%+19 : Create_Sprite(x%,y%,"soldatA","ami",20,20,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : next n% :' 27 et 28
    x%=x%+31 : for n%=17 to 18 : x%=x%+19 : Create_Sprite(x%,y%,"soldatA","ami",20,20,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : next n% :' 29 et 30
    x%=x%+13 : for n%=19 to 20 : x%=x%+19 : Create_Sprite(x%,y%,"soldatA","ami",20,20,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : next n% :' 31 et 32
'    for n%=13 to 32 : sprites(n%,2)=0 :next n%
    NbObjA%=NumSprite% :' 32
' ENNEMIS
    ' soldats Ennemis (20) (20+32=52)
    NbSoldatE%=20
    x%=-20:y%=15 : for n%=1 to NbSoldatE% : x%=x%+30 : Create_Sprite(x%,y%,"soldatE","ennemi",20,20,0) : next n%
    ' canon Ennemis (2) (2+52=54)
    Create_Sprite(5,50,"canonEG","ennemi",40,34,0) :' 53
    Create_Sprite(555,50,"canonED","ennemi",40,34,0) :' 54
    NbObjE%=NumSprite%-NbObjA% :' 54
    NumDerSprite%=NumSprite%
' MATERIEL
    ' flammes pour les canons
    Create_Sprite(56,488,"feuG","ennemi",16,18,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : flammeBG%=NumSprite%
    Create_Sprite(536,488,"feuD","ennemi",16,18,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite%: flammeBD%=NumSprite%
    Create_Sprite(36,42,"feuG","ennemi",16,18,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite%  : flammeHG%=NumSprite%
    Create_Sprite(546,42,"feuD","ennemi",16,18,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : flammeHD%=NumSprite%
    ' boulets de canon
    Create_Sprite(62,488,"boulet","",10,10,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : bouletBG%=NumSprite%
    Create_Sprite(536,488,"boulet","",10,10,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : bouletBD%=NumSprite%
    Create_Sprite(36,42,"boulet","",10,10,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : bouletHG%=NumSprite%
    Create_Sprite(546,42,"boulet","",10,10,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% : bouletHD%=NumSprite%
    ' explosion
    Create_Sprite(250,250,"boum","",30,20,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% :boum%=NumSprite%
    ' balle
    Create_Sprite(1,1,"Balle","",10,10,0) : sprites(NumSprite%,2) = 0 : Sprite_Hide NumSprite% :bal%=NumSprite%
end_sub
rem ============================================================================
sub Barge(nsp%)
    dim_local pxd,pyd,pxa,pya
  ' barge détruite par l'ennemi
    if sprites(nsp%,4) = 0 then message "cliquez pour continuer" : tour$="ami" : exit_sub
  ' position barge(nsp%)
    pxd=sprite_x_position(nsp%) : pyd=sprite_y_position(nsp%)
  ' 1) barge déja accosteé (375) => la sortir
    if pyd>380 and pyd<390
      caption alpha1%,"Cette barge est vide"
      message " Barge déjà accostée " : tour$="ami" : exit_sub
    end_if
  ' 3) barge éloignee à 400 => l'avancer en 375 et débarque les soldats
    if pyd>395 and pyd<405
      caption alpha1%,"Déplacement de votre barge..." : pause 20
      pxa=pxd : pya=pyd-25
      Move_Sprite(nsp%,pxa,pya,pxd,pyd,100)
      caption alpha1%,"Débarquement de 2 soldats"
    ' débarque les soldats 13 à 32 (suivant le numéro de barge)
      if nsp%=3 then Debarquement(nsp%,15,16)
      if nsp%=4 then Debarquement(nsp%,19,20)
      if nsp%=5 then Debarquement(nsp%,23,24)
      if nsp%=6 then Debarquement(nsp%,27,28)
      if nsp%=7 then Debarquement(nsp%,31,32)
      if nsp%=8 then Debarquement(nsp%,13,14)
      if nsp%=9 then Debarquement(nsp%,17,18)
      if nsp%=10 then Debarquement(nsp%,21,22)
      if nsp%=11 then Debarquement(nsp%,25,26)
      if nsp%=12 then Debarquement(nsp%,29,30)
      tour$="ennemi" : exit_sub
    end_if
  ' 3) barge éloignee à 425 => l'avancer en 400
    if pyd>420 and pyd<430
      caption alpha1%,"Déplacement de votre barge..." : pause 20
      pxa=pxd : pya=pyd-25
      Move_Sprite(nsp%,pxa,pya,pxd,pyd,100)
      caption alpha1%,"Au prochain tour, votre barge pourra débarquer 2 soldats !"
      exit_sub
    end_if
  ' 4) barge éloignee à 450 => l'avancer en 425
    if pyd>445 and pyd<455
      caption alpha1%,"Déplacement de votre barge..." : pause 20
      pxa=pxd : pya=pyd-25
      Move_Sprite(nsp%,pxa,pya,pxd,pyd,100)
      caption alpha1%,"Votre barge est encore loin de la plage !"
      exit_sub
    end_if
end_sub
' ------------------------------------------------------------------------------
sub Debarquement(nsp%,s1%,s2%)
dim_local pxd,pyd
    sprites(nsp%,2) = 0
    x%=sprite_x_position(nsp%) : y%=sprite_y_position(nsp%)+10
    Sprite_file_load nsp%,"bargeV.bmp" : sprite_position nsp%,x%,y%
    if sprites(s1%,4)=1 and sprites(s2%,4)=1
      pxd=sprite_x_position(s1%) : pyd=sprite_y_position(s1%)
      sprite_show s2% : sprite_show s1% : Move_Sprite(s1%,pxd,pyd-14,pxd,pyd,60)
      pxd=sprite_x_position(s2%) : pyd=sprite_y_position(s2%) : Move_Sprite(s2%,pxd,pyd-14,pxd,pyd,60)
      sprites(s1%,2)=1 : sprites(s2%,2)=1 :' rend visible les 2 soldats (vu qu'ils sont vivants)
      ' exit_sub
    else
      caption alpha1%,"Débarquement terminé ! Mais les soldats sont morts" : exit_sub
    end_if
    caption alpha1%,"Débarquement des 2 soldats terminé !"
end_sub
rem ============================================================================
sub Move_Sprite(nsp%,pxa,pya,pxd,pyd,nbI%)
  ' Déplace le sprite nsp% des coordonées de départ (pxd,pyd) vers l'arrivée (pxa,pya)
    dim_local i2%,deltaX,deltaY
  ' calcul du déplacement (nbI%=nombre d'images à afficher)
    deltaX = (pxa - pxd)/nbI% : deltaY = (pya - pyd)/ nbI%
  ' déplacement du boulet
    for i2%=1 to nbI%
        sprite_position nsp%,pxd + int(i2%*deltaX),pyd + int(i2% * deltaY) : pause 1
    next i2%
end_sub
rem ============================================================================
sub Create_Sprite(px%,py%,Nom_image$,camp$,WSp%,HSp%,dur%)
  NumSprite% = NumSprite% + 1  : ' passer au numéro de sprite suivant
  sprite NumSprite%                : ' créer le sprite
  sprites(NumSprite%,0) = WSp%    : ' mémoriser sa largeur
  sprites(NumSprite%,1) = HSp%    : ' et sa hauteur
  sprites(NumSprite%,2) = 1        : ' marquer "visible"  ou 0 pour invisible
  sprites(NumSprite%,3) = dur%    : ' marquer 0="pénétrable" ou 1="impénétrable"
  sprites(NumSprite%,4) = 1        : ' mort=0 ou vivant=1 (pas de délete)
  sprite_scale NumSprite%,WSp%,HSp%
  sprite_file_load NumSprite%,Nom_image$+".bmp" :' Charge une image dans le sprite (Nom_image$ sert aussi a identifier le type de sprite)
  sprite_position NumSprite%,px%,py% : ' positionner le sprite à l'endroit voulu
  nom_sprite$(NumSprite%)=str$(NumSprite%)+"|"+Nom_image$+"|"+camp$ :' identifier le sprite
  display
end_sub
' ------------------------------------------------------------------------------
sub What_Srite_Is_Clicked()
  ' retourne NumSpriteClicked% (sprite trouvé)
  dim_local i%, px%, py%, xs%, ys%
  NumSpriteClicked% = 0                  : ' supposer "non trouvé"
  if number_click<>scene_2d% then message "Clic en dehors du scene2d !" : exit_sub
  if NumSprite%=0 then message "Aucun Sprite Existant" : exit_sub
  px% = mouse_x_left_down(scene_2d%)    : ' mémoriser la position horizontale du clic
  py% = mouse_y_left_down(scene_2d%)    : ' mémoriser la position verticale du clic
  for i%=NumSprite% to 1 step -1
    xs% = sprite_x_position(i%)        : ' mémoriser la position horizontale du sprite i%
    ys% = sprite_y_position(i%)        : ' mémoriser la position verticale du sprite i%
    if (xs%<px%)                      : ' le bord gauche du sprite est plus à gauche que l'abscisse du clic ?
      if (ys%<py%)                      : ' le bord haut du sprite est plus haute que l'ordonnée du sprite ?
        if xs%+sprites(i%,0)>=px%        : ' le bord droit du sprite est plus à droite que l'abscisse du clic ?
          if ys%+sprites(i%,1)>=py%      : ' le bord bas du sprite est plus en bas que l'ordonnée du clic ?
            NumSpriteClicked% = i%        : ' alors, on a trouvé
            exit_for                  : ' et on sort
          end_if                      : ' fin test sur le bord bas du sprite
        end_if                        : ' fin test sur le bord droit du sprite
      end_if                          : ' fin test sur le bord haut du sprite
    end_if                            : ' fin test sur le bord gauche du sprite
  next i%                              : ' fin boucle sur les sprites
end_sub
rem ============================================================================
SUB EXPLODE(delimiter$,chaine$):' Nardo modifié JC
' Cette SUB décompose une chaine et inscrit chaque élément dans Dlist_tri%
' complètée par la SUB Incremente_Variables_EL(z%)
 clear Dlist_tri%
  WHILE INSTR(chaine$,delimiter$)<>0
    ITEM_ADD Dlist_tri%,LEFT$(chaine$,INSTR(chaine$,delimiter$)-1)
    chaine$=RIGHT$(chaine$,LEN(chaine$)-INSTR(chaine$,delimiter$))
  END_WHILE
 ITEM_ADD Dlist_tri%,chaine$
END_SUB
' -----
Sub Incremente_Variables_EL(z%)
' cette SUB récupère les variables du Dlist_tri% pour les intégrer dans la variable el$(?) à la bonne position
  dim_local ii%
 for ii%=1 to count(z%)
  if count(z%)=0 then return
  el$(ii%)=item_read$(z%,ii%)
 next ii%
End_Sub
' ---------------------------
Sub Clear_Variables_EL(nb_V%)
' remise à zéro ("") des variables el$(?)
 dim_local ii%
 for ii%=1 to nb_V%:el$(ii%)="":next ii%
End_Sub
rem ============================================================================
sub arret()
'  caption alpha1%,"PATIENTEZ: Arrêt en cours" : pause 500
  n%=50 : caption alpha1%,"PATIENTEZ: Arrêt dans "+chr$(n%)+" secondes" : pause 1000
  n%=49 : caption alpha1%,"PATIENTEZ: Arrêt dans "+chr$(n%)+" seconde" : pause 1000
  n%=48 : caption alpha1%,"PATIENTEZ: Arrêt dans "+chr$(n%)+" seconde" : pause 200
End_Sub
rem ============================================================================
fin:
arret()
terminate
return
A+
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Débarquement V3 Empty
MessageSujet: re   Débarquement V3 EmptyMer 10 Juin 2015 - 19:29

Très intéressant Jean Claude !
Cela mériterait peut être un petit développement... Wink
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyMer 10 Juin 2015 - 20:45

@ygeronimi,

Ma motivation pour faire ce jeu est parti d'un défi que je me suis fait à moi-même, ensuite Klaus s'est emmêlé en proposant des subs qui m'ont facilité le codage. De plus, Jack aime bien les jeux (je veux dire que c'est ce qu'il attendait... Bref c'est un débat en dehors...).

Le codage m'a appris beaucoup, mais a été difficile car n'étant pas doué en math, j'ai rencontré bien des problèmes.
J'ajoute que les mots-clés de Panoramic permettent de créer des jeux en 2D, mais il en manque beaucoup. Klaus m'a permis de contourner cet état de fait en proposant des procédures 100% Panoramic, que j'ai adaptées a ma sauce.

Alors le développement de ce jeu, je le laisse à quiconque est intéressé. En clair, vous pouvez tout utiliser, l'idée, le code, les images, etc...
Je vois bien certain améliorer le programme (Bignono par exemple pour ajouter le son).

Personnellement je préfère partir sur une nouvelle idée et changer la façon dont se déroule le jeu. Le mode aléatoire enlève de l'intérêt au jeu. Pour cela je vais avoir besoin de piocher dans ta réserve de "Doliprane".
lol!

Mais ça, c'est une autre histoire...
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyMer 10 Juin 2015 - 23:45

Bravo Jean Claude!

DSI :
Directeur des Systèmes d'Information Shocked
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyJeu 11 Juin 2015 - 0:28

@Papydall: c'est ça... bref à la droite de dieu même si mon poste lui n'a rien à voir et que je suis loin, moi de ces responsabilités Wink

@Jean-Claude: Je suis d'accord avec Papydall. Tu as développé un super moteur de jeu sur un concept trop peu inexploité. La gestion des clics et de l'animation des sprites est très bien. Le jeu tourne bien et la détection de fin de partie aussi. Après je suis d'accord avec toi sur le côté un peu frustrant du mode trop aléatoire des mouvements et des tirs. Il faudrait pouvoir contrôler les mouvements et bien sûr garder un côté aléatoire sur le résultat du tir.
Donc, au niveau jouabilité tactique et intéret du jeu je pense qu'il y a encore du travail car selon moi, la partie technique est maitrisée et tout a fait satisfaisante.
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyJeu 11 Juin 2015 - 1:06

Jicehel a écrit:
Tu as développé un super moteur de jeu sur un concept trop peu inexploité.

Je dois comprendre alors que le concept qui est "trop peu inexploité" est beaucoup trop exploité !
Deux négations donnent une affirmation. tongue
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Débarquement V3 Empty
MessageSujet: re   Débarquement V3 EmptyJeu 11 Juin 2015 - 1:53

Pour justifier de piocher dans ma réserve de Doliprane... Laughing

Tu peux imaginer ton jeux en ligne entre deux joueurs...
...tu veux que je développe...
lol!

Que ce serait bien d' avoir les commandes de ce post :
https://panoramic.1fr1.net/t3025p15-sprites-animes-dans-un-scene2d
Twisted Evil
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyJeu 11 Juin 2015 - 8:05

Désolé Papydall, je traduis en plus clair car c'est vrai que la double négation rend la phrase incompréhensible: la technique du jeu est au point mais au niveau de la jouabilité pour rendre le jeu plus interessant, il y a des réglages à effectuer et à diminuer le côté aléatoires des déplacements et des tirs.
Réaliser un programme de ce type est un challenge et même régler la jouabilité est complexe afin qu'il ne soit ni trop simple ni trop complexe...De toute façon même si Jean-Claude s'arrétait là dans son jeu (ce que je n'éspère pas), il nous a livré un beau moteur que l'on peut adapter selon nos gouts et nos idées.
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyJeu 11 Juin 2015 - 8:29

Merci à tous pour vos réponses.

C'est bien le mode aléatoire qui ne me plaît pas, je sais qu'il est incontournable sinon on gagne tout le temps,
mais les réglages sont difficiles à faire.
C'est pourquoi, je préfère repartir à zéro, cela me permettra de voir le problème sous un autre angle.

Quand à mettre en ligne pour jouer à 2 drunken drunken drunken .Je cède la place.

Je vais commencer par explorer PAGINE2D, pour voir la différence avec Panoramic, et ensuite j'aviserai.

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyJeu 11 Juin 2015 - 10:03

OK bonne exploration Jean-Claude et je suis d'accord sur ce que tu dis: "les réglages sont difficiles à faire" c'est clairement très délicat et d'autant plus si on veut gérer des niveaux de difficultés... J'espère que tu y arriveras car tu as quand même une super base pour le faire
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyJeu 11 Juin 2015 - 10:48

Je vais aviser quand Jack aura répondu à la question que j'ai déposée ici => https://panoramic.1fr1.net/t3025p30-sprites-animes-dans-un-scene2d#50006

Si les délais ne sont pas trop long ou si c'est envisageable, j'attendrai. Sinon je vais continuer avec Panoramic en m'inspirant des SUB(s) fournies par Klaus.

A+
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyJeu 11 Juin 2015 - 20:33

J'ai besoin de savoir, pour ceux qui ont testé le jeu, s'ils ont perdu au moins une fois.

Moi je sais trop de choses pour gagner et du coup je n'arrive plus à perdre !
Je ne parviens plus à me mettre dans la peau du joueur qui découvre le programme Very Happy
Et j'aimerai affiner la difficulté, dans le cas où tous le monde gagne.

Voilà ou j'en suis:
Débarquement V3 Image_10

A+
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyJeu 11 Juin 2015 - 20:55

Finalement, je perds ausi

Débarquement V3 Image_11

rappel (vu le changement de page du forum): J'ai besoin de savoir, pour ceux qui ont testé le jeu, s'ils ont perdu au moins une fois.

Moi je sais trop de choses pour gagner et du coup je gagne presque à tous les coups !
Je ne parviens plus à me mettre dans la peau du joueur qui découvre le programme
Et j'aimerai affiner la difficulté, dans le cas où tous le monde gagne.

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyJeu 11 Juin 2015 - 22:43

moi, j'ai testé une fois et j'ai perdu. J'ai du mal à comprendre quand je bouge un soldat s'il va tirer ou non.
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyJeu 11 Juin 2015 - 23:00

J'ai testé une seule fois et j'ai gagné mais beaucoup de dégâts. Embarassed
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyVen 12 Juin 2015 - 8:03

Merci à vous deux.

Jicehel a écrit:
J'ai du mal à comprendre quand je bouge un soldat s'il va tirer ou non

Normalement, le soldat tire si une cible est à sa portée (dans sa zone de tir). Le programme regarde si une cible est dans la zone de tir.

Si c'est le cas la cible est sélectionnée pour être éliminée.
Alors le déplacement du soldat va se faire dans cette zone. Mais le tir reste aléatoire, car la direction de la bal peut ne pas être assez proche de la cible (là, il y a une détection de collision de la balle avec la cible).
Cette zone de tir s'agrandie à partir du 40 ème tour, cela pour éviter une fin de partie interminable.
Mais çà ne marche pas à tous les coups et je n'ai pas trouvé pourquoi.
Sinon le soldat s'arrête et passe son tour (il ne tir pas).

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyVen 12 Juin 2015 - 8:16

OK, c'est bien le comportement que j'ai constaté
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Débarquement V3 Empty
MessageSujet: re   Débarquement V3 EmptyVen 12 Juin 2015 - 13:38

J' ai essayé...
...et j' ai perdu ! Embarassed

Je suis un peu déboussolé par les déplacements des soldats....
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyVen 12 Juin 2015 - 13:50

C'est normal, ils sont eux-même déboussolés.
lol!


A nouveau, essayer, tu dois.
Lire et interpréter le menu mission, tu dois.
La sagesse est dans la lecture comprise, jeune Padawans.

geek
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Débarquement V3 Empty
MessageSujet: re   Débarquement V3 EmptyVen 12 Juin 2015 - 13:56

C' est la première fois que je vois un soldat retourner se faire canarder sur la plage de débarquement
après être arrivé dans les lignes ennemis...
lol!
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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyVen 12 Juin 2015 - 13:59

Ben... c'est que le commandant est porté sur la bouteille.
lol!
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 EmptyVen 12 Juin 2015 - 14:07

mdr, mais bon je suis d'accord avec Ygeronimi sur le coté déboussolant, mais j'en ai déjà fait part et je sais que tu chercheras sans doute à régler la jouabilité après avoir repenser le tout comme tu es en train de le faire.
Revenir en haut Aller en bas
Contenu sponsorisé





Débarquement V3 Empty
MessageSujet: Re: Débarquement V3   Débarquement V3 Empty

Revenir en haut Aller en bas
 
Débarquement V3
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Projet débarquement

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: