Forum Liberty Basic France

Jeux » Simulateur de vie ca bouge ca bouge !
Le 01/05/2023 à 23h07

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 437
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
 
 






Edité par atomose Le 26/05/2023 à 15h23
____________________
Yo !

MSN Web    
Le 02/05/2023 à 10h19

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2489
La critique:
Générer la carte par le code, c'est bien mais c'est long.
Je présume que les arbres sont les parties plus foncées
Je n'ai pas eu de montagnes
Les bestiaux bouffent tout, arbres montagnes (je crains qu'il me bouffent moi-même à la sortie de l'écran), c'est des voraces.
Looool !
____________________
Roro

   
Le 02/05/2023 à 21h58

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 437
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 :)
____________________
Yo !

MSN Web    
Le 23/05/2023 à 08h35

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 437
grosse mise a jour depuis la dernière version qui peaufine l'éditeur de map, optimise le code et rends le tout plus lisible =).
____________________
Yo !

MSN Web    
Le 23/05/2023 à 12h27

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2489
C'est bien, continue. ^^
____________________
Roro

   
Le 26/05/2023 à 15h25

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 437
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.
____________________
Yo !

MSN Web    
Jeux » Simulateur de vie ca bouge ca bouge !  

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie