LogoChip War Prototype
;WAR CITY PROTOCOL
;Tommy Engdahl
;This is the protocol for a city at war-a network of waring chips
;One on One /Green Side
global [rpop]
global [gpop]
global [pop]
global [color]
global [X]
global [y]
global [war]
global [army]
global [growth]
global [vic]
to Powerup
main_initialization
loop
[
warloop
if (vic = 1) [powerup]
]
end
;——————————————–
to main_initialization
;include ad.lib
write $fc1 $f
;config-analog-lines 2
;a0 a1 input tech and year input.
;green number in binary
clearbit 0 portb-ddr
clearbit 1 portb-ddr
clearbit 2 portb-ddr
clearbit 3 portb-ddr
;red number in binary
clearbit 4 portb-ddr
clearbit 5 portb-ddr
clearbit 6 portb-ddr
clearbit 7 portb-ddr
;set pop to 1 Green
setgpop 1
setbit 0 portb
clearbit 1 portb
clearbit 2 portb
clearbit 3 portb
;set pop to 0 Red
setrpop 0
clearbit 4 portb
clearbit 5 portb
clearbit 6 portb
clearbit 7 portb
;Color Channel
;setbit 5 portc-ddr
;setbit 6 portc-ddr
;Turn Channel
clearbit 0 porta-ddr
setbit 1 porta-ddr
;War Channel1
clearbit 2 porta-ddr
setbit 3 porta-ddr
;troop channel1
clearbit 4 porta-ddr
setbit 5 porta-ddr
clearbit 0 porta
clearbit 2 porta
clearbit 4 porta
;clearbit 5 portc
setcolor 0
setgrowth 2
setvic 0
end
;————————————–
to warloop
setbit 0 porta
showled
;GDP Phase———————————
ifelse (color = 0)[setx gpop][setx rpop]
ifelse (x = 9) [setx 9][setx x + (random % growth)]
ifelse (color = 0)[setgpop x][setrpop x]
print x
print rpop
print gpop
print “—–”
showled
sety random % 100
;foriegn polocies———————————
if (x = 9)[setwar 1]
ifelse (x > 5) [setwar 0][if (y > 90) [setwar 1]]
setwar 0 ;forced peace
;build army————————————
if (war = 1)
[
setarmy x - (random % (x - 2) + 1)
]
;war phase———————————-
ifelse (war = 1)[setbit 2 porta][clearbit 2 porta]
turnsync
;If ((testbit 6 portc and (color = 1)) or not(testbit 6 portc and (color not 0)))
ifelse (war = 1)
[
ifelse (testbit 3 porta)
[
turnsync
ifelse (color = 0)[setx gpop][setx rpop]
setx x - 1 ;border clash
ifelse (color = 0)[setgpop x][setrpop x]
]
[
turnsync
invade
]
]
[
ifelse (testbit 3 porta)
[
turnsync
defend
resolve
]
[
turnsync
]
]
showled
turnsync
victory
showled
turninit
end
to showled
showred rpop ;decodeing pop and sending binary to 7 segment with logic
showgreen gpop
wait 20
end
to showred :pop
setpop rpop
if (pop = 0)
[
clearbit 4 portb
clearbit 5 portb
clearbit 6 portb
clearbit 7 portb
]
if (pop = 1)
[
setbit 4 portb
clearbit 5 portb
clearbit 6 portb
clearbit 7 portb
]
if (pop = 2)
[
clearbit 4 portb
setbit 5 portb
clearbit 6 portb
clearbit 7 portb
]
if (pop = 3)
[
setbit 4 portb
setbit 5 portb
clearbit 6 portb
clearbit 7 portb
]
if (pop = 4)
[
clearbit 4 portb
clearbit 5 portb
setbit 6 portb
clearbit 7 portb
]
if (pop = 5)
[
setbit 4 portb
clearbit 5 portb
setbit 6 portb
clearbit 7 portb
]
if (pop = 6)
[
clearbit 4 portb
setbit 5 portb
setbit 6 portb
clearbit 7 portb
]
if (pop = 7)
[
setbit 4 portb
setbit 5 portb
setbit 6 portb
clearbit 7 portb
]
if (pop = ![]()
[
clearbit 4 portb
clearbit 5 portb
clearbit 6 portb
setbit 7 portb
]
if (pop = 9)
[
setbit 4 portb
clearbit 5 portb
clearbit 6 portb
setbit 7 portb
]
end
to showgreen :pop
setpop gpop
if (pop = 0)
[
clearbit 0 portb
clearbit 1 portb
clearbit 2 portb
clearbit 3 portb
]
if (pop = 1)
[
setbit 0 portb
clearbit 1 portb
clearbit 2 portb
clearbit 3 portb
]
if (pop = 2)
[
clearbit 0 portb
setbit 1 portb
clearbit 2 portb
clearbit 3 portb
]
if (pop = 3)
[
setbit 0 portb
setbit 1 portb
clearbit 2 portb
clearbit 3 portb
]
if (pop = 4)
[
clearbit 0 portb
clearbit 1 portb
setbit 2 portb
clearbit 3 portb
]
if (pop = 5)
[
setbit 0 portb
clearbit 1 portb
setbit 2 portb
clearbit 3 portb
]
if (pop = 6)
[
clearbit 0 portb
setbit 1 portb
setbit 2 portb
clearbit 3 portb
]
if (pop = 7)
[
setbit 0 portb
setbit 1 portb
setbit 2 portb
clearbit 3 portb
]
if (pop = ![]()
[
clearbit 0 portb
clearbit 1 portb
clearbit 2 portb
setbit 3 portb
]
if (pop = 9)
[
setbit 0 portb
clearbit 1 portb
clearbit 2 portb
setbit 3 portb
]
end
to turnsync
flash
clearbit 0 porta
loop [if (not testbit 1 porta)[setbit 0 porta stop]]
end
to warsync
clearbit 2 porta
loop [if (not testbit 3 porta)[setbit 2 porta stop]]
end
to armylisten
loop [if (not testbit 5 porta)[setbit 2 porta stop]]
end
to turninit
end
to invade
clearbit 4 porta
warsync
loop
[
warsync
ifelse (not(army = 0))
[
setbit 4 porta
setarmy army - 1
armylisten
]
[
clearbit 4 porta
stop
]
]
end
to defend
clearbit 4 porta
setarmy 0
warsync
loop
[
warsync
wait 1
ifelse (testbit 5 porta)
[
setarmy army + 1
wait 1
setbit 4 porta
wait 1
clearbit 4 porta
]
[
stop
]
]
end
to victory ;losing contditions for game and player “resets” (you’ll never know you won here) infinite battle
ifelse (color = 0)
[
if (gpop = 0)
[
setbit 0 portb
setbit 1 portb
setbit 2 portb
setbit 3 portb
wait 100
setrpop 0
setgpop 2
]
]
[
if (rpop = 0)
[
setbit 4 portb
setbit 5 portb
setbit 6 portb
setbit 7 portb
wait 100
setrpop 2
setgpop 0
]
setvic 1
]
end
to resolve
ifelse (color = 0)[setrpop army][setgpop army]
setarmy 0
showled
loop
[
showled
setx random % 3 ;1/3 chance of g,r,0 loss
if (x = 0) [setrpop rpop - 1]
if (x = 1) [setgpop gpop - 1]
if ((rpop = 0) or (gpop = 0))
[stop]
]
end

