Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Bataille de petits soldats | |
| | |
Auteur | Message |
---|
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bataille de petits soldats Jeu 8 Mai 2014 - 10:26 | |
| Excellente nouvelle Jean-Claude, bravo. Je pense que le jeu sera plus intéressant à jouer | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bataille de petits soldats Jeu 8 Mai 2014 - 19:40 | |
| @ Tous en général et @ Jean Claude en particulier J’ai découvert dans ce jeu un autre jeu plus motivant que de tirer sur des ennemies. Le jeu consiste à éliminer tous les GOTO présents dans le code pour obtenir in fine un code à mon goût. Cela ne veut pas dire que mon goût est le bon : c’est seulement ma préférence ! Donc je me suis lancé le défi d’accomplir la mission. Sachant, par expérience, qu’une telle tâche n’est pas aisée, (d’autant plus qu’il s’agit d’un programme dont on n’est pas le concepteur) je me suis armé d’une grande volonté de relever le défi et aussi d’une grande tasse de café. J’ai cru un moment que j’étais perdu dans ce fouillis inextricable et j’ai failli abandonner. Une heure, deux heures, trois heures et deux cafés après, j’ai expiré un grand coup : Papydall a défié Papydall et j'ai cru que Papydall a gagné le défi ! En poussant les tests, je constate que Papydall n'a pas gagné le défi : parfois ça bogue et ça bogue énormément ! Donc, je ne poste pas mon code, étant donné que Jean Claude compte sortir une nouvelle version (il ne chépakan) mais - JC a écrit:
- J'essai que ça ne soit pas trop facile...
Il sait ou il essaie ? That's the question! NB : Dur, très dur de suivre ces GOTO qui vous emmènent n'importe où! J’ai acquis une nouvelle paire de lunettes. Ça pourra m’aider à « deGOTOifier » le programme !!! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Bataille de petits soldats Jeu 8 Mai 2014 - 21:30 | |
| @Papydall, tu ne vas pas nous faire une gotophobie aiguë, ce serait dommage que tu sois indisposé par un excès de café.
Je dois avouer qu'au moment de la conception du code, je n'ais pas pas trouvé d'autres solutions pour que le programme ne s'arrête pas.
Pour la prochaine version j'ai posé les conditions sur le papier, ça se complique car je veux que l'ordinateur analyse les 9, 6, 3 cases, suivant la portée de tir de son soldat, pour faire le ou les tir en priorité. Jusque là ça va. Mais je veux qu'avant de déplacer son soldat, il analyse les 11 cases autours des 9 pour voir s'il y a un soldat adverse et si oui il se déplace pour le manger, au tour suivant, à condition de ne pas se mettre en danger. Bref, le but est qu'il n'oublie pas les tirs possibles, qu'il ne mette pas ses pions en danger et qu'il prépare le tour suivant.
Etant dans une période "d'algie vasculaire de la face", c'est compliqué de me concentrer (3 à 4 crises par jour actuellement). Mais quand la période sera passée, je vais m'y remettre car le codage de cette partie est, certes, pas facile, mais certainement pas insurmontable.
A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bataille de petits soldats Jeu 8 Mai 2014 - 21:39 | |
| Là pour moi, ça deviendra vraiment le premier wargame du site. Et on risque de galérer pour vaincre l'ordi | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bataille de petits soldats Ven 9 Mai 2014 - 4:24 | |
| @Jean Claude J’espère que ton "algie vasculaire de la face" se soit apaisée. - Jean Claude a écrit:
- @Papydall, tu ne vas pas nous faire une gotophobie aiguë
Quand j’ai appris le BASIC en 1980, j’usais et j’abusais de GOTO et autre GOSUB. Peu après, j’ai découvert le Turbo Pascal et la programmation structurée. J’ai juré alors (impulsion de jeunesse !) que je n’utiliserais jamais de GOTO dans mes programmes! A vrai dire, plus d’une fois, j’ai enfreint ce comportement ! Bref, je vous expose mon essai. - Spoiler:
- Code:
-
rem ============================================================================ rem La grande bataille rem Jeu réalisé par Jean Claude rem Revu par Papydall rem ============================================================================ Je_joue_Tu_joues_Il_Elle_Joue_Nous_Joueons_Vous_Jouez_Ils_Elles_Jouent() end rem ============================================================================ SUB Je_joue_Tu_joues_Il_Elle_Joue_Nous_Joueons_Vous_Jouez_Ils_Elles_Jouent() error_french dim_label() ' règlages du chemin rep$="C:\Users\acer\Desktop\Panoramic\Jean Claude\La_Grande_Bataille" dir_change rep$ ' règlages du cadrillage dp% = 35 : ' 32 = pas de grille ' règlages de difficulté (les réglages définis ci-dessous sont équilibrés) niveau% = 8 : ' moins de 4 ce n'est pas jouable (maxi 10) dif% = 2 : ' de 1 à 3 (plus c'est petit, plus c'est difficile) ' Start init() fin$ = "E" : partie() END_SUB rem ============================================================================ SUB dim_label() dim c%,no%,n%,pion%,tir%,dep%,Apa%,nbja%,nbje%,tour%,niv%,niveau% dim reste,dif% dim a$,rep$,ok$,msg$,fin$,fin_tir$,der_pion$ dim grade$(48),num_SD(48),munition%(48),portee%(48),Pos%(48) dim contenu_kaz%(160),case_dep%(3) dim Lpion% ' initialise nbje% = 23 : nbja% = 23 ' constante dim dp%,vit% : vit% = 200 ' Label label jeu_ami, pas_dep, dep_ami, dep_ami2, tir_ami,quit application_title " La grande bataille " End_Sub rem ============================================================================ Sub init() dim memo1%,Bt_Tir%,Bt_Dep%,Bt_NoDep%,alpha_nbja%,alpha_nbje% width 0,(dp%*21)-(dp%/2) : height 0,dp%*14 top 0,((screen_y/2)-(height(0)/2)) : left 0,(screen_x/2)-(width(0)/2) color 0,220,230,255 : caption 0," La grande bataille" piste() no%=no%+1:memo1%=no%:memo no%:parent no%,0:height no%,130:width no%,280:font_bold no% top no%,height(0)-(height(no%)*2)+80:left no%,(width(0)/2)-(width(no%)/2) no% = no% + 1 : Bt_Tir% = no% : button no% : parent no%,0 : font_bold no% : caption no%,"Tir" top no%,top(memo1%)+(height(memo1%)/2)-45 : left no%,40 : inactive no% no% = no% + 1 : Bt_Dep% = no% : button no% : parent no%,0 : width no%,125 : font_bold no% : caption no%," Déplacement " top no%,top(Bt_Tir%)+35 : left no%,18 : inactive no% no% = no% + 1 : Bt_NoDep% = no% : button no% : parent no%,0 : width no%,125 : font_bold no% : caption no%,"Pas de déplacement" top no%,top(Bt_Dep%)+35 : left no%,18 : inactive no% no% = no% + 1 : alpha_nbja% = no% : alpha no% : parent no%,0 : font_bold no% : font_size no%,14 top no%,top(Bt_Tir%)-30 : left no%,63 : font_color no%,0,150,50 : caption no%,str$(nbja%) no% = no% + 1 : alpha_nbje% = no% : alpha no% : parent no%,0 : font_bold no% : font_size no%,14 top no%,top(alpha_nbja%) : left no%,Width(0)-70 : font_color no%,255,0,0 : caption alpha_nbje%,str$(nbje%) no% = no% + 1 : button no% : left no%,600 : top no%,400 : caption no%,"Quitter" : on_click no%,quit End_Sub rem ============================================================================ Sub piste() dim_local i% no% = 1 : picture no% : parent no%,0 : width no%,dp% : height no%,dp% : top no%,0 : left no%,0 for i% = 2 to 160 no% = no% + 1 : picture no% : parent no%,0 : width no%,dp% : height no%,dp% if left(no%-1) < dp%*19 top no%,top(no%-1) : left no%,left(no%-1) + dp% else top no%,top(no%-1) + dp% : left no%,0 end_if next i% ' charger l'image case vide dans toute les cases for i% = 1 to 160 file_load i%,"fond.bmp":hint i%," Terrain libre " next i% ' attribution des grades, matricule, munition, portée de l'arme, et état des cases i% = 40 for n% = 20 to 160 step 20 i% = i% + 1 : num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "se3T" munition%(num_SD(i%)) = 1 : portee%(num_SD(i%)) = 3 contenu_kaz%(n%) = num_SD(i%) : file_load n%,grade$(i%)+".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portée: " + str$(portee%(num_SD(i%))) + " " + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% ' drapeau i% = 45 : n% = 100 num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "DE" contenu_kaz%(n%) = num_SD(i%) : file_load n%,grade$(i%) + ".bmp" munition%(num_SD(i%)) = 0 : portee%(num_SD(i%)) = 0 : hint n%," Drapeau ennemi" i% = 32 : wait 100 for n% = 19 to 160 step 20 i% = i% + 1 : num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "se2T" munition%(num_SD(i%)) = 3 : portee%(num_SD(i%)) = 2 contenu_kaz%(n%) = num_SD(i%) : file_load n%,grade$(i%) + ".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portése " + str$(portee%(num_SD(i%))) + " " + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% i% = 24 : wait 100 for n% = 18 to 160 step 40 i% = i% + 1 : num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "se1T" munition%(num_SD(i%)) = 5 : portee%(num_SD(i%)) = 1 contenu_kaz%(n%) = num_SD(i%) : file_load n%,grade$(i%) + ".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portée: " + str$(portee%(num_SD(i%))) + " " + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% for n% = 38 to 160 step 40 i% = i% + 1 : num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "se3T" munition%(num_SD(i%)) = 1 : portee%(num_SD(i%)) = 3 contenu_kaz%(n%) = num_SD(i%) : file_load n%,grade$(i%) + ".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portée: " + str$(portee%(num_SD(i%))) + " " + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% i% = 0 : wait 100 for n% = 3 to 160 step 20 i% = i% + 1:num_SD(i%) = i%:Pos%(num_SD(i%)) = n%:grade$(i%) = "sa1T" munition%(num_SD(i%)) = 5:portee%(num_SD(i%)) = 1 contenu_kaz%(n%) = num_SD(i%):file_load n%,grade$(i%) + ".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portée: " + str$(portee%(num_SD(i%))) + " " + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% i% = 8 : wait 100 for n% = 2 to 160 step 20 i% = i% + 1:num_SD(i%) = i%:Pos%(num_SD(i%)) = n%:grade$(i%) = "sa2T":num_SD(i%) = i% munition%(num_SD(i%)) = 3:portee%(num_SD(i%)) = 2 contenu_kaz%(n%) = num_SD(i%):file_load n%,grade$(i%) + ".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portée: " + str$(portee%(num_SD(i%))) + " " + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% i% = 16 : wait 100 for n% = 1 to 160 step 20 i% = i% + 1 : num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "sa3T" : num_SD(i%) = i% munition%(num_SD(i%)) = 1 : portee%(num_SD(i%)) = 3 contenu_kaz%(n%) = num_SD(i%) : file_load n%,grade$(i%) + ".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portée: " + str$(portee%(num_SD(i%))) + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% ' drapeau i% = 20 : n% = 61 num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "DA" contenu_kaz%(n%) = num_SD(i%) : file_load n%,grade$(i%) + ".bmp" munition%(num_SD(i%)) = 0 : portee%(num_SD(i%)) = 0 : hint n%," Drapeau de vos soldats" wait 100 End_Sub rem =========================================================================== SUB partie() if tour% = 0 then msg() niv% = int(rnd(niveau%)) while even(niv%) = 1 : niv% = int(rnd(niveau%)) : end_while tour% = tour% + 1 if fin$ = "E" then Ennemi() if fin$ = "A" then Ami() END_SUB rem ============================================================================ SUB Ennemi() clear memo1% : item_add memo1%," TOUR ENNEMI " ok$ = "" : inactive_clics() : Wait vit%*2 if (der_pion$ <> "N") and (not((num_SD(pion%) < 25) or (num_SD(pion%) > 48))) Jeu_Ennemi(Pos%(pion%)) if ok$ <> "N" then exit_sub end_if repeat repeat pion% = int(rnd(49)) while (num_SD(pion%) = 45) or ((num_SD(pion%) < 25) or (num_SD(pion%) > 48)) pion% = int(rnd(49)) end_while until munition%(pion%) <> 0 Jeu_Ennemi(Pos%(pion%)) until ok$ <> "N" END_SUB rem ============================================================================ SUB Ami() inactive Bt_Tir% clear memo1% : item_add memo1%," VOTRE TOUR " item_add memo1%," " : item_add memo1%," Sélectionnez un de vos soldats par un clic" ' sélection d'un soldat active_clics() END_SUB rem ============================================================================ SUB Jeu_Ennemi(Ape%) ' contoler les 3 cases de déplacement dep% = 0 : tir% = 0 c% = Ape% - 21 : Ctrl_DEPTIR(c%) :' sup c% = Ape% - 1 : Ctrl_DEPTIR(c%) :' devant c% = Ape% + 19 : Ctrl_DEPTIR(c%) :' inf if dep% = 0 and tir% = 0 repeat repeat pion% = int(rnd(49)) while (num_SD(pion%) = 45) or ((num_SD(pion%) < 25) or (num_SD(pion%) > 48)) pion% = int(rnd(49)) end_while until munition%(pion%) <> 0 Jeu_Ennemi(Pos%(pion%)) until ok$ <> "N" exit_sub end_if ' à partir d'ici le pion peut jouer file_load ape%,grade$(pion%) + "S.bmp" : ' affiche le soldat qui bouge wait vit% * 3 ' en priorité les tirs ' recherche dans chacune des 9 cases un ennemi, si oui tire if munition%(pion%) > 0 ' RANGEE 1 valable quelque soit la portée de tir c% = Ape% - 21 : TIR(c%,Ape%) : ' sup c% = Ape% - 1 : TIR(c%,Ape%) :' devant c% = Ape% + 19 : TIR(c%,Ape%) :' inf if portee%(pion%) > 1 ' RANGEE 2 c% = Ape% - 22 : TIR(c%,Ape%) : ' sup c% = Ape% - 2 : TIR(c%,Ape%) : ' devant c% = Ape% + 18 : TIR(c%,Ape%) : ' inf end_if if portee%(pion%) > 2 ' RANGEE 3 c% = Ape% - 23 : TIR(c%,Ape%) : ' sup c% = Ape% - 3 : TIR(c%,Ape%) : ' devant c% = Ape% + 17 : TIR(c%,Ape%) : ' inf end_if else ' ce pion est mort end_if ' ensuite déplace aléatoirement le pion dans une case (devenue) libre si c'est possible if dep% > 0 dep% = 0 : ' pour controle repeat n% = 1 + rnd(3) if n% = 1 then c% = Ape% - 21 : DEP(c%,Ape%) : ' sup if n% = 2 then c% = Ape% - 1 : DEP(c%,Ape%) : ' devant if n% = 3 then c% = Ape% + 19 : DEP(c%,Ape%) : ' inf until dep% <> 0 end_if reste = mod(tour%,niv%) : der_pion$ = "" if tour% = 1 then der_pion$ = "N" : fin$ = "E" : partie() : exit_sub if reste = 0 fin$ = "E" : partie() : exit_sub else n% = int(rnd(dif%)) if dif% < 1 or dif% > 3 then dif% = 3 if n% = 1 then der_pion$ = "N" : fin$ = "E" : else : fin$ = "A" partie() end_if END_SUB rem ============================================================================ Sub Ctrl_DEPTIR(Lc%) dim_local kt% if Lc% < 1 or Lc% > 160 exit_sub else if contenu_kaz%(Lc%) = 0 dep% = dep% + 1 : Exit_Sub : ' déplacement possible, tir impossible end_if end_if if contenu_kaz%(Lc%) <> 0 kt% = contenu_kaz%(Lc%) if grade$(kt%) = "se1T" or grade$(kt%) = "se2T" or grade$(kt%) = "se3T" Exit_Sub end_if kt% = contenu_kaz%(Lc%) if grade$(kt%) = "sa1T" or grade$(kt%) = "sa2T" or grade$(kt%) = "sa3T" dep% = dep% + 1 : tir% = tir% + 1 : Exit_Sub : ' cette case sera libérée end_if end_if End_Sub rem ============================================================================ Sub TIR(Lc%,LApe%) dim_local Lpion% if Lc% < 1 or Lc% > 160 exit_sub : ' hors cadre else ' si le contenu de la case est de 1 à 24, il ya une ennemi if contenu_kaz%(Lc%) > 0 and contenu_kaz%(Lc%) < 25 Lpion% = contenu_kaz%(Lc%) : ' matricule du soldat à tuer if Lpion% = 20 file_load Lc%,"feu.bmp" : wait vit%*2 Message "l'ennemi a pris possession de votre drapeau !"+chr$(13)+chr$(13)+" VOUS AVEZ PERDU CETTE BATAILLE" terminate end_if ' Prend ses munitions et décompte ton tir munition%(pion%) = (munition%(pion%)+munition%(Lpion%)) - 1 ' tue le et affiche le tir nbja% = nbja% - 1 : munition%(Lpion%) = 0 : caption alpha_nbja%,str$(nbja%) file_load Lc%,"feu.bmp" : wait vit%*2 ' remettre l'ancienne case en libre contenu_kaz%(LApe%) = 0 : file_load LApe%,"fond.bmp" : hint LApe%," Terrain libre " ' remettre la case en feu libre contenu_kaz%(Lc%) = 0 : file_load Lc%,"fond.bmp" : hint Lc%," Terrain libre " end_if end_if if nbja% = 0 then Message "Vos ennemis sont les plus forts, retentez votre chance" + chr$(13) + chr$(13) + " VOUS AVEZ PERDU CETTE BATAILLE" : terminate End_sub rem ============================================================================ Sub DEP(Lc%,LApe%) if Lc% < 1 or Lc% > 160 exit_sub : ' hors cadre else if contenu_kaz%(Lc%) = 0 dep% = dep% + 1 ' met à jour la position de pion% Pos%(pion%) = Lc% ' affiche la case de déplacement file_load Lc%,"fondB.bmp" : wait vit%*2 ' met à jour la nouvelle case contenu_kaz%(Lc%) = pion% file_load Lc%,grade$(pion%) + ".bmp" : ' affiche le soldat à sa nouvelle position hint Lc%," Matricule: " + str$(num_SD(pion%)) + chr$(13) + " Munitions: " + str$(munition%(pion%)) + " Portée: " + str$(portee%(pion%)) + " "+chr$(13) + " Position: " + str$(Pos%(pion%)) ' remettre l'ancienne case en libre contenu_kaz%(LApe%) = 0 : file_load LApe%,"fond.bmp" : hint LApe%," Terrain libre " end_if end_if End_sub rem ============================================================================ Sub active_clics_DEP() dim_local i% for i% = 1 to 160 : on_click i%,Dep_ami : next i% off_click 61 : ' drapeau End_Sub rem ============================================================================ Sub active_clics() dim_local i% for i% = 1 to 160 : on_click i%,Jeu_ami : next i% off_click 61 : ' drapeau End_Sub rem ============================================================================ Sub inactive_clics() dim_local i% for i% = 1 to 160 : off_click i% : next i% End_Sub rem ============================================================================ Jeu_ami: Apa% = number_click if Apa% = 61 then message "Vous ne pouvez pas déplacer votre drapeau" : return : ' drapeau if contenu_kaz%(Apa%) = 0 message " Cette case est vide. Vous devez sélectionner un de vos soldat " : return end_if pion% = contenu_kaz%(Apa%) if num_SD(pion%)>25 message " Vous devez sélectionner un de vos soldat " : return end_if ' contoler les 3 cases de déplacement dep% = 0 : tir% = 0 c% = Apa% - 19 : Ctrl_DEPTIRA(c%) : ' sup c% = Apa% + 1 : Ctrl_DEPTIRA(c%) : ' devant c% = Apa% + 21 : Ctrl_DEPTIRA(c%) : ' inf ' joue le pion si pas jouable recommence if dep% = 0 and tir% = 0 then message " Ce soldat ne peut pas bouger" : return ' à partir d'ici le pion peut jouer file_load apa%,grade$(pion%) + "S.bmp" : ' affiche le soldat qui bouge wait vit%*2 ' si munition ' en priorité les tirs ' rangée 1 c% = Apa% - 19 : Ctrl_TIRA1(c%) c% = Apa% + 1 : Ctrl_TIRA1(c%) c% = Apa% + 21 : Ctrl_TIRA1(c%) ' vérifier les 6 autres cases pour savoir si tir(s) à faire ' rangée 2 if portee%(pion%) > 1 c% = Apa% - 18 : Ctrl_TIRA(c%) c% = Apa% + 2 : Ctrl_TIRA(c%) c% = Apa% + 22 : Ctrl_TIRA(c%) end_if ' rangée 3 if portee%(pion%) > 2 c% = Apa% - 17 : Ctrl_TIRA(c%) c% = Apa% + 3 : Ctrl_TIRA(c%) c% = Apa% + 23 : Ctrl_TIRA(c%) end_if fin_tir$ = "" if tir% > 0 active Bt_Tir% : on_click Bt_Tir%,tir_ami suite_jeu1() end_if suite_jeu2() return rem ============================================================================ Sub Ctrl_DEPTIRA(Lc%) dim_local kt% if Lc% < 1 or Lc% > 160 exit_sub else if contenu_kaz%(Lc%) = 0 dep% = dep% + 1 : Exit_Sub : ' déplacement possible, tir impossible end_if end_if if contenu_kaz%(Lc%) <> 0 kt% = contenu_kaz%(Lc%) if grade$(kt%) = "sa1T" or grade$(kt%) = "sa2T" or grade$(kt%) = "sa3T" Exit_Sub end_if if grade$(kt%) = "se1T" or grade$(kt%) = "se2T" or grade$(kt%) = "se3T" dep% = dep% + 1 : tir% = tir% + 1 : Exit_Sub : ' cette case sera libérée end_if if grade$(kt%) = "DE" tir% = tir% + 1 : Exit_Sub end_if end_if End_Sub rem ============================================================================ Sub Ctrl_TIRA(Lc%) dim_local kt% if Lc% < 1 or Lc% > 160 exit_sub else if contenu_kaz%(Lc%) = 0 file_load Lc%,"fondTV.bmp" Exit_Sub : ' tir impossible end_if end_if if contenu_kaz%(Lc%) <> 0 kt% = contenu_kaz%(Lc%) if grade$(kt%) = "sa1T" or grade$(kt%) = "sa2T" or grade$(kt%) = "sa3T" Exit_Sub end_if if grade$(kt%) = "se1T" or grade$(kt%) = "se2T" or grade$(kt%) = "se3T" file_load Lc%,grade$(kt%) + "C.bmp" tir% = tir% + 1 : Exit_Sub end_if if grade$(kt%) = "DE" tir% = tir% + 1 : Exit_Sub end_if end_if End_Sub rem ============================================================================ Sub Ctrl_TIRA1(Lc%) dim_local kt% if Lc% < 1 or Lc% > 160 exit_sub else if contenu_kaz%(Lc%) = 0 file_load Lc%,"fondDT.bmp" Exit_Sub : ' tir impossible end_if end_if if contenu_kaz%(Lc%) <> 0 kt% = contenu_kaz%(Lc%) if grade$(kt%) = "sa1T" or grade$(kt%) = "sa2T" or grade$(kt%) = "sa3T" Exit_Sub end_if if grade$(kt%) = "se1T" or grade$(kt%) = "se2T" or grade$(kt%) = "se3T" file_load Lc%,grade$(kt%) + "C.bmp" tir% = tir% + 1 : Exit_Sub end_if if grade$(kt%) = "DE" tir% = tir% + 1 : Exit_Sub end_if end_if End_Sub rem ============================================================================ Sub ADEPA(Lc%) if Lc% < 1 or Lc% > 160 exit_sub : ' hors cadre else if contenu_kaz%(Lc%) = 0 ' affiche et repère la case de déplacement case_dep%(n%) = Lc% : file_load Lc%,"fondDT.bmp" end_if end_if end_sub rem ============================================================================ Sub DEPA(Lc%,LApa%) if Lc% < 1 or Lc% > 160 exit_sub else ' met à jour la position de pion% Pos%(pion%) = Lc% ' met à jour la nouvelle case contenu_kaz%(Lc%) = pion% file_load Lc%,grade$(pion%) + ".bmp" : ' affiche le soldat à sa nouvelle position hint Lc%," Matricule: " + str$(num_SD(pion%)) + chr$(13) + " Munitions: " + str$(munition%(pion%)) + " Portée: " + str$(portee%(pion%)) + " " + chr$(13) + " Position: " + str$(Pos%(pion%)) wait vit% ' remettre l'ancienne case en libre contenu_kaz%(LApa%) = 0 : file_load LApa%,"fond.bmp" : hint LApa%," Terrain libre " end_if end_sub rem ============================================================================ Pas_Dep: c% = Pos%(pion%) PADEPA(c%) ' mise à jour cases vides for n% = 1 to 160 if contenu_kaz%(n%) = 0 then file_load n%,"fond.bmp" next n% inactive Bt_Dep% : inactive Bt_NoDep% ' fin du tour fin$ = "E" : partie() return rem ============================================================================ Sub PADEPA(Lc%) if Lc%<1 or Lc%>160 exit_sub else file_load Lc%,grade$(pion%)+".bmp":' affiche le soldat (normal) à sa position hint Lc%," Matricule: "+str$(num_SD(pion%))+chr$(13)+" Munitions: "+str$(munition%(pion%))+" Portée: "+str$(portee%(pion%))+" "+chr$(13)+" Position: "+str$(Pos%(pion%)) wait vit% end_if end_sub rem ============================================================================ Dep_ami: inactive Bt_NoDep% : inactive_clics() c% = number_click : dep% = 0 for n%=1 to 3 if case_dep%(n%) = c% then dep% = dep% + 1 next n% if dep% = 0 message " Vous devez sélectionner une case en bleu" ' goto Suite_jeu2 n% = 1 : c% = Apa% - 19 : ADEPA(c%) : ' sup n% = 2 : c% = Apa% + 1 : ADEPA(c%) : ' devant n% = 3 : c% = Apa% + 21 : ADEPA(c%) : ' inf ' choix de déplacer ou pas active Bt_NoDep% : on_click Bt_NoDep%,Pas_Dep ' active déplacement active_clics_DEP() clear memo1% : item_add memo1%," VOTRE TOUR " item_add memo1%," " : item_add memo1%," Sélectionnez une case bleu pour déplacer votre soldat" item_add memo1%," " : item_add memo1%," Ou cliquez sur le bouton [Pas de déplacement]" return end_if file_load c%,"fondB.bmp" : wait vit% clear memo1%:item_add memo1%," VOTRE TOUR " item_add memo1%," " : item_add memo1%," Cliquez sur le bouton [Déplacement] " active Bt_Dep% : on_click Bt_Dep%,Dep_ami2 return rem ============================================================================ Dep_ami2: DEPA(c%,Apa%) ' mise à jour cases vides for n% = 1 to 160 if contenu_kaz%(n%) = 0 then file_load n%,"fond.bmp" next n% inactive Bt_Dep% : inactive Bt_NoDep% ' fin du tour fin$ = "E" : partie() return rem ============================================================================ SUB Suite_jeu1() clear memo1% : item_add memo1%," VOTRE TOUR " item_add memo1%," " : item_add memo1%," Cliquez sur le bouton [TIR]" if fin_tir$ <> "OK" inactive_clics() : return else inactive Bt_Tir% end_if END_SUB rem ============================================================================ SUB Suite_jeu2() ' affiche les cases de déplacement n% = 1 : c% = Apa% - 19 : ADEPA(c%) : ' sup n% = 2 : c% = Apa% + 1 : ADEPA(c%) : ' devant n% = 3 : c% = Apa% + 21 : ADEPA(c%) : ' inf ' choix de déplacer ou pas active Bt_NoDep% : on_click Bt_NoDep%,Pas_Dep ' active déplacement active_clics_DEP() clear memo1% : item_add memo1%," VOTRE TOUR " item_add memo1%," " : item_add memo1%," Sélectionnez une case bleu pour déplacer votre soldat" item_add memo1%," " : item_add memo1%," Ou cliquez sur le bouton [Pas de déplacement]" END_SUB rem ============================================================================ tir_ami: ' les tirs if tir% > 0 ' recherche dans chacune des 9 cases un ennemi, si oui tire if munition%(pion%) > 0 ' RANGEE 1 valable quelque soit la portée de tir c% = Apa% - 19 : TIRA(c%,Apa%) : ' sup c% = Apa% + 1 : TIRA(c%,Apa%) : ' devant c% = Apa% + 21 : TIRA(c%,Apa%) : ' inf if portee%(pion%) > 1 ' RANGEE 2 c% = Apa% - 18 : TIRA(c%,Apa%) : ' sup c% = Apa% + 2 : TIRA(c%,Apa%) : ' devant c% = Apa% + 22 : TIRA(c%,Apa%) : ' inf end_if if portee%(pion%) > 2 ' RANGEE 3 c% = Apa% - 17 : TIRA(c%,Apa%) : ' sup c% = Apa% + 3 : TIRA(c%,Apa%) : ' devant c% = Apa% + 23 : TIRA(c%,Apa%) : ' inf end_if else message "Votre Solat n'a plus de munitions" end_if end_if fin_tir$ = "OK" : Suite_jeu1() : suite_jeu2() return
rem ============================================================================ Sub TIRA(Lc%,LApa%)
if Lc% < 1 or Lc% > 160 exit_sub : ' hors cadre else ' si le contenu de la case est de 24 à 48, il ya une ennemi if contenu_kaz%(Lc%) > 24 and contenu_kaz%(Lc%) < 49 munition%(pion%) = munition%(pion%) - 1 : ' pour le tir if munition%(pion%) = 0 then message "Votre soldat à tiré sa dernière munition,"+chr$(13)+"mais il va récuperer celle(s) du soldat ennemi.":fin_tir$="OK" Lpion% = contenu_kaz%(Lc%) : ' matricule du soldat à tuer if Lpion% = 45 file_load Lc%,"feu.bmp" : wait vit%*2 Message "BRAVO! Vous avez pris possession du drapeau ennemi !"+chr$(13)+chr$(13)+" VOUS AVEZ GAGNE CETTE BATAILLE" terminate end_if ' Prend ses munitions et décompte ton tir munition%(pion%) = munition%(pion%)+munition%(Lpion%) ' tue le et affiche le tir nbje% = nbje% - 1 : caption alpha_nbje%,str$(nbje%) munition%(Lpion%) = 0 : file_load Lc%,"feu.bmp" : wait vit%*2 ' remettre la case en feu libre contenu_kaz%(Lc%) = 0 : file_load Lc%,"fond.bmp" : hint Lc%," Terrain libre " end_if end_if if nbje% = 0 then Message "BRAVO! Vos soldats sont les plus forts"+chr$(13)+chr$(13)+" VOUS AVEZ GAGNE CETTE BATAILLE":terminate if fin_tir$ = "OK" then Suite_jeu1() : Suite_jeu2() End_sub rem ============================================================================ Sub msg() a$=" VOTRE MISSION: Capturer le drapeau ennemi (les rouges), avant qu'ils ne capturent le vôtre ou exterminent tous vos soldats."+chr$(13)+chr$(13) a$=a$+" UN CONSEIL: à votre première partie (également pendant la bataille), déplacez la souris sur les soldats (les vôtres ou les ennemis)"+chr$(13) a$=a$+" et regardez bien les infos bulles."+chr$(13)+chr$(13) a$=a$+" Votre adversaire (l'ordinateur) n' a aucune stratégie, c'est un bourrin, mais c'est aussi un tricheur,"+chr$(13) a$=a$+" il joue très souvent plusieurs tours de suite, alors que c'est interdit !"+chr$(13)+chr$(13) a$=a$+" De plus votre armée ne compte que 7 soldats experts (3 gallons, dont la portée de tir est de 3 cases),"+chr$(13) a$=a$+" alors que l'armée ennemi en a 11 dont 4 placés en première ligne (c'est là, la clé pour vaincre...)"+chr$(13)+chr$(13) a$=a$+" Pour le déroulement du jeu, suivez les instructions indiquées dans le mémo"+chr$(13)+chr$(13) a$=a$+ " Pour gagner, votre stratégie ne suffira pas, il faudra aussi utiliser des Kamikazes. Bonne chance !" message a$ end_sub rem ============================================================================ quit: if message_confirmation_yes_no("Vous voulez vraiment quitter ?") = 1 then terminate return rem ================= F I N ====================================================
NB : Adapter (ligne 13) le chemin qui mène à la grande bataille. J'ai ajouté un bouton Quitter pour ... devinez à quoi sert-il ? Mon dernier test, n’a pas découvert de bug dans le programme, mais il y en a peut-être ! Après avoir gagné le GOTO_OFF, j’ai aussi gagné la bataille. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Bataille de petits soldats Ven 9 Mai 2014 - 9:46 | |
| Bravo Papydall et merci, car tu viens de me faire prendre conscience de mes limites et que je devrais regarder un peu plus souvent le manuel de références. Faire un programme en utilisant seulement if/end_if et for/next, ça part à la dérive..., mais je ne suis qu'un programmeur du dimanche. Je viens de le tester ta version, ça marche sans bug. Ton bouton "quitter" ouvre la voix pour une sauvegarde de la partie en cours..... Je vais m'inspirer de ta version corrigée pour mettre en place ma prochaine version. Pour le moment ça m'est difficile car je fais des nuits en pointillées, je suis crevé, mais je sais par expérience de ma maladie qu'il faut que je patiente un mois ou deux, et après je serais tranquille pour environ 2 ans. Je ne lâcherais pas le bout car je pense, comme le dit Jicehel, que battre l'ordinateur deviendra difficile dans la prochaine version. Et ce jeu deviendra, alors, assez sympa. A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bataille de petits soldats Ven 9 Mai 2014 - 10:27 | |
| Repose toi bien et j'espère que cette saleté qui te pourrie tes nuits passera vite | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bataille de petits soldats Ven 9 Mai 2014 - 18:55 | |
| Salut Jean Claude Debut_Hors_Sujet : Est-ce que tu fumes ? Ce n’est pas une question indiscrète car moi-même j’étais un grand/gros fumeur : TROIS PAQUETS DE CIGARETTES par jour et des lourdes ! A cette époque je faisais au moins une crise de mal de tête INSUPPORTABLE par semaine. Et puis, j’ai décidé, un beau jour de cesser de fumer : j’ai passé brutalement d’une soixantaine de cigarettes à ZERO cigarette, sans aucune transition. Le résultat : une légère (pas si légère que ça !) prise de poids et aucun mal de tête depuis plus de onze ans. C’est un vrai bonheur. Mais peut-être sommes-nous deux cas différents ? Bon, j’espère que tu te débarrasseras dans les meilleurs délais de cette maladie. Fin_Hors_SujetPour le jeu : j’ai ajouté une SUB feu() pour charger un son (tir.mp3) et le jouer à chaque fois qu’il y ait un tir. Ça fait de l’ambiance. - Jean Claude a écrit:
- Bravo Papydall et merci, car tu viens de me faire prendre conscience de mes limites et que je devrais regarder un peu plus souvent le manuel de références.
Il ne faut pas chercher à être meilleur que les autres ; il suffit d’être meilleur que soi ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bataille de petits soldats Ven 9 Mai 2014 - 22:00 | |
| J'ai testé la version du gotophobe et ça marche nickel | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bataille de petits soldats Sam 10 Mai 2014 - 3:36 | |
| Bien, ça me plait ce surnom de gotophobe, bien qu'il s'agisse plutôt d'aversion que de phobie. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bataille de petits soldats Dim 25 Mai 2014 - 0:47 | |
| Voilà deux semaines que notre ami Jean Claude n’a pas donné un signe de vie.
Hé JC, j’espère que tu te portes bien ! Si tu passes par ici, fais-nous un coucou ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Bataille de petits soldats Dim 25 Mai 2014 - 10:24 | |
| Merci Papydall de t’inquiéter de ma santé.
Je suis dans ma galère d'algies vasculaires de la face, j'en suis à 4 crises par nuit et 3 le jour. Le simple fait de regarder l'écran de l'ordi plus de 5 min déclenche une crise supplémentaire.
Il me reste à attendre que la période se termine.... J'ai néanmoins avancé sur l'IA, mais ce n'est pas encore au point...
Merci et à + | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Re: Bataille de petits soldats Dim 25 Mai 2014 - 10:58 | |
| Gotophobe, screenophobe, thermophobe, décidément, chacun sa croix. Guéris nous vite ! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bataille de petits soldats Dim 25 Mai 2014 - 11:57 | |
| Bein Woui ! Gotophobe, j’en connais au moins un. Sreenophobe, je crois en connaître au moins un aussi. Thermophobe, ça, j’ignore qui c’est. Serait-il un ET type vert ? | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Re: Bataille de petits soldats Dim 25 Mai 2014 - 19:54 | |
| Woui, et qui ne va pas tarder à partir en vacances en direction du Nord quand la chaleur d'été va arriver... (avec le soleil, la couleur verte déteint, et après, ça donne un aspect horrible) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Bataille de petits soldats Ven 13 Juin 2014 - 7:55 | |
| Voici une nouvelle version, vous la trouverez sur sur mon Webdav avec les images. J'ai plus ou moins réussi à donner une IA à mon bourrin. Donc maintenant il ne rate aucun tir et n'expose pas ses soldats aux vôtres (de tir...). Dans les premiers tours, il suit une stratégie (parmi 11) sélectionnée aléatoirement, afin de pousser un peu son avantage. Malgré toutes ces aides, apportées à l'ordinateur, cela reste assez facile de gagner. Je vous conseille de lire l'aide en début de partie, car certaines règles pour l'ordinateur ont changées. Voici le code, il est entièrement libre. - Code:
-
rem ============================================================================ rem La grande bataille rem par Jean Claude avec une remise en forme de Papydall rem ============================================================================ error_french : label erreur on_error_goto erreur start() END rem ============================================================================ erreur: message "objet à charger="+str$(Pos1%)+"grade de Lpion%="+grade$(Lpion%) + "(S.bmp)" message "pion%="+str$(pion%)+" Case="+str$(Cape%)+" Grade="+grade$(n%) return rem ============================================================================ SUB start() dim_label() ' règlage du chemin rep$="C:\Users\JeanClaude\Desktop\Jeu" dir_change rep$ ' règlage du cadrillage dp% = 35 : ' 32 = pas de grille ' Start init() no% = no% + 1 : dlist1%=no% : dlist no%:' remettre ces 2 lignes dans Sub init() no% = no% + 1 : Dlist_tri%=no% : dlist no% ' height dlist1%,height(0)-150 ' left dlist1%,125 fin$ = "E" : partie() END_SUB rem ============================================================================ SUB dim_label() dim c%,kt%,no%,n%,n2%,pion%,tir%,ind_portee%,dep%,expo%,Cape%,Apa% dim nbja%,nbje%,tour%,strategie% dim a$,b$,c$,rep$,msg$,fin$,fin_tir$,prov$ dim grade$(48),num_SD(48),munition%(48),portee%(48),Pos%(48) dim contenu_kaze%(160),case_dep%(3) ' initialise nbje% = 23 : nbja% = 23 ' constante dim dp%,vit% : vit% = 100 ' Label label jeu_ami, pas_dep, dep_ami, dep_ami2, tir_ami,quit application_title " La grande bataille " End_Sub rem =========================================================================== SUB partie() dep%=0:tir%=0:expo%=0:pion%=0:n%=0:prov$="":clear dlist1% ' strategie%=11:' ligne à supprimer <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ' if tour%=0 then DEP(3,43,137):' ligne à supprimer <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ' if tour%=0 then DEP(11,42,157):' ligne à supprimer <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ' if tour%=0 then DEP(19,41,57):' ligne à supprimer <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< if tour% = 0 then msg() wait vit%*2 tour% = tour% + 1 ' caption 0,"tour="+str$(tour%)+" - Stratégie="+str$(strategie%) clear memo1% : item_add memo1%," TOUR ENNEMI " inactive_clics() : Wait vit%*2 if tour%<12 and strategie%=1 then strategies() if tour%<12 and strategie%=2 then strategies() if tour%<22 and strategie%=3 then strategies() if tour%<16 and strategie%=4 then strategies() if tour%<17 and strategie%=5 then strategies() if tour%<14 and strategie%=6 then strategies() if tour%<16 and strategie%=7 then strategies() if tour%<18 and strategie%=8 then strategies() if tour%<11 and strategie%=9 then strategies() if tour%<12 and strategie%=10 then strategies() if tour%<11 and strategie%=11 then strategies()
if fin$ = "E" then Ennemi() if fin$ = "A" then Ami() END_SUB rem ============================================================================ SUB Ennemi() clear memo1% : item_add memo1%," TOUR ENNEMI " inactive_clics() : Wait vit%*2 ' remise à zéro dep%=0:tir%=0:ind_portee%=-1:expo%=0:pion%=0:n%=0:prov$="":clear dlist1% ' recherche des tirs ' pour chaque pion vérifier les cases à portée de tir for pion%=25 to 48 if grade$(pion%)<>"" if pion%<>45 Cape%=pos%(pion%) ' controle des 3 cases de déplacement (colonne 1) c% = Cape% - 21 : ind_portee% = 0 : TIR_SI() c% = Cape% - 1 : ind_portee% = 0 : TIR_SI() c% = Cape% + 19 : ind_portee% = 0 : TIR_SI() ' controle colonne 2 c% = Cape% - 22 : ind_portee% = 1 : TIR_SI() c% = Cape% - 2 : ind_portee% = 1 : TIR_SI() c% = Cape% + 18 : ind_portee% = 1 : TIR_SI() ' controle colonne 3 c% = Cape% - 23 : ind_portee% = 2 : TIR_SI() c% = Cape% - 3 : ind_portee% = 2 : TIR_SI() c% = Cape% + 17 : ind_portee% = 2 : TIR_SI() end_if end_if next pion% ' Déplacement IF COUNT(dlist1%)>0 ' choisir aléatoirement une ligne du dlist et déplace le pion n%=rnd(count(dlist1%)):while n%=0:n%=rnd(count(dlist1%)):end_while a$=item_read$(dlist1%,n%):EXPLODE("|",a$) a$=item_read$(dlist_tri%,1):pion%=val(a$) a$=item_read$(dlist_tri%,2):Cape%=val(a$) a$=item_read$(dlist_tri%,3):c%=val(a$) if grade$(pion%)<>"" DEP(pion%,Cape%,c%) : clear dlist1% ' déplacement supplémentaire en cas de tir ok pour se dégager Cape%=pos%(pion%) ' controle des 3 cases de déplacement (colonne 1) prov$="P2" c% = Cape% - 21 : : Ctrl_DEP() c% = Cape% - 1 : Ctrl_DEP() c% = Cape% + 19 : Ctrl_DEP() if count(dlist1%)>0 ' choisir aléatoirement un pion n%=rnd(count(dlist1%)):while n%=0:n%=rnd(count(dlist1%)):end_while a$=item_read$(dlist1%,n%):EXPLODE("|",a$) a$=item_read$(dlist_tri%,1):pion%=val(a$) a$=item_read$(dlist_tri%,2):Cape%=val(a$) a$=item_read$(dlist_tri%,3):c%=val(a$) if pion%<>45 DEP(pion%,Cape%,c%) : clear dlist1% : prov$="" end_if ' tir supplémentaire <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< il ne le fait pas Cape%=pos%(pion%) ' controle des 3 cases de déplacement (colonne 1) c% = Cape% - 21 : ind_portee% = 0 : TIR_SI() c% = Cape% - 1 : ind_portee% = 0 : TIR_SI() c% = Cape% + 19 : ind_portee% = 0 : TIR_SI() ' controle colonne 2 c% = Cape% - 22 : ind_portee% = 1 : TIR_SI() c% = Cape% - 2 : ind_portee% = 1 : TIR_SI() c% = Cape% + 18 : ind_portee% = 1 : TIR_SI() ' controle colonne 3 c% = Cape% - 23 : ind_portee% = 2 : TIR_SI() c% = Cape% - 3 : ind_portee% = 2 : TIR_SI() c% = Cape% + 17 : ind_portee% = 2 : TIR_SI() end_if end_if ELSE clear dlist1% :prov$="" for n2%=25 to 48 if n2%<>45 pion%=n2% if grade$(pion%)<>"" Cape%=pos%(pion%) ' controle des 3 cases de déplacement (colonne 1) c% = Cape% - 21 : : Ctrl_DEP() c% = Cape% - 1 : Ctrl_DEP() c% = Cape% + 19 : Ctrl_DEP() end_if end_if next n2% if count(dlist1%)>0 ' choisir aléatoirement un pion n%=rnd(count(dlist1%)):while n%=0:n%=rnd(count(dlist1%)):end_while a$=item_read$(dlist1%,n%):EXPLODE("|",a$) a$=item_read$(dlist_tri%,1):pion%=val(a$) a$=item_read$(dlist_tri%,2):Cape%=val(a$) a$=item_read$(dlist_tri%,3):c%=val(a$) if grade$(pion%)<>"" DEP(pion%,Cape%,c%) : clear dlist1% end_if else ' le dlist est vide ' pas de déplacement possible end_if END_IF ' caption 0,"pion%="+str$(pion%)+" Case="+str$(Cape%)+" Grade="+grade$(n%) fin$ = "A" : Ami() END_SUB rem ============================================================================ SUB Ctrl_DEP() if c%>0 and c%<160 if contenu_kaze%(c%)=0 ' analyse l'exposition du pion Apa%=c% : expo%=0 ' colonne 1 kt% = Apa% - 21 : ind_portee% = 0 : Ctrl_EXPO() kt% = Apa% - 1 : ind_portee% = 0 : Ctrl_EXPO() kt% = Apa% + 19 : ind_portee% = 0 : Ctrl_EXPO() ' colonne 2 kt% = Apa% - 22 : ind_portee% = 1 : Ctrl_EXPO() kt% = Apa% - 2 : ind_portee% = 1 : Ctrl_EXPO() kt% = Apa% + 18 : ind_portee% = 1 : Ctrl_EXPO() ' colonne 3 kt% = Apa% - 23 : ind_portee% = 2 : Ctrl_EXPO() kt% = Apa% - 3 : ind_portee% = 2 : Ctrl_EXPO() kt% = Apa% + 17 : ind_portee% = 2 : Ctrl_EXPO() if expo%=0 item_add dlist1%,str$(pion%)+"|"+str$(Cape%)+"|"+str$(c%) end_if end_if end_if END_SUB rem ============================================================================ SUB Ctrl_EXPO() if kt%>0 and kt%<160 if contenu_kaze%(kt%)<>0 and contenu_kaze%(kt%)<>20 if grade$(contenu_kaze%(kt%)) = "sa1T" or grade$(contenu_kaze%(kt%)) = "sa2T" or grade$(contenu_kaze%(kt%)) = "sa3T" if portee%(contenu_kaze%(kt%))>ind_portee% if prov$<>"P2" expo%=expo%+1 end_if end_if end_if end_if end_if END_SUB rem ============================================================================ SUB TIR_SI() if munition%(Pion%)>0 if c%>0 and c%<160 if portee%(pion%)>ind_portee% and contenu_kaze%(c%)<>0 if grade$(contenu_kaze%(c%)) = "sa1T" or grade$(contenu_kaze%(c%)) = "sa2T" or grade$(contenu_kaze%(c%)) = "sa3T" or grade$(contenu_kaze%(c%)) = "DA" TIR(Pion%,Cape%,contenu_kaze%(c%),pos%(contenu_kaze%(c%))) item_add dlist1%,str$(pion%)+"|"+str$(Cape%)+"|"+str$(c%) end_if end_if end_if end_if END_SUB rem ============================================================================ SUB TIR(PionSel%,PosPionSel%,PionCible%,PosPionCible%) fin_tir$="" munition%(PionSel%)=munition%(PionSel%)-1 if munition%(PionSel%)=0 then fin_tir$="OK" ' vérifie si c'est le drapeau if PionCible% = 20 file_load PosPionCible%,"feu.bmp" : wait vit%*3 Message "l'ennemi a pris possession de votre drapeau !"+chr$(13)+chr$(13)+" VOUS AVEZ PERDU CETTE BATAILLE" terminate end_if ' Prend ses munitions (mise à jour du hint) munition%(PionSel%) = (munition%(PionSel%) + munition%(PionCible%)) hint PosPionSel%," Matricule: " + str$(num_SD(PionSel%)) + chr$(13) + " Munitions: " + str$(munition%(PionSel%)) + " Portée: " + str$(portee%(PionSel%)) + " "+chr$(13) + " Position: " + str$(Pos%(PionSel%)) ' tue le et affiche le tir munition%(PionCible%) = 0 : nbja% = nbja% - 1 : caption alpha_nbja%,str$(nbja%) grade$(PionCible%)="":num_SD(PionCible%)=0:portee%(PionCible%)=0:Pos%(PionCible%)=0 file_load PosPionCible%,"feu.bmp" : wait vit%*3 ' remettre la case cible en libre contenu_kaze%(PosPionCible%) = 0 : file_load PosPionCible%,"fond.bmp" : hint PosPionCible%," Terrain libre " if nbja% = 0 then Message "Vos ennemis sont les plus forts, retentez votre chance" + chr$(13) + chr$(13) + " VOUS AVEZ PERDU CETTE BATAILLE" : terminate END_SUB rem ============================================================================ SUB DEP(Lpion%,Pos1%,Pos2%) if Pos2%<0 or Pos2%>160 then exit_sub ' affiche le soldat qui bouge file_load Pos1%,grade$(Lpion%) + "S.bmp" : wait vit% * 4 ' met à jour la position de pion% Pos%(Lpion%) = Pos2% ' affiche la case de déplacement file_load Pos2%,"fondB.bmp" : wait vit%*3 ' met à jour la nouvelle case contenu_kaze%(Pos2%) = Lpion% file_load Pos2%,grade$(Lpion%) + ".bmp" : ' affiche le soldat à sa nouvelle position hint Pos2%," Matricule: " + str$(num_SD(Lpion%)) + chr$(13) + " Munitions: " + str$(munition%(Lpion%)) + " Portée: " + str$(portee%(Lpion%)) + " "+chr$(13) + " Position: " + str$(Pos%(Lpion%)) ' remettre l'ancienne case en libre contenu_kaze%(Pos1%) = 0 : file_load Pos1%,"fond.bmp" : hint Pos1%," Terrain libre " END_SUB rem ============================================================================ SUB EXPLODE(delimiter$,chaine$):' Nardo modifié JC ' Cette sub décompose une ligne d'un fichiers et inscrit chaque élément dans Dlist_tri% 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 rem ============================================================================ Sub active_clics_DEP() dim_local i% for i% = 1 to 160 : on_click i%,Dep_ami : next i% off_click 61 : ' drapeau End_Sub rem ============================================================================ Sub active_clics() dim_local i% for i% = 1 to 160 : on_click i%,Jeu_ami : next i% off_click 61 : ' drapeau End_Sub rem ============================================================================ Sub inactive_clics() dim_local i% for i% = 1 to 160 : off_click i% : next i% End_Sub rem ============================================================================ SUB Ami() inactive Bt_Tir% clear memo1% : item_add memo1%," VOTRE TOUR " item_add memo1%," " : item_add memo1%," Sélectionnez un de vos soldats par un clic" ' sélection d'un soldat active_clics() END_SUB rem ============================================================================ Jeu_ami: Apa% = number_click if Apa% = 61 then message "Vous ne pouvez pas déplacer votre drapeau" : return : ' drapeau if contenu_kaze%(Apa%) = 0 message " Cette case est vide. Vous devez sélectionner un de vos soldat " : return end_if pion% = contenu_kaze%(Apa%) if num_SD(pion%)>25 message " Vous devez sélectionner un de vos soldat " : return end_if ' contoler les 3 cases de déplacement dep% = 0 : tir% = 0 c% = Apa% - 19 : Ctrl_DEPTIRA(c%) : ' sup c% = Apa% + 1 : Ctrl_DEPTIRA(c%) : ' devant c% = Apa% + 21 : Ctrl_DEPTIRA(c%) : ' inf ' joue le pion si pas jouable recommence if dep% = 0 and tir% = 0 then message " Ce soldat ne peut pas bouger" : return ' à partir d'ici le pion peut jouer file_load apa%,grade$(pion%) + "S.bmp" : ' affiche le soldat qui bouge wait vit%*2 ' si munition ' en priorité les tirs ' rangée 1 c% = Apa% - 19 : Ctrl_TIRA1(c%) c% = Apa% + 1 : Ctrl_TIRA1(c%) c% = Apa% + 21 : Ctrl_TIRA1(c%) ' vérifier les 6 autres cases pour savoir si tir(s) à faire ' rangée 2 if portee%(pion%) > 1 c% = Apa% - 18 : Ctrl_TIRA(c%) c% = Apa% + 2 : Ctrl_TIRA(c%) c% = Apa% + 22 : Ctrl_TIRA(c%) end_if ' rangée 3 if portee%(pion%) > 2 c% = Apa% - 17 : Ctrl_TIRA(c%) c% = Apa% + 3 : Ctrl_TIRA(c%) c% = Apa% + 23 : Ctrl_TIRA(c%) end_if fin_tir$ = "" if tir% > 0 active Bt_Tir% : on_click Bt_Tir%,tir_ami suite_jeu1() end_if suite_jeu2() return rem ============================================================================ Sub Ctrl_DEPTIRA(Lc%) dim_local kt% if Lc% < 1 or Lc% > 160 exit_sub else if contenu_kaze%(Lc%) = 0 dep% = dep% + 1 : Exit_Sub : ' déplacement possible, tir impossible end_if end_if if contenu_kaze%(Lc%) <> 0 kt% = contenu_kaze%(Lc%) if grade$(kt%) = "sa1T" or grade$(kt%) = "sa2T" or grade$(kt%) = "sa3T" Exit_Sub end_if if grade$(kt%) = "se1T" or grade$(kt%) = "se2T" or grade$(kt%) = "se3T" dep% = dep% + 1 : tir% = tir% + 1 : Exit_Sub : ' cette case sera libérée end_if if grade$(kt%) = "DE" tir% = tir% + 1 : Exit_Sub end_if end_if End_Sub rem ============================================================================ Sub Ctrl_TIRA(Lc%) dim_local kt% if Lc% < 1 or Lc% > 160 exit_sub else if contenu_kaze%(Lc%) = 0 file_load Lc%,"fondTV.bmp" Exit_Sub : ' tir impossible end_if end_if if contenu_kaze%(Lc%) <> 0 kt% = contenu_kaze%(Lc%) if grade$(kt%) = "sa1T" or grade$(kt%) = "sa2T" or grade$(kt%) = "sa3T" Exit_Sub end_if if grade$(kt%) = "se1T" or grade$(kt%) = "se2T" or grade$(kt%) = "se3T" file_load Lc%,grade$(kt%) + "C.bmp" tir% = tir% + 1 : Exit_Sub end_if if grade$(kt%) = "DE" tir% = tir% + 1 : Exit_Sub end_if end_if End_Sub rem ============================================================================ Sub Ctrl_TIRA1(Lc%) dim_local kt% if Lc% < 1 or Lc% > 160 exit_sub else if contenu_kaze%(Lc%) = 0 file_load Lc%,"fondDT.bmp" Exit_Sub : ' tir impossible end_if end_if if contenu_kaze%(Lc%) <> 0 kt% = contenu_kaze%(Lc%) if grade$(kt%) = "sa1T" or grade$(kt%) = "sa2T" or grade$(kt%) = "sa3T" Exit_Sub end_if if grade$(kt%) = "se1T" or grade$(kt%) = "se2T" or grade$(kt%) = "se3T" file_load Lc%,grade$(kt%) + "C.bmp" tir% = tir% + 1 : Exit_Sub end_if if grade$(kt%) = "DE" tir% = tir% + 1 : Exit_Sub end_if end_if End_Sub rem ============================================================================ Sub ADEPA(Lc%) if Lc% < 1 or Lc% > 160 exit_sub : ' hors cadre else if contenu_kaze%(Lc%) = 0 ' affiche et repère la case de déplacement case_dep%(n%) = Lc% : file_load Lc%,"fondDT.bmp" end_if end_if end_sub rem ============================================================================ Sub DEPA(Lc%,LApa%) if Lc% < 1 or Lc% > 160 exit_sub else ' met à jour la position de pion% Pos%(pion%) = Lc% ' met à jour la nouvelle case contenu_kaze%(Lc%) = pion% file_load Lc%,grade$(pion%) + ".bmp" : ' affiche le soldat à sa nouvelle position hint Lc%," Matricule: " + str$(num_SD(pion%)) + chr$(13) + " Munitions: " + str$(munition%(pion%)) + " Portée: " + str$(portee%(pion%)) + " " + chr$(13) + " Position: " + str$(Pos%(pion%)) wait vit% ' remettre l'ancienne case en libre contenu_kaze%(LApa%) = 0 : file_load LApa%,"fond.bmp" : hint LApa%," Terrain libre " end_if end_sub rem ============================================================================ Pas_Dep: c% = Pos%(pion%) PADEPA(c%) ' mise à jour cases vides for n% = 1 to 160 if contenu_kaze%(n%) = 0 then file_load n%,"fond.bmp" next n% inactive Bt_Dep% : inactive Bt_NoDep% ' fin du tour fin$ = "E" : partie() return rem ============================================================================ Sub PADEPA(Lc%) if Lc%<1 or Lc%>160 exit_sub else file_load Lc%,grade$(pion%)+".bmp":' affiche le soldat (normal) à sa position hint Lc%," Matricule: "+str$(num_SD(pion%))+chr$(13)+" Munitions: "+str$(munition%(pion%))+" Portée: "+str$(portee%(pion%))+" "+chr$(13)+" Position: "+str$(Pos%(pion%)) wait vit% end_if end_sub rem ============================================================================ Dep_ami: inactive Bt_NoDep% : inactive_clics() c% = number_click : dep% = 0 for n%=1 to 3 if case_dep%(n%) = c% then dep% = dep% + 1 next n% if dep% = 0 message " Vous devez sélectionner une case en bleu" ' goto Suite_jeu2 n% = 1 : c% = Apa% - 19 : ADEPA(c%) : ' sup n% = 2 : c% = Apa% + 1 : ADEPA(c%) : ' devant n% = 3 : c% = Apa% + 21 : ADEPA(c%) : ' inf ' choix de déplacer ou pas active Bt_NoDep% : on_click Bt_NoDep%,Pas_Dep ' active déplacement active_clics_DEP() clear memo1% : item_add memo1%," VOTRE TOUR " item_add memo1%," " : item_add memo1%," Sélectionnez une case bleu pour déplacer votre soldat" item_add memo1%," " : item_add memo1%," Ou cliquez sur le bouton [Pas de déplacement]" return end_if file_load c%,"fondB.bmp" : wait vit% clear memo1%:item_add memo1%," VOTRE TOUR " item_add memo1%," " : item_add memo1%," Cliquez sur le bouton [Déplacement] " active Bt_Dep% : on_click Bt_Dep%,Dep_ami2 return rem ============================================================================ Dep_ami2: DEPA(c%,Apa%) ' mise à jour cases vides for n% = 1 to 160 if contenu_kaze%(n%) = 0 then file_load n%,"fond.bmp" next n% inactive Bt_Dep% : inactive Bt_NoDep% ' fin du tour fin$ = "E" : partie() return rem ============================================================================ SUB Suite_jeu1() clear memo1% : item_add memo1%," VOTRE TOUR " item_add memo1%," " : item_add memo1%," Cliquez sur le bouton [TIR]" if fin_tir$ <> "OK" inactive_clics() : return else inactive Bt_Tir% end_if END_SUB rem ============================================================================ SUB Suite_jeu2() ' affiche les cases de déplacement n% = 1 : c% = Apa% - 19 : ADEPA(c%) : ' sup n% = 2 : c% = Apa% + 1 : ADEPA(c%) : ' devant n% = 3 : c% = Apa% + 21 : ADEPA(c%) : ' inf ' choix de déplacer ou pas active Bt_NoDep% : on_click Bt_NoDep%,Pas_Dep ' active déplacement active_clics_DEP() clear memo1% : item_add memo1%," VOTRE TOUR " item_add memo1%," " : item_add memo1%," Sélectionnez une case bleu pour déplacer votre soldat" item_add memo1%," " : item_add memo1%," Ou cliquez sur le bouton [Pas de déplacement]" END_SUB rem ============================================================================ tir_ami: ' les tirs if tir% > 0 ' recherche dans chacune des 9 cases un ennemi, si oui tire if munition%(pion%) > 0 ' RANGEE 1 valable quelque soit la portée de tir if fin_tir$ <> "OK" then c% = Apa% - 19 : TIRA(c%,Apa%) : ' sup if fin_tir$ <> "OK" then c% = Apa% + 1 : TIRA(c%,Apa%) : ' devant if fin_tir$ <> "OK" then c% = Apa% + 21 : TIRA(c%,Apa%) : ' inf if portee%(pion%) > 1 ' RANGEE 2 if fin_tir$ <> "OK" then c% = Apa% - 18 : TIRA(c%,Apa%) : ' sup if fin_tir$ <> "OK" then c% = Apa% + 2 : TIRA(c%,Apa%) : ' devant if fin_tir$ <> "OK" then c% = Apa% + 22 : TIRA(c%,Apa%) : ' inf end_if if portee%(pion%) > 2 ' RANGEE 3 if fin_tir$ <> "OK" then c% = Apa% - 17 : TIRA(c%,Apa%) : ' sup if fin_tir$ <> "OK" then c% = Apa% + 3 : TIRA(c%,Apa%) : ' devant if fin_tir$ <> "OK" then c% = Apa% + 23 : TIRA(c%,Apa%) : ' inf end_if else message "Votre Solat n'a plus de munitions" end_if end_if fin_tir$ = "OK" : Suite_jeu1() : suite_jeu2() return
rem ============================================================================ Sub TIRA(Lc%,LApa%) if munition%(pion%) = 0 then fin_tir$ = "OK":message "Votre soldat n'a plus de munitions":exit_sub if munition%(pion%) > 0 if Lc% < 1 or Lc% > 160 exit_sub : ' hors cadre else ' si le contenu de la case est de 24 à 48, il y a un ennemi if contenu_kaze%(Lc%) > 24 and contenu_kaze%(Lc%) < 49 munition%(pion%) = munition%(pion%) - 1 : ' pour le tir if munition%(pion%) = 0 then fin_tir$ = "OK":message "Votre soldat à tiré sa dernière munition,"+chr$(13)+"mais il va récuperer celle(s) du soldat ennemi.":fin_tir$="OK" ' contenu_kaze%(Lc%) = matricule du soldat à tuer if contenu_kaze%(Lc%) = 45 file_load Lc%,"feu.bmp" : wait vit%*2 Message "BRAVO! Vous avez pris possession du drapeau ennemi !"+chr$(13)+chr$(13)+" VOUS AVEZ GAGNE CETTE BATAILLE" terminate end_if ' Prend ses munitions et décompte ton tir munition%(pion%) = munition%(pion%)+munition%(contenu_kaze%(Lc%)) ' tue le, met à jour et affiche le tir nbje% = nbje% - 1 : caption alpha_nbje%,str$(nbje%) munition%(contenu_kaze%(Lc%)) = 0 : grade$(contenu_kaze%(Lc%))="" portee%(contenu_kaze%(Lc%))=0 : Pos%(contenu_kaze%(Lc%))=0 file_load Lc%,"feu.bmp" : wait vit%*2 ' remettre la case en feu libre contenu_kaze%(Lc%) = 0 : file_load Lc%,"fond.bmp" : hint Lc%," Terrain libre " end_if end_if if nbje% = 0 then Message "BRAVO! Vos soldats sont les plus forts"+chr$(13)+chr$(13)+" VOUS AVEZ GAGNE CETTE BATAILLE":terminate if fin_tir$ = "OK" then Suite_jeu1() : Suite_jeu2() end_if End_sub rem ============================================================================ Sub msg() a$=" VOTRE MISSION: Capturer le drapeau ennemi (les rouges), avant qu'ils ne capturent le vôtre ou exterminent tous vos soldats."+chr$(13)+chr$(13) a$=a$+" UN CONSEIL: à votre première partie (également pendant la bataille), déplacez la souris sur les soldats (les vôtres ou les ennemis)"+chr$(13) a$=a$+" et regardez bien les infos bulles (en particulier pour connaître les munitions de l'ennemi)."+chr$(13)+chr$(13) a$=a$+" VOTRE ADVERSAIRE (l'ordinateur), en cas de tir sur un de vos soldats, se déplacera à la position du soldat tué."+chr$(13) a$=a$+" Dans ce cas, il a droit à un déplacement supplémentaire avant de passer son tour."+chr$(13) a$=a$+" Après ce déplacement supplémentaire, il est possible qu'il fasse un nouveau tir (pas toujours), et attendra le prochain tour pour bouger."+chr$(13) a$=a$+" Ses soldats reviennent dans leur camp quand ils ont avancés au bout du terrain (Les vôtres aussi)."+chr$(13) a$=a$+" Sachez que l'ordinateur n'expose pas ses soldats inutilement, il préfère passer son tour et c'est très rate qu'il rate un tir."+chr$(13) a$=a$+" Il dispose de 11 généraux qui ont chacun leur propre stratégie, mais quelquefois il ne les écoute pas."+chr$(13)+chr$(13) a$=a$+" Pour le déroulement du jeu, suivez les instructions indiquées dans le mémo"+chr$(13)+chr$(13) a$=a$+" Pour vaincre plus facilement évitez de bloquer tous les soldat adverse, vous pourriez le regretter."+chr$(13) a$=a$+ " Pour gagner, le mieux est de capturer le drapeau rapidement. Bonne chance !" message a$ end_sub rem ============================================================================ Sub init() dim memo1%,Bt_Tir%,Bt_Dep%,Bt_NoDep%,alpha_nbja%,alpha_nbje%,dlist1%,Dlist_tri% width 0,(dp%*21)-(dp%/2) : height 0,dp%*14 top 0,((screen_y/2)-(height(0)/2)) : left 0,(screen_x/2)-(width(0)/2) color 0,220,230,255 : caption 0," La grande bataille" piste() no%=no%+1:memo1%=no%:memo no%:parent no%,0:height no%,130:width no%,280:font_bold no% top no%,height(0)-(height(no%)*2)+80:left no%,(width(0)/2)-(width(no%)/2) no% = no% + 1 : Bt_Tir% = no% : button no% : parent no%,0 : font_bold no% : caption no%,"Tir" top no%,top(memo1%)+(height(memo1%)/2)-45 : left no%,40 : inactive no% no% = no% + 1 : Bt_Dep% = no% : button no% : parent no%,0 : width no%,125 : font_bold no% : caption no%," Déplacement " top no%,top(Bt_Tir%)+35 : left no%,18 : inactive no% no% = no% + 1 : Bt_NoDep% = no% : button no% : parent no%,0 : width no%,125 : font_bold no% : caption no%,"Pas de déplacement" top no%,top(Bt_Dep%)+35 : left no%,18 : inactive no% no% = no% + 1 : alpha_nbja% = no% : alpha no% : parent no%,0 : font_bold no% : font_size no%,14 top no%,top(Bt_Tir%)-30 : left no%,63 : font_color no%,0,150,50 : caption no%,str$(nbja%) no% = no% + 1 : alpha_nbje% = no% : alpha no% : parent no%,0 : font_bold no% : font_size no%,14 top no%,top(alpha_nbja%) : left no%,Width(0)-70 : font_color no%,255,0,0 : caption alpha_nbje%,str$(nbje%) no% = no% + 1 : button no% : left no%,600 : top no%,400 : caption no%,"Quitter" : on_click no%,quit ' choisir une stratégie pour l'ordinateur n%=int(rnd(11)):strategie%=n% End_Sub rem ============================================================================ Sub piste() dim_local i% no% = 1 : picture no% : parent no%,0 : width no%,dp% : height no%,dp% : top no%,0 : left no%,0 for i% = 2 to 160 no% = no% + 1 : picture no% : parent no%,0 : width no%,dp% : height no%,dp% if left(no%-1) < dp%*19 top no%,top(no%-1) : left no%,left(no%-1) + dp% else top no%,top(no%-1) + dp% : left no%,0 end_if next i% ' charger l'image case vide dans toute les cases for i% = 1 to 160 contenu_kaze%(i%) = 0 :file_load i%,"fond.bmp":hint i%," Terrain libre " next i% ' attribution des grades, matricule, munition, portée de l'arme, et état des cases i% = 40 for n% = 20 to 160 step 20 i% = i% + 1 : num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "se3T" munition%(num_SD(i%)) = 1 : portee%(num_SD(i%)) = 3 contenu_kaze%(n%) = num_SD(i%) : file_load n%,grade$(i%)+".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portée: " + str$(portee%(num_SD(i%))) + " " + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% ' drapeau i% = 45 : n% = 100 num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "DE" contenu_kaze%(n%) = num_SD(i%) : file_load n%,grade$(i%) + ".bmp" munition%(num_SD(i%)) = 0 : portee%(num_SD(i%)) = 0 : hint n%," Drapeau ennemi" i% = 32 : wait 100 for n% = 19 to 160 step 20 i% = i% + 1 : num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "se2T" munition%(num_SD(i%)) = 1 : portee%(num_SD(i%)) = 2 contenu_kaze%(n%) = num_SD(i%) : file_load n%,grade$(i%) + ".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portése " + str$(portee%(num_SD(i%))) + " " + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% i% = 24 : wait 100 for n% = 18 to 160 step 40 i% = i% + 1 : num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "se1T" munition%(num_SD(i%)) = 3 : portee%(num_SD(i%)) = 1 contenu_kaze%(n%) = num_SD(i%) : file_load n%,grade$(i%) + ".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portée: " + str$(portee%(num_SD(i%))) + " " + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% for n% = 38 to 160 step 40 i% = i% + 1 : num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "se1T" munition%(num_SD(i%)) = 3 : portee%(num_SD(i%)) = 1 contenu_kaze%(n%) = num_SD(i%) : file_load n%,grade$(i%) + ".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portée: " + str$(portee%(num_SD(i%))) + " " + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% i% = 0 : wait 100 for n% = 3 to 160 step 20 i% = i% + 1:num_SD(i%) = i%:Pos%(num_SD(i%)) = n%:grade$(i%) = "sa1T" munition%(num_SD(i%)) = 3:portee%(num_SD(i%)) = 1 contenu_kaze%(n%) = num_SD(i%):file_load n%,grade$(i%) + ".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portée: " + str$(portee%(num_SD(i%))) + " " + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% i% = 8 : wait 100 for n% = 2 to 160 step 20 i% = i% + 1:num_SD(i%) = i%:Pos%(num_SD(i%)) = n%:grade$(i%) = "sa2T":num_SD(i%) = i% munition%(num_SD(i%)) = 1:portee%(num_SD(i%)) = 2 contenu_kaze%(n%) = num_SD(i%):file_load n%,grade$(i%) + ".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portée: " + str$(portee%(num_SD(i%))) + " " + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% i% = 16 : wait 100 for n% = 1 to 160 step 20 i% = i% + 1 : num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "sa3T" : num_SD(i%) = i% munition%(num_SD(i%)) = 1 : portee%(num_SD(i%)) = 3 contenu_kaze%(n%) = num_SD(i%) : file_load n%,grade$(i%) + ".bmp" hint n%," Matricule: " + str$(num_SD(i%)) + chr$(13) + " Munitions: " + str$(munition%(num_SD(i%))) + " Portée: " + str$(portee%(num_SD(i%))) + chr$(13) + " Position: " + str$(Pos%(num_SD(i%))) next n% ' drapeau i% = 20 : n% = 61 num_SD(i%) = i% : Pos%(num_SD(i%)) = n% : grade$(i%) = "DA" contenu_kaze%(n%) = num_SD(i%) : file_load n%,grade$(i%) + ".bmp" munition%(num_SD(i%)) = 0 : portee%(num_SD(i%)) = 0 : hint n%," Drapeau de vos soldats" wait 100 End_Sub rem ============================================================================ Sub strategies() ' stratégies ennemi 1 if fin$ = "E" and strategie%=1 if tour%=1 then DEP(26,58,77) : fin$ = "A" : Ami() if tour%=2 then DEP(35,59,58) : fin$ = "A" : Ami() if tour%=3 then DEP(35,58,37) : fin$ = "A" : Ami() if tour%=4 then DEP(43,60,59) : fin$ = "A" : Ami() if tour%=5 then DEP(43,59,58) : fin$ = "A" : Ami() if tour%=6 then DEP(35,37,16) : fin$ = "A" : Ami() if tour%=7 then DEP(43,58,37) : fin$ = "A" : Ami() if tour%=8 then DEP(43,37,36) : fin$ = "A" : Ami() if tour%=9 then DEP(43,36,35) : fin$ = "A" : Ami() if tour%=10 then DEP(43,35,34) : fin$ = "A" : Ami() if tour%=11 then DEP(43,34,33) : fin$ = "A" : Ami() end_if ' stratégies ennemi 2 if fin$ = "E" and strategie%=2 if tour%=1 then DEP(28,138,157) : fin$ = "A" : Ami() if tour%=2 then DEP(39,139,138) : fin$ = "A" : Ami() if tour%=3 then DEP(39,138,137) : fin$ = "A" : Ami() if tour%=4 then DEP(39,137,156) : fin$ = "A" : Ami() if tour%=5 then DEP(47,140,139) : fin$ = "A" : Ami() if tour%=6 then DEP(47,139,138) : fin$ = "A" : Ami() if tour%=7 then DEP(47,138,137) : fin$ = "A" : Ami() if tour%=8 then DEP(47,137,136) : fin$ = "A" : Ami() if tour%=9 then DEP(47,136,135) : fin$ = "A" : Ami() if tour%=10 then DEP(47,135,134) : fin$ = "A" : Ami() if tour%=11 then DEP(47,134,133) : fin$ = "A" : Ami() end_if ' stratégies ennemi 3 if fin$ = "E" and strategie%=3 if tour%=1 then DEP(28,138,157) : fin$ = "A" : Ami() if tour%=2 then DEP(29,38,17) : fin$ = "A" : Ami() if tour%=3 then DEP(31,118,97) : fin$ = "A" : Ami() if tour%=4 then DEP(26,58,77) : fin$ = "A" : Ami() if tour%=5 then DEP(35,59,38) : fin$ = "A" : Ami() if tour%=6 then DEP(38,119,138) : fin$ = "A" : Ami() if tour%=7 then DEP(47,140,119) : fin$ = "A" : Ami() if tour%=8 then DEP(42,40,59) : fin$ = "A" : Ami() if tour%=9 then DEP(47,119,118) : fin$ = "A" : Ami() if tour%=10 then DEP(42,59,58) : fin$ = "A" : Ami() if tour%=11 then DEP(47,118,137) : fin$ = "A" : Ami() if tour%=12 then DEP(42,58,37) : fin$ = "A" : Ami() if tour%=13 then DEP(43,60,59) : fin$ = "A" : Ami() if tour%=14 then DEP(43,59,58) : fin$ = "A" : Ami() if tour%=15 then DEP(43,58,57) : fin$ = "A" : Ami() if tour%=16 then DEP(43,57,76) : fin$ = "A" : Ami() if tour%=17 then DEP(43,76,95) : fin$ = "A" : Ami() if tour%=18 then DEP(43,95,94) : fin$ = "A" : Ami() if tour%=19 then DEP(43,94,93) : fin$ = "A" : Ami() if tour%=20 then DEP(43,93,112) : fin$ = "A" : Ami() if tour%=21 then DEP(43,112,131) : fin$ = "A" : Ami() end_if ' stratégies ennemi 4 if fin$ = "E" and strategie%=4 if tour%=1 then DEP(28,138,157) : fin$ = "A" : Ami() if tour%=2 then DEP(39,139,138) : fin$ = "A" : Ami() if tour%=3 then DEP(31,118,97) : fin$ = "A" : Ami() if tour%=4 then DEP(39,138,137) : fin$ = "A" : Ami() if tour%=5 then DEP(39,137,136) : fin$ = "A" : Ami() if tour%=6 then DEP(38,119,138) : fin$ = "A" : Ami() if tour%=7 then DEP(47,140,119) : fin$ = "A" : Ami() if tour%=8 then DEP(38,138,137) : fin$ = "A" : Ami() if tour%=9 then DEP(39,136,135) : fin$ = "A" : Ami() if tour%=10 then DEP(38,137,156) : fin$ = "A" : Ami() if tour%=11 then DEP(38,156,155) : fin$ = "A" : Ami() if tour%=12 then DEP(47,119,118) : fin$ = "A" : Ami() if tour%=13 then DEP(47,118,117) : fin$ = "A" : Ami() if tour%=14 then DEP(47,117,116) : fin$ = "A" : Ami() if tour%=15 then DEP(29,38,17) : fin$ = "A" : Ami() end_if ' stratégies ennemi 5 if fin$ = "E" and strategie%=5 if tour%=1 then DEP(28,138,157) : fin$ = "A" : Ami() if tour%=2 then DEP(31,118,137) : fin$ = "A" : Ami() if tour%=3 then DEP(27,98,117) : fin$ = "A" : Ami() if tour%=4 then DEP(27,117,136) : fin$ = "A" : Ami() if tour%=5 then DEP(27,136,155) : fin$ = "A" : Ami() if tour%=6 then DEP(31,137,156) : fin$ = "A" : Ami() if tour%=7 then DEP(30,78,57) : fin$ = "A" : Ami() if tour%=8 then DEP(30,57,36) : fin$ = "A" : Ami() if tour%=9 then DEP(30,36,15) : fin$ = "A" : Ami() if tour%=10 then DEP(29,38,17) : fin$ = "A" : Ami() if tour%=11 then DEP(47,119,138) : fin$ = "A" : Ami() if tour%=12 then DEP(47,138,137) : fin$ = "A" : Ami() if tour%=13 then DEP(47,137,136) : fin$ = "A" : Ami() if tour%=14 then DEP(47,136,115) : fin$ = "A" : Ami() if tour%=15 then DEP(26,58,37) : fin$ = "A" : Ami() if tour%=16 then DEP(26,37,16) : fin$ = "A" : Ami() end_if ' stratégies ennemi 6 if fin$ = "E" and strategie%=6 if tour%=1 then DEP(27,98,117) : fin$ = "A" : Ami() if tour%=2 then DEP(36,79,98) : fin$ = "A" : Ami() if tour%=3 then DEP(43,60,79) : fin$ = "A" : Ami() if tour%=4 then DEP(30,78,57) : fin$ = "A" : Ami() if tour%=5 then DEP(43,79,78) : fin$ = "A" : Ami() if tour%=6 then DEP(43,78,77) : fin$ = "A" : Ami() if tour%=7 then DEP(43,77,76) : fin$ = "A" : Ami() if tour%=8 then DEP(43,76,75) : fin$ = "A" : Ami() if tour%=9 then DEP(35,59,78) : fin$ = "A" : Ami() if tour%=10 then DEP(26,58,37) : fin$ = "A" : Ami() if tour%=11 then DEP(43,75,54) : fin$ = "A" : Ami() if tour%=12 then DEP(43,54,53) : fin$ = "A" : Ami() if tour%=13 then DEP(42,40,39) : fin$ = "A" : Ami() end_if ' stratégies ennemi 7 if fin$ = "E" and strategie%=7 if tour%=1 then DEP(28,138,117) : fin$ = "A" : Ami() if tour%=2 then DEP(29,38,17) : fin$ = "A" : Ami() if tour%=3 then DEP(34,39,38) : fin$ = "A" : Ami() if tour%=4 then DEP(34,38,37) : fin$ = "A" : Ami() if tour%=5 then DEP(42,40,39) : fin$ = "A" : Ami() if tour%=6 then DEP(42,39,38) : fin$ = "A" : Ami() if tour%=7 then DEP(39,139,138) : fin$ = "A" : Ami() if tour%=8 then DEP(39,138,137) : fin$ = "A" : Ami() if tour%=9 then DEP(47,140,139) : fin$ = "A" : Ami() if tour%=10 then DEP(47,139,138) : fin$ = "A" : Ami() if tour%=11 then DEP(47,138,157) : fin$ = "A" : Ami() if tour%=12 then DEP(42,38,57) : fin$ = "A" : Ami() if tour%=13 then DEP(47,157,136) : fin$ = "A" : Ami() if tour%=14 then DEP(34,37,16) : fin$ = "A" : Ami() if tour%=15 then DEP(42,57,76) : fin$ = "A" : Ami() end_if ' stratégies ennemi 8 if fin$ = "E" and strategie%=8 if tour%=1 then DEP(28,138,137) : fin$ = "A" : Ami() if tour%=2 then DEP(27,98,97) : fin$ = "A" : Ami() if tour%=3 then DEP(26,58,57) : fin$ = "A" : Ami() if tour%=4 then DEP(25,18,17) : fin$ = "A" : Ami() if tour%=5 then DEP(35,59,58) : fin$ = "A" : Ami() if tour%=6 then DEP(37,99,98) : fin$ = "A" : Ami() if tour%=7 then DEP(39,139,138) : fin$ = "A" : Ami() if tour%=8 then DEP(33,19,18) : fin$ = "A" : Ami() if tour%=9 then DEP(35,58,77) : fin$ = "A" : Ami() if tour%=10 then DEP(39,138,117) : fin$ = "A" : Ami() if tour%=11 then DEP(47,140,139) : fin$ = "A" : Ami() if tour%=12 then DEP(43,60,59) : fin$ = "A" : Ami() if tour%=13 then DEP(47,139,138) : fin$ = "A" : Ami() if tour%=14 then DEP(43,59,58) : fin$ = "A" : Ami() if tour%=15 then DEP(47,138,157) : fin$ = "A" : Ami() if tour%=16 then DEP(43,58,37) : fin$ = "A" : Ami() if tour%=17 then DEP(42,40,59) : fin$ = "A" : Ami() end_if ' stratégies ennemi 9 if fin$ = "E" and strategie%=9 if tour%=1 then DEP(29,38,57) : fin$ = "A" : Ami() if tour%=2 then DEP(29,57,56) : fin$ = "A" : Ami() if tour%=3 then DEP(29,56,55) : fin$ = "A" : Ami() if tour%=4 then DEP(29,55,54) : fin$ = "A" : Ami() if tour%=5 then DEP(29,54,53) : fin$ = "A" : Ami() if tour%=6 then DEP(25,18,37) : fin$ = "A" : Ami() if tour%=7 then DEP(25,37,36) : fin$ = "A" : Ami() if tour%=8 then DEP(26,58,77) : fin$ = "A" : Ami() if tour%=9 then DEP(33,19,38) : fin$ = "A" : Ami() if tour%=10 then DEP(33,38,57) : fin$ = "A" : Ami() end_if ' stratégies ennemi 10 if fin$ = "E" and strategie%=10 if tour%=1 then DEP(29,38,57) : fin$ = "A" : Ami() if tour%=2 then DEP(34,39,38) : fin$ = "A" : Ami() if tour%=3 then DEP(34,38,37) : fin$ = "A" : Ami() if tour%=4 then DEP(34,37,56) : fin$ = "A" : Ami() if tour%=5 then DEP(29,57,76) : fin$ = "A" : Ami() if tour%=6 then DEP(29,76,55) : fin$ = "A" : Ami() if tour%=7 then DEP(34,56,75) : fin$ = "A" : Ami() if tour%=8 then DEP(34,75,54) : fin$ = "A" : Ami() if tour%=9 then DEP(29,55,74) : fin$ = "A" : Ami() if tour%=10 then DEP(29,74,73) : fin$ = "A" : Ami() if tour%=11 then DEP(42,40,39) : fin$ = "A" : Ami() end_if ' stratégies ennemi 11 if fin$ = "E" and strategie%=11 if tour%=1 then DEP(28,138,137) : fin$ = "A" : Ami() if tour%=2 then DEP(28,137,136) : fin$ = "A" : Ami() if tour%=3 then DEP(39,139,138) : fin$ = "A" : Ami() if tour%=4 then DEP(39,138,137) : fin$ = "A" : Ami() if tour%=5 then DEP(47,140,139) : fin$ = "A" : Ami() if tour%=6 then DEP(47,139,138) : fin$ = "A" : Ami() if tour%=7 then DEP(47,138,117) : fin$ = "A" : Ami() if tour%=8 then DEP(47,117,116) : fin$ = "A" : Ami() if tour%=9 then DEP(47,116,135) : fin$ = "A" : Ami() if tour%=10 then DEP(48,160,139) : fin$ = "A" : Ami() end_if End_Sub rem ============================================================================ quit: if message_confirmation_yes_no("Vous voulez vraiment quitter ?") = 1 then terminate return rem ================= F I N ====================================================
Amusez-vous bien.
Dernière édition par Jean Claude le Ven 13 Juin 2014 - 12:00, édité 1 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bataille de petits soldats Ven 13 Juin 2014 - 8:03 | |
| Pas le temps d'essayer ce matin, mais ça promet. Bien joué Jean-Claude. Au fait par rapport à ta remarque, il faut quand même que l'on puisse gagner facilement, sinon ce serait frustrant | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Bataille de petits soldats Ven 13 Juin 2014 - 12:04 | |
| C'est bien ce que je dis: - Citation :
- Malgré toutes ces aides, apportées à l'ordinateur, cela reste assez facile de gagner.
Ce qui m'amène à dire que, ce jeu perd assez vite de son intérêt au bout d'un certain nombre de parties, car je sais que vous ne manquerez pas de trouver des stratégies imparables. | |
| | | mimic
Nombre de messages : 103 Localisation : france Date d'inscription : 02/09/2009
| Sujet: Re: Bataille de petits soldats Ven 13 Juin 2014 - 14:25 | |
| Joli jeu, tous semble fonctionner correctement, Bravo !
( Cependant, c’est long de déplacer les soldats d’une seule case à la fois…)
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bataille de petits soldats Ven 13 Juin 2014 - 23:12 | |
| Testé, le jeu est bien Jean-Claude. Maintenant, je pense que tu peux dire que tu l'as mené au bout. Bien sûr avec l'IA, on peut toujours faire mieux mais pour moi, c'est largement suffisant. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Bataille de petits soldats Sam 14 Juin 2014 - 8:04 | |
| Merci pour vos commentaires, Mimic, tu as raison le champ de bataille est trop long à traverser (ou il faudrait se déplacer de plusieurs cases)
L'IA c'est pas de la tarte à faire, je n'ai pas trouvé mieux.
Ce jeu peut servir de base pour en faire d'autres en changeant les images et les règles. J'y pense.....
A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bataille de petits soldats Sam 14 Juin 2014 - 11:12 | |
| Tout à fait Jean-CLaude, c'est l'un des intérêt de ton jeu. C'est que c'est le premier de ce type et qu'il est adaptable, perfectible, etc par toi ou d'autres. Le moteur du jeu existe et il fonctionne bien. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Bataille de petits soldats Sam 14 Juin 2014 - 13:07 | |
| Et puis l'Intelligence Artificielle c'est le contraire de la Bêtise Naturelle. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Bataille de petits soldats Sam 14 Juin 2014 - 18:22 | |
| Wouais JL35, Moi je n'ai pas d'IA, j'ai été élevé au "Choco-BN". Du coup ça a fait un mélange, maintenant j'ai une IN (Intelligence Naturelle) et une BA (Bêtise Artificielle). | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Bataille de petits soldats Sam 14 Juin 2014 - 18:40 | |
| T'as de la chance Jean Claude, il vaut mieux ça que l'inverse ! de mon temps (au Moyen Age) le choco BN n'avait pas encore été inventé, alors j'ai des carences... Bonne fête des pères quand même ! (moi c'est ce soir, resto). Et j'espère que ça continue à aller mieux pour toi. | |
| | | Contenu sponsorisé
| Sujet: Re: Bataille de petits soldats | |
| |
| | | | Bataille de petits soldats | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |