Forum Liberty Basic France : Voir tous les messages du membre
• Index
Nouvelle version qui équilibre les deux populations, corrige des bugs et donne la capacité aux carnivore d'attaque tous les herbivores dans un périmètre donné (ici, 9 cases autour d'eux) afin de facilité la chasse.
grosse mise a jour depuis la dernière version qui peaufine l'éditeur de map, optimise le code et rends le tout plus lisible =).
nouvelle maj qui peaufine la version test et ajout un lien vers la version complète =)
nouvelle mise a jour qui fixe pamal de bugs et qui supprime près de 1500 lignes de code =)
je viens de mettre a jour le code avec la nouvelle version. Les prédateurs ne mangent plus l'eau et les montagnes mtn XD.
Générer la map est super long (enfin ca dépend du processeur) mais c pck j'ai fait 1px par 1px .... donc ya près d'un demi million de pixel a dessiner en random ... Si tu passe a des pixels de 9 par exemple, c ultra rapide
Générer la map est super long (enfin ca dépend du processeur) mais c pck j'ai fait 1px par 1px .... donc ya près d'un demi million de pixel a dessiner en random ... Si tu passe a des pixels de 9 par exemple, c ultra rapide

Salut salut !!
Voici un petit simulateur que j'ai fait en quelques heures. C pas fou mais c'est assez amusant a regarder.
- Lorsqu'un petit point mange un pixel vert, il gagne de l'énergie.
- lorsqu'un gros point mange un petit pixel, il gagne de l'énergie.
- lorsqu'un pixel a emmagasiné suffisamment d'énergie et que sa période de gestation est finie, il donne naissance a une nouvelle unité =)
- toutes les unités perdent de l'énergie a chaque tour, donc elles doivent manger pour survivre et se reproduire =)
- si une unité a 0 d'énergie, elle meurt
- la carte se régénère automatiquement. Les nouveaux pixels sont mis sur des zones vide et non d'autres déjà utilisés
- Il est possible de suivre l'évolution en haut avec pop1 (herbivore) et pop2 (carnivore)
- il est possible de mettre le jeu en pause
- un éditeur de carte permet de modelé la carte avec soit du vide, soit des arbres, soit de l'eau, soit des montagnes. Les deux derniers étant infranchissable cela permet de faire des zones distinctes. Il est aussi possible de placer de nouvelles populations soit d'herbivore soit de carnivore.
Voici le code en question. Plus le pc est puissant, plus les cycles sont rapides
Code VB :
Voici un petit simulateur que j'ai fait en quelques heures. C pas fou mais c'est assez amusant a regarder.
- Lorsqu'un petit point mange un pixel vert, il gagne de l'énergie.
- lorsqu'un gros point mange un petit pixel, il gagne de l'énergie.
- lorsqu'un pixel a emmagasiné suffisamment d'énergie et que sa période de gestation est finie, il donne naissance a une nouvelle unité =)
- toutes les unités perdent de l'énergie a chaque tour, donc elles doivent manger pour survivre et se reproduire =)
- si une unité a 0 d'énergie, elle meurt
- la carte se régénère automatiquement. Les nouveaux pixels sont mis sur des zones vide et non d'autres déjà utilisés
- Il est possible de suivre l'évolution en haut avec pop1 (herbivore) et pop2 (carnivore)
- il est possible de mettre le jeu en pause
- un éditeur de carte permet de modelé la carte avec soit du vide, soit des arbres, soit de l'eau, soit des montagnes. Les deux derniers étant infranchissable cela permet de faire des zones distinctes. Il est aussi possible de placer de nouvelles populations soit d'herbivore soit de carnivore.
Voici le code en question. Plus le pc est puissant, plus les cycles sont rapides

Code VB :
'life simulation by Atomose 2023 nomainwin GameVersion = 0.30 dim CoorX(10000000),CoorY(10000000),valU(10000000),LIFE(10000000),natality(10000000),LIFE2(10000000),natality2(10000000) UNIT = 100 : UNIT2 = 500002 : Xcoor = 800 : Ycoor = 580 : XX= 800 : YY= 580 : redim p(XX,YY) : UNITcompt = UNIT : UNITcompt2 = UNIT2 for n = 1 to UNIT valU(n) = 1 : CoorX(n) = int(rnd(1)*30+370) : CoorY(n) = int(rnd(1)*30+250) : LIFE(n) = 2000 next n for n = 500001 to UNIT2 valU(n) = 2 : CoorX(n) = int(rnd(1)*100+450) : CoorY(n) = int(rnd(1)*100+250) : LIFE2(n) = 20000 next n [INI] WindowWidth=807 : WindowHeight=630 : UpperLeftX=int((DisplayWidth-WindowWidth)/2) : UpperLeftY=int((DisplayHeight-WindowHeight)/2) graphicbox #ini.info, 0, 0, 801, 22 graphicbox #ini.main, 0, 22, 801, 601 button #ini.pause, "Stop", [pause], UL, 1, 1,40,20 open "Life Simulation v ";GameVersion for window_nf as #ini #ini, "trapclose [quit]" print #ini.main, "down; fill ";250;" ";160;" ";120;"; size 2; color ";0;" ";180;" ";0 print #ini.info, "down; fill white; font Cascadia_Code 8 ; color black; backcolor white" for YY=0 to Ycoor for XX=0 to Xcoor valor = int(rnd(1)*10+1) select case valor case 1,3,4,5,6,7,8,9,10 valor = 0 case 2 valor = 1000001 : print #ini.main, "set ";XX;" ";YY end select p(XX,YY)= valor next XX next YY #ini.info "place 590 13 ;\"; "Map editor :" print #ini.info, "size 15; color black; set ";680;" ";10;"; set ";700;" ";10;"; set ";720;" ";10;"; set ";740;" ";10;"; set ";760;" ";10;"; set ";780;" ";10 print #ini.info, "size 13; color ";250;" ";160;" ";120;"; set ";680;" ";10;"; color ";150;" ";200;" ";230;"; set ";700;" ";10;"; color ";0;" ";180;" ";0;"; set ";720;" ";10;"; color brown; set ";740;" ";10;"; color white; set ";760;" ";10;"; color white; set ";780;" ";10 print #ini.info, "size 4; color black; set ";760;" ";10;"; color red; set ";780;" ";10 #ini.info, "font Cascadia_Code 8 ; color black; backcolor white; when leftButtonDown [select]; flush" #ini.main, "when leftButtonDown [position]; when leftButtonMove [terrain]; flush" [boucle] scan print #ini.main, "size 2; discard" day = day + 1 #ini.info "place 50 13 ;\"; "Days : ";day;" | Herbivors : ";UNITcompt;" | Carnivors : ";UNITcompt2-500000;" (";death; " kills) " for t = 1 to 5 [rmk] regenX = int(rnd(1)*794+2) : regenY = int(rnd(1)*572+2) if p(regenX,regenY) >1000000 and antifreeeze < 100 then antifreeeze = antifreeeze + 1 : goto [rmk] p(regenX,regenY) = 1000001 : print #ini.main, "size 2; color ";0;" ";180;" ";0;"; set ";regenX;" ";regenY antifreeeze = 0 next t for x = 1 to UNIT if (valU(x) = 0 or LIFE(x) = 0) then goto [next] LIFE(x) = LIFE(x) - 1 print #ini.main, "color ";250;" ";160;" ";120;";set ";CoorX(x);" ";CoorY(x) : p(CoorX(x),CoorY(x)) = 0 valor = int(rnd(1)*9+1) select case valor case 1 if p(CoorX(x)+1,CoorY(x)) < 1000002 and CoorX(x) <795 then CoorX(x) = CoorX(x) + 1 : CoorY(x) = CoorY(x) + 0 if p(CoorX(x)+1,CoorY(x)) >= 1000002 then CoorX(x) = CoorX(x) - 1 : CoorY(x) = CoorY(x) + 0 case 2 if p(CoorX(x)+1,CoorY(x)) < 1000002 and p(CoorX(x),CoorY(x)+1) < 1000002 and CoorX(x) <795 and CoorY(x) <575 then CoorX(x) = CoorX(x) + 1 : CoorY(x) = CoorY(x) + 1 if p(CoorX(x)+1,CoorY(x)) >= 1000002 and p(CoorX(x),CoorY(x)+1) >= 1000002 then CoorX(x) = CoorX(x) - 1 : CoorY(x) = CoorY(x) - 1 case 3 if p(CoorX(x),CoorY(x)+1) < 1000002 and CoorY(x) <575 then CoorX(x) = CoorX(x) + 0 : CoorY(x) = CoorY(x) + 1 if p(CoorX(x),CoorY(x)+1) >= 1000002 then CoorX(x) = CoorX(x) + 0 : CoorY(x) = CoorY(x) - 1 case 4 if p(CoorX(x)-1,CoorY(x)) < 1000002 and p(CoorX(x),CoorY(x)+1) < 1000002 and CoorX(x) >2 and CoorY(x) <575 then CoorX(x) = CoorX(x) - 1 : CoorY(x) = CoorY(x) + 1 if p(CoorX(x)-1,CoorY(x)) >= 1000002 and p(CoorX(x),CoorY(x)+1) >= 1000002 then CoorX(x) = CoorX(x) + 1 : CoorY(x) = CoorY(x) - 1 case 5 if p(CoorX(x)-1,CoorY(x)) < 1000002 and CoorX(x) >2 then CoorX(x) = CoorX(x) - 1 : CoorY(x) = CoorY(x) + 0 if p(CoorX(x)-1,CoorY(x)) >= 1000002 then CoorX(x) = CoorX(x) + 1 : CoorY(x) = CoorY(x) + 0 case 6 if p(CoorX(x)-1,CoorY(x)) < 1000002 and p(CoorX(x),CoorY(x)-1) < 1000002 and CoorX(x) >2 and CoorY(x) >2 then CoorX(x) = CoorX(x) - 1 : CoorY(x) = CoorY(x) - 1 if p(CoorX(x)-1,CoorY(x)) >= 1000002 and p(CoorX(x),CoorY(x)-1) >= 1000002 then CoorX(x) = CoorX(x) + 1 : CoorY(x) = CoorY(x) + 1 case 7 if p(CoorX(x),CoorY(x)-1) < 1000002 and CoorY(x) >2 then CoorX(x) = CoorX(x) + 0 : CoorY(x) = CoorY(x) - 1 if p(CoorX(x),CoorY(x)-1) >= 1000002 then CoorX(x) = CoorX(x) + 0 : CoorY(x) = CoorY(x) + 1 case 8 if p(CoorX(x)+1,CoorY(x)) < 1000002 and p(CoorX(x),CoorY(x)-1) < 1000002 and CoorX(x) <795 and CoorY(x) >2 then CoorX(x) = CoorX(x) + 1 : CoorY(x) = CoorY(x) - 1 if p(CoorX(x)+1,CoorY(x)) >= 1000002 and p(CoorX(x),CoorY(x)-1) >= 1000002 then CoorX(x) = CoorX(x) - 1 : CoorY(x) = CoorY(x) + 1 case 9 [noMoove] CoorX(x) = CoorX(x) : CoorY(x) = CoorY(x) end select if valU(x) = 1 and LIFE(x) >= 1000 and natality(x) >= 50 then LIFE(x) = LIFE(x) - 500 : natality(x) = 0 : UNIT = UNIT + 1 : valU(UNIT) = 1 : CoorX(UNIT) = CoorX(x) : CoorY(UNIT) = CoorY(x) : LIFE(UNIT) = 2000 : UNITcompt = UNITcompt + 1 if valU(x) = 1 and p(CoorX(x),CoorY(x)) = 1000001 and LIFE(x) < 3000 then LIFE(x) = LIFE(x) + 50 : natality(x) = natality(x) + 1 if LIFE(x) = 0 and valU(x) = 1 then valU(x) = 0 : p(CoorX(x),CoorY(x)) = 0 : UNITcompt = UNITcompt - 1 if valU(x) = 1 then print #ini.main, "color ";0;" ";0;" ";0;"; set ";CoorX(x);" ";CoorY(x) : p(CoorX(x),CoorY(x)) = x [next] next x for y = 500001 to UNIT2 if (valU(y) = 0 or LIFE2(y) = 0) then goto [next2] LIFE2(y) = LIFE2(y) - 1 if p(CoorX(y),CoorY(y)) <> 1000001 then print #ini.main, "color ";250;" ";160;" ";120;"; set ";CoorX(y);" ";CoorY(y) : p(CoorX(y),CoorY(y)) = 0 if (p(CoorX(y),CoorY(y)) = 1000001 or p(CoorX(y),CoorY(y)-1) = 1000001 or p(CoorX(y),CoorY(y)+1) = 1000001 or p(CoorX(y)-1,CoorY(y)) = 1000001 or p(CoorX(y)+1,CoorY(y)) = 1000001) then print #ini.main, "color ";0;" ";180;" ";0;"; set ";CoorX(y);" ";CoorY(y) valor = int(rnd(1)*9+1) select case valor case 1 if p(CoorX(y)+2,CoorY(y)) < 1000002 and CoorX(y) <795 then CoorX(y) = CoorX(y) + 2 : CoorY(y) = CoorY(y) + 0 if p(CoorX(y)+2,CoorY(y)) >= 1000002 then CoorX(y) = CoorX(y) - 2 : CoorY(y) = CoorY(y) + 0 case 2 if p(CoorX(y)+2,CoorY(y)) < 1000002 and p(CoorX(y),CoorY(y)+2) < 1000002 and CoorX(y) <795 and CoorY(y) <575 then CoorX(y) = CoorX(y) + 2 : CoorY(y) = CoorY(y) + 2 if p(CoorX(y)+2,CoorY(y)) >= 1000002 and p(CoorX(y),CoorY(y)+2) >= 1000002 then CoorX(y) = CoorX(y) - 2 : CoorY(y) = CoorY(y) - 2 case 3 if p(CoorX(y),CoorY(y)+2) < 1000002 and CoorY(y) <575 then CoorX(y) = CoorX(y) + 0 : CoorY(y) = CoorY(y) + 2 if p(CoorX(y),CoorY(y)+2) >= 1000002 then CoorX(y) = CoorX(y) + 0 : CoorY(y) = CoorY(y) - 2 case 4 if p(CoorX(y)-2,CoorY(y)) < 1000002 and p(CoorX(y),CoorY(y)+2) < 1000002 and CoorX(y) >5 and CoorY(y) <575 then CoorX(y) = CoorX(y) - 2 : CoorY(y) = CoorY(y) + 2 if p(CoorX(y)-2,CoorY(y)) >= 1000002 and p(CoorX(y),CoorY(y)+2) >= 1000002 then CoorX(y) = CoorX(y) + 2 : CoorY(y) = CoorY(y) - 2 case 5 if p(CoorX(y)-2,CoorY(y)) < 1000002 and CoorX(y) >5 then CoorX(y) = CoorX(y) - 2 : CoorY(y) = CoorY(y) + 0 if p(CoorX(y)-2,CoorY(y)) >= 1000002 then CoorX(y) = CoorX(y) + 2 : CoorY(y) = CoorY(y) + 0 case 6 if p(CoorX(y)-2,CoorY(y)) < 1000002 and p(CoorX(y),CoorY(y)-2) < 1000002 and CoorX(y) >5 and CoorY(y) >5 then CoorX(y) = CoorX(y) - 2 : CoorY(y) = CoorY(y) - 2 if p(CoorX(y)-2,CoorY(y)) >= 1000002 and p(CoorX(y),CoorY(y)-2) >= 1000002 then CoorX(y) = CoorX(y) + 2 : CoorY(y) = CoorY(y) + 2 case 7 if p(CoorX(y),CoorY(y)-2) < 1000002 and CoorY(y) >5 then CoorX(y) = CoorX(y) + 0 : CoorY(y) = CoorY(y) - 2 if p(CoorX(y),CoorY(y)-2) >= 1000002 then CoorX(y) = CoorX(y) + 0 : CoorY(y) = CoorY(y) + 2 case 8 if p(CoorX(y)+2,CoorY(y)) < 1000002 and p(CoorX(y),CoorY(y)-2) < 1000002 and CoorX(y) <795 and CoorY(y) >5 then CoorX(y) = CoorX(y) + 2 : CoorY(y) = CoorY(y) - 2 if p(CoorX(y)+2,CoorY(y)) >= 1000002 and p(CoorX(y),CoorY(y)-2) >= 1000002 then CoorX(y) = CoorX(y) - 2 : CoorY(y) = CoorY(y) + 2 case 9 [noMoove2] CoorX(y) = CoorX(y) : CoorY(y) = CoorY(y) end select if valU(y) = 2 and natality2(y) >= 10 then LIFE2(y) = LIFE2(y) - 1000 : natality2(y) = 0 : UNIT2 = UNIT2 + 1 : valU(UNIT2) = 2 : CoorX(UNIT2) = CoorX(y) : CoorY(UNIT2) = CoorY(y) : LIFE2(UNIT2) = 20000 : UNITcompt2 = UNITcompt2 + 1 killing1 = p(CoorX(y),CoorY(y)) : if killing1 > 1000000 then killing1 = 0 killing2 = p(CoorX(y)+1,CoorY(y)) : if killing2 > 1000000 then killing2 = 0 killing3 = p(CoorX(y)+1,CoorY(y)-1) : if killing3 > 1000000 then killing3 = 0 killing4 = p(CoorX(y)-1,CoorY(y)) : if killing4 > 1000000 then killing4 = 0 killing5 = p(CoorX(y)-1,CoorY(y)-1) : if killing5 > 1000000 then killing5 = 0 killing6 = p(CoorX(y),CoorY(y)+1) : if killing6 > 1000000 then killing6 = 0 killing7 = p(CoorX(y)+1,CoorY(y)+1) : if killing7 > 1000000 then killing7 = 0 killing8 = p(CoorX(y),CoorY(y)-1) : if killing8 > 1000000 then killing8 = 0 killing9 = p(CoorX(y)-1,CoorY(y)+1) : if killing9 > 1000000 then killing9 = 0 if (valU(killing1) = 1 or valU(killing2) = 1 or valU(killing3) = 1 or valU(killing4) = 1 or valU(killing5) = 1) then if valU(killing1) = 1 then killed = p(CoorX(y),CoorY(y)) : valU(killed) = 0 : LIFE2(killed) = 0 : UNITcompt = UNITcompt - 1 : p(CoorX(y),CoorY(y)) = 0 : LIFE2(y) = LIFE2(y) + 500 : natality2(y) = natality2(y) + 1 : death = death + 1 if valU(killing2) = 1 then killed = p(CoorX(y)+1,CoorY(y)) : valU(killed) = 0 : LIFE2(killed) = 0 : UNITcompt = UNITcompt - 1 : p(CoorX(y),CoorY(y)) = 0 : LIFE2(y) = LIFE2(y) + 500 : natality2(y) = natality2(y) + 1 : death = death + 1 if valU(killing3) = 1 then killed = p(CoorX(y)+1,CoorY(y)-1) : valU(killed) = 0 : LIFE2(killed) = 0 : UNITcompt = UNITcompt - 1 : p(CoorX(y),CoorY(y)) = 0 : LIFE2(y) = LIFE2(y) + 500 : natality2(y) = natality2(y) + 1 : death = death + 1 if valU(killing4) = 1 then killed = p(CoorX(y)-1,CoorY(y)) : valU(killed) = 0 : LIFE2(killed) = 0 : UNITcompt = UNITcompt - 1 : p(CoorX(y),CoorY(y)) = 0 : LIFE2(y) = LIFE2(y) + 500 : natality2(y) = natality2(y) + 1 : death = death + 1 if valU(killing5) = 1 then killed = p(CoorX(y)-1,CoorY(y)-1) : valU(killed) = 0 : LIFE2(killed) = 0 : UNITcompt = UNITcompt - 1 : p(CoorX(y),CoorY(y)) = 0 : LIFE2(y) = LIFE2(y) + 500 : natality2(y) = natality2(y) + 1 : death = death + 1 if valU(killing6) = 1 then killed = p(CoorX(y),CoorY(y)+1) : valU(killed) = 0 : LIFE2(killed) = 0 : UNITcompt = UNITcompt - 1 : p(CoorX(y),CoorY(y)) = 0 : LIFE2(y) = LIFE2(y) + 500 : natality2(y) = natality2(y) + 1 : death = death + 1 if valU(killing7) = 1 then killed = p(CoorX(y)+1,CoorY(y)+1) : valU(killed) = 0 : LIFE2(killed) = 0 : UNITcompt = UNITcompt - 1 : p(CoorX(y),CoorY(y)) = 0 : LIFE2(y) = LIFE2(y) + 500 : natality2(y) = natality2(y) + 1 : death = death + 1 if valU(killing8) = 1 then killed = p(CoorX(y),CoorY(y)-1) : valU(killed) = 0 : LIFE2(killed) = 0 : UNITcompt = UNITcompt - 1 : p(CoorX(y),CoorY(y)) = 0 : LIFE2(y) = LIFE2(y) + 500 : natality2(y) = natality2(y) + 1 : death = death + 1 if valU(killing9) = 1 then killed = p(CoorX(y)-1,CoorY(y)+1) : valU(killed) = 0 : LIFE2(killed) = 0 : UNITcompt = UNITcompt - 1 : p(CoorX(y),CoorY(y)) = 0 : LIFE2(y) = LIFE2(y) + 500 : natality2(y) = natality2(y) + 1 : death = death + 1 end if if LIFE2(y) = 0 and valU(y) = 2 then valU(y) = 0 : print #ini.main, "set ";CoorX(y);" ";CoorY(y) : p(CoorX(y),CoorY(y)) = 0 : UNITcompt2 = UNITcompt2 - 1 if valU(y) = 2 then print #ini.main, "color ";255;" ";255;" ";255;"; set ";CoorX(y);" ";CoorY(y) [next2] next y goto [boucle] [select] mX = MouseX : mY = MouseY competence = 0 : antifreeeze = 0 print #ini.info, "size 2; color white; set ";773;" ";3;"; set ";753;" ";3;"; set ";733;" ";3;"; set ";713;" ";3;"; set ";693;" ";3;"; set ";672;" ";3 if mX >670 and mX<688 then competence = 1 : print #ini.info, "size 2; color blue; set ";672;" ";3 if mX >692 and mX<707 then competence = 2 : print #ini.info, "size 2; color blue; set ";693;" ";3 if mX >713 and mX<727 then competence = 3 : print #ini.info, "size 2; color blue; set ";713;" ";3 if mX >734 and mX<747 then competence = 4 : print #ini.info, "size 2; color blue; set ";733;" ";3 if mX >752 and mX<768 then competence = 5 : print #ini.info, "size 2; color blue; set ";753;" ";3 if mX >772 and mX<788 then competence = 6 : print #ini.info, "size 2; color blue; set ";773;" ";3 print #ini.info, "color black" if pause = 0 then goto [boucle] if pause = 1 then wait [position] mX = MouseX : mY = MouseY if competence = 5 then UNIT = UNIT + 1 : valU(UNIT) = 1 : CoorX(UNIT) = MouseX : CoorY(UNIT) = MouseY : LIFE(UNIT) = 1500 : UNITcompt = UNITcompt + 1 if competence = 6 then UNIT2 = UNIT2 + 1 : valU(UNIT2) = 2 : CoorX(UNIT2) = MouseX : CoorY(UNIT2) = MouseY : LIFE2(UNIT2) = 20000 : UNITcompt2 = UNITcompt2 + 1 if pause = 1 then wait goto [boucle] [terrain] on error goto [boucle] select case competence case 1 p(MouseX,MouseY) = 0 : p(MouseX+1,MouseY) = 0 : p(MouseX-1,MouseY) = 0 : print #ini.main, "size 1; color ";250;" ";160;" ";120;"; set ";MouseX;" ";MouseY : print #ini.main, "size 1; color ";250;" ";160;" ";120;"; set ";MouseX+1;" ";MouseY : print #ini.main, "size 1; color ";250;" ";160;" ";120;"; set ";MouseX-1;" ";MouseY p(MouseX,MouseY+1) = 0 : p(MouseX+1,MouseY+1) = 0 : p(MouseX-1,MouseY+1) = 0 : print #ini.main, "size 1; color ";250;" ";160;" ";120;"; set ";MouseX;" ";MouseY+1 : print #ini.main, "size 1; color ";250;" ";160;" ";120;"; set ";MouseX+1;" ";MouseY+1 : print #ini.main, "size 1; color ";250;" ";160;" ";120;"; set ";MouseX-1;" ";MouseY+1 p(MouseX,MouseY-1) = 0 : p(MouseX+1,MouseY-1) = 0 : p(MouseX-1,MouseY-1) = 0 : print #ini.main, "size 1; color ";250;" ";162;" ";120;"; set ";MouseX;" ";MouseY-1 : print #ini.main, "size 1; color ";250;" ";160;" ";120;"; set ";MouseX+1;" ";MouseY-1 : print #ini.main, "size 1; color ";250;" ";160;" ";120;"; set ";MouseX-1;" ";MouseY-1 case 2 p(MouseX,MouseY) = 1000002 : p(MouseX+1,MouseY) = 1000002 : p(MouseX-1,MouseY) = 1000002 : print #ini.main, "size 1; color ";150;" ";200;" ";230;"; set ";MouseX;" ";MouseY : print #ini.main, "size 1; color ";150;" ";200;" ";230;"; set ";MouseX+1;" ";MouseY : print #ini.main, "size 1; color ";150;" ";200;" ";230;"; set ";MouseX-1;" ";MouseY p(MouseX,MouseY+1) = 1000002 : p(MouseX+1,MouseY+1) = 1000002 : p(MouseX-1,MouseY+1) = 1000002 : print #ini.main, "size 1; color ";150;" ";200;" ";230;"; set ";MouseX;" ";MouseY+1 : print #ini.main, "size 1; color ";150;" ";200;" ";230;"; set ";MouseX+1;" ";MouseY+1 : print #ini.main, "size 1; color ";150;" ";200;" ";230;"; set ";MouseX-1;" ";MouseY+1 p(MouseX,MouseY-1) = 1000002 : p(MouseX+1,MouseY-1) = 1000002 : p(MouseX-1,MouseY-1) = 1000002 : print #ini.main, "size 1; color ";150;" ";200;" ";230;"; set ";MouseX;" ";MouseY-1 : print #ini.main, "size 1; color ";150;" ";200;" ";230;"; set ";MouseX+1;" ";MouseY-1 : print #ini.main, "size 1; color ";150;" ";200;" ";230;"; set ";MouseX-1;" ";MouseY-1 case 3 p(MouseX,MouseY) = 1000001 : p(MouseX+1,MouseY) = 1000001 : p(MouseX-1,MouseY) = 1000001 : print #ini.main, "size 1; color ";0;" ";180;" ";0;"; set ";MouseX;" ";MouseY : print #ini.main, "size 1; color ";0;" ";180;" ";0;"; set ";MouseX+1;" ";MouseY : print #ini.main, "size 1; color ";0;" ";180;" ";0;"; set ";MouseX-1;" ";MouseY p(MouseX,MouseY+1) = 1000001 : p(MouseX+1,MouseY+1) = 1000001 : p(MouseX-1,MouseY+1) = 1000001 : print #ini.main, "size 1; color ";0;" ";180;" ";0;"; set ";MouseX;" ";MouseY+1 : print #ini.main, "size 1; color ";0;" ";180;" ";0;"; set ";MouseX+1;" ";MouseY+1 : print #ini.main, "size 1; color ";0;" ";180;" ";0;"; set ";MouseX-1;" ";MouseY+1 p(MouseX,MouseY-1) = 1000001 : p(MouseX+1,MouseY-1) = 1000001 : p(MouseX-1,MouseY-1) = 1000001 : print #ini.main, "size 1; color ";0;" ";180;" ";0;"; set ";MouseX;" ";MouseY-1 : print #ini.main, "size 1; color ";0;" ";180;" ";0;"; set ";MouseX+1;" ";MouseY-1 : print #ini.main, "size 1; color ";0;" ";180;" ";0;"; set ";MouseX-1;" ";MouseY-1 case 4 p(MouseX,MouseY) = 1000003 : p(MouseX+1,MouseY) = 1000003 : p(MouseX-1,MouseY) = 1000003 : print #ini.main, "size 1; color ";128;" ";128;" ";0;"; set ";MouseX;" ";MouseY : print #ini.main, "size 1; color ";128;" ";128;" ";0;"; set ";MouseX+1;" ";MouseY : print #ini.main, "size 1; color ";128;" ";128;" ";0;"; set ";MouseX-1;" ";MouseY p(MouseX,MouseY+1) = 1000003 : p(MouseX+1,MouseY+1) = 1000003 : p(MouseX-1,MouseY+1) = 1000003 : print #ini.main, "size 1; color ";128;" ";128;" ";0;"; set ";MouseX;" ";MouseY+1 : print #ini.main, "size 1; color ";64;" ";64;" ";0;"; set ";MouseX+1;" ";MouseY+1 : print #ini.main, "size 1; color ";128;" ";128;" ";0;"; set ";MouseX-1;" ";MouseY+1 p(MouseX,MouseY-1) = 1000003 : p(MouseX+1,MouseY-1) = 1000003 : p(MouseX-1,MouseY-1) = 1000003 : print #ini.main, "size 1; color ";128;" ";128;" ";0;"; set ";MouseX;" ";MouseY-1 : print #ini.main, "size 1; color ";128;" ";128;" ";0;"; set ";MouseX+1;" ";MouseY-1 : print #ini.main, "size 1; color ";128;" ";128;" ";0;"; set ";MouseX-1;" ";MouseY-1 end select if pause = 1 then wait goto [boucle] [pause] if pause = 1 then pause = 0 : print #ini.pause, "Stop" : goto [boucle] if pause = 0 then pause = 1 : print #ini.pause, "Play" : wait [quit] close #ini : end

