Matze (Diskussion | Beiträge) (→Server) |
KKeine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
{{ | Ein Programmierspiel von [[User:dividuum|dividuum]] und [[User:cupe|cupe]] auf der [[GPN13]]. | ||
{{youtube|id=O58a7479oX4}} | |||
[[Datei:spacegoo_01_prinzip.png|thumb|300px]] | [[Datei:spacegoo_01_prinzip.png|thumb|300px]] | ||
[[Datei:spacegoo_02_kampfsystem.png|thumb|300px]] | [[Datei:spacegoo_02_kampfsystem.png|thumb|300px]] | ||
Version vom 24. Juni 2013, 22:16 Uhr
Ein Programmierspiel von dividuum und cupe auf der GPN13.
Server
- Hiscore und Spielaufzeichnungen: http://spacegoo.gpn.entropia.de
- Hierhin connecten zum spielen: spacegoo.gpn.entropia.de:6000
- Code und mehr Doku: https://bitbucket.org/dividuum/rocket-scissor-spacegoo
- Haskell-Umgebung zum Client schreiben: https://bitbucket.org/nomeata/haskell-spacegoo und `cabal install haskell-spacegoo`. Bitte nomeata Bescheid geben wenn das jemand benutzt! Als Beispielcode siehe den des bots nomeataintercept2.
- Lorenz' stümperische Ummodelung
- komisch schlechter Code von unterstrich
- Banaler, aber anscheinend effektiver khaderp
- zusammengehackt und komplizierter als nötig: snak3
Code fürs Kampfsystem
def battle_round(attacker,defender):
#nur eine asymmetrische runde. das hier muss mal also zweimal aufrufen.
numships = len(attacker)
defender = defender[::]
for def_type in range(0,numships):
for att_type in range(0,numships):
multiplier = 0.1
absolute = 1
if (def_type-att_type)%numships == 1:
multiplier = 0.25
absolute = 2
if (def_type-att_type)%numships == numships-1:
multiplier = 0.01
defender[def_type] -= (attacker[att_type]*multiplier) + (attacker[att_type] > 0) * absolute
defender[def_type] = max(0,defender[def_type])
return defender
def battle(s1,s2):
ships1 = s1[::]
ships2 = s2[::]
while sum(ships1) > 0 and sum(ships2) >0:
new1 = battle_round(ships2,ships1)
ships2 = battle_round(ships1,ships2)
ships1 = new1
#print ships1,ships2
ships1 = map(int,ships1)
ships2 = map(int,ships2)
#print ships1,ships2
return ships1, ships2