GPN13:Rocket Scissor Spacegoo: Unterschied zwischen den Versionen

aus dem Wiki des Entropia e.V., CCC Karlsruhe
(Vortragsseite initialisiert)
 
Keine Bearbeitungszusammenfassung
 
(18 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{#css:GPN13:Stylesheet}}
Ein Programmierspiel von [[User:dividuum|dividuum]] und [[User:cupe|cupe]] auf der [[GPN13]].
[[File:gpn13-rocket-scissor-spacegoo.mp4|600px|right]]
[[Datei:spacegoo_01_prinzip.png|thumb|300px]]
[[Datei:spacegoo_02_kampfsystem.png|thumb|300px]]
 
 
==Server==
* dividuums server im Internet: http://spacegoo.rent-a-geek.de
 
===im Clubnetz===
* all time scores: http://spacegoo:8080, Spielport: spacegoo:6000
* 24h scores: http://spacegoo:8023, Spielport: spacegoo:6023
 
===historisch===
* 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 ([[Media:Rocket-scissor-spacegoo.tar.xz|Mirror]])
* 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 [https://bitbucket.org/nomeata/haskell-spacegoo/src/master/nomeatas_bot.hs nomeataintercept2].
** Lorenz' stümperische [https://bitbucket.org/nuk/haskell-spacegoo/src/master/nomeatas_bot.hs Ummodelung]
** komisch schlechter Code von [http://pastebin.com/ZYDcHqvt unterstrich]
** Banaler, aber anscheinend effektiver [https://gist.github.com/Kha/5693348#file-khaderp-py-L1 khaderp]
** zusammengehackt und komplizierter als nötig: [https://gist.github.com/MatzeB/5693583 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
 
== Material ==
* Videoaufzeichnung: [http://ftp.ccc.de/events/gpn/gpn13/gpn13-rocket-scissor-spacegoo.mp4 gpn13-rocket-scissor-spacegoo.mp4] ([[Media:gpn13-rocket-scissor-spacegoo.mp4|Mirror]])
 


Ein Vortrag von cupe + dividuum auf der [[GPN13]].


Das diesjaehrige Programmierspiel versetzt euch in die Lage eines
Spacekommandanten. Ihr befehligt Raketen, Scheren und Weltraumschleim.
Macht keinen Sinn? Kommt in der Vorstellungsvortrag und lasst euch alles
erklaeren. Und heizt schonmal eure TCP und JSON Libraries vor.


{{Navigationsleiste GPN13}}
{{Navigationsleiste GPN13}}
[[Kategorie:GPN13:Events]]
[[Kategorie:GPN13:Events]]
[[Kategorie:GPN13:Vorträge|Rocket Scissor Spacegoo]]

Aktuelle Version vom 11. August 2023, 12:05 Uhr

Ein Programmierspiel von dividuum und cupe auf der GPN13.

Spacegoo 01 prinzip.png
Spacegoo 02 kampfsystem.png


Server

im Clubnetz

historisch

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

Material