nouvelle maj avec log 
STARGATE 0.84.BAS
----0.84
- recentrage des fenêtres des recherches dans le centre scientifique
- refonte graphique du centre scientifique avec le même thème que celui du centre militaire
- lorsque les conditions de passage a l'âge suivant ne sont pas remplie le bouton d'amélioration n'est plus visible
- modification de la valeur initiale du coût en bois des fortifications 6200 --> 400
- modification de la valeur d'amélioration en bois des fortifications 7100 --> 3000
- modification de la valeur initiale du coût en bois des mines 700 --> 1200
- modification de la valeur d'amélioration en bois des mines 390 --> 280
- modification de la valeur initiale du coût en bois de la scierie 250 --> 400
- modification de la valeur d'amélioration en bois de la scierie 390 --> 240
- modification de la valeur initiale du coût en bois des fermages 900 --> 640
- modification de la valeur d'amélioration en bois des fermages 950 --> 720
- modification de la valeur initiale du coût en bois des habitations 260 --> 350
- modification de la valeur d'amélioration en bois des fermages 250 --> 190
- modification de la valeur d'amélioration en bois du centre militaire 540 --> 370
- modification de la valeur d'amélioration en bois du centre scientifique 800 --> 450
- modification de la valeur initiale du coût en bois du bâtiment principal 700 --> 1500
- modification de la valeur d'amélioration en bois du bâtiment principal 4750 --> 2150
- centrage des fenêtres des bâtiments en ville
- amélioration de l'aide si conditions explo non remplies
- la technologie de renfort des fortifications ajoute maintenant correctement les points de structure supplémentaires
- les icônes et les stats des unités sont maintenant disponibles dans la caserne même si l'unité n'est pas débloquer afin de comparer les avantages/défauts des units et d'aviser.
- ajout des niveaux d'amélioration a coté du nom des unités dans la caserne
- mise a jour des textes des fermages
- correction du bug qui affiché que les troupes rentraient d'expéditions alors quelles étaient toutes mortes (animal)
- augmentation de la vitèsse des espionnages de 300%
- correction de bug divers

STARGATE 0.84.BAS
----0.84
- recentrage des fenêtres des recherches dans le centre scientifique
- refonte graphique du centre scientifique avec le même thème que celui du centre militaire
- lorsque les conditions de passage a l'âge suivant ne sont pas remplie le bouton d'amélioration n'est plus visible
- modification de la valeur initiale du coût en bois des fortifications 6200 --> 400
- modification de la valeur d'amélioration en bois des fortifications 7100 --> 3000
- modification de la valeur initiale du coût en bois des mines 700 --> 1200
- modification de la valeur d'amélioration en bois des mines 390 --> 280
- modification de la valeur initiale du coût en bois de la scierie 250 --> 400
- modification de la valeur d'amélioration en bois de la scierie 390 --> 240
- modification de la valeur initiale du coût en bois des fermages 900 --> 640
- modification de la valeur d'amélioration en bois des fermages 950 --> 720
- modification de la valeur initiale du coût en bois des habitations 260 --> 350
- modification de la valeur d'amélioration en bois des fermages 250 --> 190
- modification de la valeur d'amélioration en bois du centre militaire 540 --> 370
- modification de la valeur d'amélioration en bois du centre scientifique 800 --> 450
- modification de la valeur initiale du coût en bois du bâtiment principal 700 --> 1500
- modification de la valeur d'amélioration en bois du bâtiment principal 4750 --> 2150
- centrage des fenêtres des bâtiments en ville
- amélioration de l'aide si conditions explo non remplies
- la technologie de renfort des fortifications ajoute maintenant correctement les points de structure supplémentaires
- les icônes et les stats des unités sont maintenant disponibles dans la caserne même si l'unité n'est pas débloquer afin de comparer les avantages/défauts des units et d'aviser.
- ajout des niveaux d'amélioration a coté du nom des unités dans la caserne
- mise a jour des textes des fermages
- correction du bug qui affiché que les troupes rentraient d'expéditions alors quelles étaient toutes mortes (animal)
- augmentation de la vitèsse des espionnages de 300%
- correction de bug divers
Nouvelle mise a jour qui réduit le code a seulement 365 lignes (c'était a 1600 lignes avant l'optimisation) ! =)
j'ai aussi remplacer les dernières images non propriétaire par des images propriétaire a mon studio
j'ai aussi remplacer les dernières images non propriétaire par des images propriétaire a mon studio

Le 25/02/2023 à 08h41
Débutant » [Résolu] BUG "BASIC Compile Halted: array monTableau2D() is one dimensional"
bravo pour la solution

Monotone ? ben c'est un tuto XD si tu veux plus d'éléments tu peux modifier a volonté ceux-ci =)
regarde sur le site anglophone j'ai fait le même principe avec un "brouillard" qui s'appel "survival". Tu peux ajouter pareil içi mais le but de ce tuto c'est surtout de montrer comment faire la map de "base"
regarde sur le site anglophone j'ai fait le même principe avec un "brouillard" qui s'appel "survival". Tu peux ajouter pareil içi mais le but de ce tuto c'est surtout de montrer comment faire la map de "base"

• Index
2 Utilisateurs en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 2 Visiteurs
Utilisateurs en ligne : Aucun membre connecté
Utilisateurs en ligne : Aucun membre connecté