GPN13:Rocket Scissor Spacegoo: Unterschied zwischen den Versionen

aus dem Wiki des Entropia e.V., CCC Karlsruhe
Wechseln zu:Navigation, Suche
 
(15 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{#css:GPN13:Stylesheet}}
+
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]]
  
'''http://spacegoo.gpn.entropia.de'''
 
  
'''spacegoo.gpn.entropia.de'''
+
==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
 +
* 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]])
  
  
Zeile 13: Zeile 62:
 
{{Navigationsleiste GPN13}}
 
{{Navigationsleiste GPN13}}
 
[[Kategorie:GPN13:Events]]
 
[[Kategorie:GPN13:Events]]
 +
[[Kategorie:GPN13:Vorträge|Rocket Scissor Spacegoo]]

Aktuelle Version vom 24. Juni 2015, 23:01 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