Post by atomose on May 23, 2023 5:26:34 GMT -5
ZOMBIE SURVIVAL
(make with like simulation code)
(make with like simulation code)
- when black (human) unit eat a green pixel ==> it take food
- when white unit touch a black unit ==> black unit become a zombie (white)
- zombie unit can go on green pixel but dont take food and dont destroy it
- When black unit has a lot of food ==> new human born
- all units lose food for every moove
- If unit has no more food ==> dead
- Green pixel auto regen every time for new food
- You can see the number population on top of screen in real time and the number of cycles (days)
- You can stop the time with button
- MAP EDITOR : YOU CAN CREAT YOUR MAP ! add somes units, build walls and rivers and make this more fun !
'zombie survival by Atomose 2023 (from life simulation)
nomainwin
GameVersion = 0.29
dim CoorX(10000000),CoorY(10000000),valU(10000000),LIFE(10000000),natality(10000000),LIFE2(10000000),natality2(10000000)
UNIT = 100 : UNIT2 = 500001 : 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) = 3000
next n
for n = 500001 to UNIT2
valU(n) = 2 : CoorX(n) = int(rnd(1)*100+400) : CoorY(n) = int(rnd(1)*5+250) : LIFE2(n) = 50000
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 "Zombie Survival 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;" | humans : ";UNITcompt;" | zombies : ";UNITcompt2-500000;" "
for t = 1 to 5
[rmk]
regenX = int(rnd(1)*795+2) : regenY = int(rnd(1)*575+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) = 3000 : 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)+1,CoorY(y)) < 1000002 and CoorX(y) <795 then CoorX(y) = CoorX(y) + 1 : CoorY(y) = CoorY(y) + 0
if p(CoorX(y)+1,CoorY(y)) >= 1000002 then CoorX(y) = CoorX(y) - 1 : CoorY(y) = CoorY(y) + 0
case 2
if p(CoorX(y)+1,CoorY(y)) < 1000002 and p(CoorX(y),CoorY(y)+1) < 1000002 and CoorX(y) <795 and CoorY(y) <575 then CoorX(y) = CoorX(y) + 1 : CoorY(y) = CoorY(y) + 1
if p(CoorX(y)+1,CoorY(y)) >= 1000002 and p(CoorX(y),CoorY(y)+1) >= 1000002 then CoorX(y) = CoorX(y) - 1 : CoorY(y) = CoorY(y) - 1
case 3
if p(CoorX(y),CoorY(y)+1) < 1000002 and CoorY(y) <575 then CoorX(y) = CoorX(y) + 0 : CoorY(y) = CoorY(y) + 1
if p(CoorX(y),CoorY(y)+1) >= 1000002 then CoorX(y) = CoorX(y) + 0 : CoorY(y) = CoorY(y) - 1
case 4
if p(CoorX(y)-1,CoorY(y)) < 1000002 and p(CoorX(y),CoorY(y)+1) < 1000002 and CoorX(y) >5 and CoorY(y) <575 then CoorX(y) = CoorX(y) - 1 : CoorY(y) = CoorY(y) + 1
if p(CoorX(y)-1,CoorY(y)) >= 1000002 and p(CoorX(y),CoorY(y)+1) >= 1000002 then CoorX(y) = CoorX(y) + 1 : CoorY(y) = CoorY(y) - 1
case 5
if p(CoorX(y)-1,CoorY(y)) < 1000002 and CoorX(y) >5 then CoorX(y) = CoorX(y) - 1 : CoorY(y) = CoorY(y) + 0
if p(CoorX(y)-1,CoorY(y)) >= 1000002 then CoorX(y) = CoorX(y) + 1 : CoorY(y) = CoorY(y) + 0
case 6
if p(CoorX(y)-1,CoorY(y)) < 1000002 and p(CoorX(y),CoorY(y)-1) < 1000002 and CoorX(y) >5 and CoorY(y) >5 then CoorX(y) = CoorX(y) - 1 : CoorY(y) = CoorY(y) - 1
if p(CoorX(y)-1,CoorY(y)) >= 1000002 and p(CoorX(y),CoorY(y)-1) >= 1000002 then CoorX(y) = CoorX(y) + 1 : CoorY(y) = CoorY(y) + 1
case 7
if p(CoorX(y),CoorY(y)-1) < 1000002 and CoorY(y) >5 then CoorX(y) = CoorX(y) + 0 : CoorY(y) = CoorY(y) - 1
if p(CoorX(y),CoorY(y)-1) >= 1000002 then CoorX(y) = CoorX(y) + 0 : CoorY(y) = CoorY(y) + 1
case 8
if p(CoorX(y)+1,CoorY(y)) < 1000002 and p(CoorX(y),CoorY(y)-1) < 1000002 and CoorX(y) <795 and CoorY(y) >5 then CoorX(y) = CoorX(y) + 1 : CoorY(y) = CoorY(y) - 1
if p(CoorX(y)+1,CoorY(y)) >= 1000002 and p(CoorX(y),CoorY(y)-1) >= 1000002 then CoorX(y) = CoorX(y) - 1 : CoorY(y) = CoorY(y) + 1
case 9
[noMoove2]
CoorX(y) = CoorX(y) : CoorY(y) = CoorY(y)
end select
killing = p(CoorX(y),CoorY(y)) : if killing > 1000000 then killing = 0
if valU(killing) = 1 then killed = p(CoorX(y),CoorY(y)) : valU(killed) = 0 : LIFE2(killed) = 0 : UNITcompt = UNITcompt - 1 : UNIT2 = UNIT2 + 1 : valU(UNIT2) = 2 : CoorX(UNIT2) = CoorX(y) : CoorY(UNIT2) = CoorY(y) : LIFE2(UNIT2) = 10000 : UNITcompt2 = UNITcompt2 + 1 : death = death + 1
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