Forum Liberty Basic France : Voir tous les messages du membre

   Le 26/05/2023 à 15h25 Jeux » Simulateur de vie
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.
   Le 23/05/2023 à 08h35 Jeux » Simulateur de vie
grosse mise a jour depuis la dernière version qui peaufine l'éditeur de map, optimise le code et rends le tout plus lisible =).
   Le 09/05/2023 à 00h17 Jeux » Tower Defense Re-Evolution
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 =)
   Le 02/05/2023 à 21h58 Jeux » Simulateur de vie
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 :)
   Le 01/05/2023 à 23h07 Jeux » Simulateur de vie
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 :
 
 
 
    '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
 
 


   Le 05/04/2023 à 16h42 Jeux » STARGATE : Master of Universe 0.84
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
   Le 06/03/2023 à 17h13 Jeux » RPG OPEN WORLD DEMO
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 :)
   Le 12/02/2023 à 19h05 Jeux » RPG OPEN WORLD DEMO
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" ^^

 |  |

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