Antwort
 
Themen-Optionen Thema durchsuchen
Alt 07.10.2008, 21:08 Nach oben    #1
Wikinger
 
Benutzerbild von xardias
 
Registriert seit: 02.03.2006
Ort: Aachen
Beiträge: 189
Standard Reversi

Aloha!

Ich bastel gerade an einer AJAX Implementierung des Brettspiels Reversi. Serverseitig verwende ich Python sowie Clientseitig JQuery. Ziel des ganzen ist es Spiele über das Internet mit Freunden und Bekannten zu Spielen. Das sollte so einfach wie möglich und ohne Registrierung funktionieren, so dass ein Link reicht um jemanden zu einem Spiel einzuladen.

Durch Trennung des Codes in Model, Spiellogik und Controller sollten ähnliche Brettspiele mit minimalem Aufwand implementierbar sein. Dame steht als nächstes auf dem Programm.

Bisher habe ich das Spiel selbst mit einem (dummen) Computergegner implementiert, leider noch ohne Support für den IE. Des weiteren werden natürlich Javascript sowie Cookies benötigt.

Wäre schön wenn ich ein paar Meinungen zu der Darstellung bekommen könnte, und falls auch Fehler auffallen.. immer her damit Fehler sind gerade in Multithreading Anwendungen schwierig zu finden.

http://dev-area.net:8095/reversi/

Grüße,
Dennis
xardias ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.10.2008, 21:29 Nach oben    #2
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.378
Standard

du hast den title-tag vergessen...

und: wäre es möglich den Gegner in unterschiedlichen Schwierigkeitsgraden auszuwählen?

ggf. noch eine mini-Erklärung, wie das Spiel funktioniert.

Gefällt mir aber sonst!


// edit in der Runde gerade eben war ein bug. Ich schick dir ein link zu einem Video
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!

Geändert von Jann Hendrik (07.10.2008 um 21:34 Uhr)
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.10.2008, 21:33 Nach oben    #3
Wikinger
 
Benutzerbild von xardias
 
Registriert seit: 02.03.2006
Ort: Aachen
Beiträge: 189
Standard

Hm.. eine Anleitung wäre wirklich hilfreich, danke für den Tipp. Das Gesamtinterface ist noch nicht fertig, dort wird man auch Spieleinstellungen machen können (Verschiedene Regelsätze, Computergegner, Einladen von Spielern, etc).

Das mit der Wahl des Schwierigkeitsgrad macht grad noch nicht viel Sinn.. der Computergegner ist _wirklich_ dumm und nur ein Dummy.. er nimmt immer den ersten möglichen Zug .
xardias ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.10.2008, 21:40 Nach oben    #4
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.378
Standard

ggf. auch schon vor Ende (wenn alle Felder belegt sind) aber ein Gegner keine Chance mehr hat das Spiel abbrechen.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.10.2008, 17:06 Nach oben    #5
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.378
Standard

Das würde ich mal einen bug nennen!


schwarz ist zwar dran, aber kann nicht ziehen. Und ich muss auf ihn warten
Angehängte Grafiken
Dateityp: jpg waiting for player.jpg (39,4 KB, 18x aufgerufen)
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.10.2008, 21:44 Nach oben    #6
Wikinger
 
Benutzerbild von xardias
 
Registriert seit: 02.03.2006
Ort: Aachen
Beiträge: 189
Standard

hmhm sehr merkwürdig.. ich denke das dürfte ein synchronisierungsfehler sein. ich werde die server-client kommunikation komplett überarbeiten, da geht noch zu viel schief.
xardias ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.10.2008, 21:54 Nach oben    #7
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.378
Standard

och - bis auf ein paar Kleinigkeiten läuft das doch schon recht gut - finde ich..
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.10.2008, 17:27 Nach oben    #8
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.378
Standard

jetzt wollte ich das jmd. zeigen... da kommt nur eine Fehlermeldung:
Zitat:
404 Not Found

The path '/reversi/' was not found.

Traceback (most recent call last
File "/usr/lib/python2.5/site-packages/cherrypy/_cprequest.py", line 606, in respond
cherrypy.response.body = self.handler()
File "/usr/lib/python2.5/site-packages/cherrypy/_cperror.py", line 225, in __call__
raise self
NotFound: (404, "The path '/reversi/' was not found.")

Powered by CherryPy 3.1.0
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.10.2008, 17:35 Nach oben    #9
Wikinger
 
Benutzerbild von xardias
 
Registriert seit: 02.03.2006
Ort: Aachen
Beiträge: 189
Standard

Hehe, ich wollte hier gerade die neue URL posten
http://dev-area.net:8095/
das sind die ersten Ansätze für das User Interface um Spiele zu erstellen etc.

Geändert von xardias (09.10.2008 um 17:40 Uhr)
xardias ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2008, 02:51 Nach oben    #10
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.204
Standard

ich hab das spiel vorher noch nie gespielt, macht aber definitiv spass, insbesondere weil ich 0 plan davon hab und irgendwie dauernd verlier

Eine etwas deutlichere (z.b. nen div in der mitte vom feld positioniert oder so) Nachricht wenn man gewonnen oder verloren hat wäre toll, ansonsten irgendwo die Regeln unterbringen wäre auch super
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2008, 08:10 Nach oben    #11
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.378
Standard

die beiden Rand-Infos - werden die noch aktiviert?
Bisher steht da bei der Anzahl der Züge jeweils nur ein x.

Ja, das mit dem 'gewonnen'-Text wäre nicht schlecht...

Spielregeln sind ja schnell erklärt.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2008, 08:16 Nach oben    #12
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.378
Standard

Ich habe einen bug gefunden.

Die beiden von mir gelb markierten Dinger gehörten vorher schwarz. Ich habe dann auf den von mir rot markierten Punkt geklickt und damit die ehemals schwarzen zu meinen weißen eingefärbt.
Da schwarz nicht ziehen konnte (wie die drei Runden vorher auch nicht) bin ich immer noch dran. Leider aber steht mir kein Feld mehr zur Verfügung, welches ich anklicken könnte - ich bin aber immernoch dran.

Hier wäre also eine Überprüfung notwendig, ob ich noch ziehen könnte wenn ich dran bin. So wie du das ja auch schon gelöst hast, dass dann der andere dran ist, jedoch eben um die Bedingung erweitert, ob auch noch machbare Züge vorliegen.

Andernfalls müsste dann doch das Spiel beendet werden, oder?
Angehängte Grafiken
Dateityp: jpg reversi_bug.jpg (37,8 KB, 6x aufgerufen)
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2008, 09:36 Nach oben    #13
Wikinger
 
Benutzerbild von xardias
 
Registriert seit: 02.03.2006
Ort: Aachen
Beiträge: 189
Standard

Hm stimmt den Fall habe ich garnicht betrachtet. Entweder jemand kann ziehen oder das Spielfeld ist voll . Steht auf der Liste.

Aber erstmal ist noch die Neustrukturierung dran. Ich lager gerade das Erstellen des Spiels aus dem Spielinterface aus in einen Spielmanager. Dann kann ich das Interface für andere Spiele mit selben Datenstrukturen wiederverwenden (4 Gewinnt.. TicTacToe.. Dame, sogar Schach!). Über eine schicke Möglichkeit die Spiele zu konfigurieren mache ich mir grad auch noch Gedanken.

Gerade was die Auswahl der Regeln und Spieler angeht.. Drop Down Boxen sind so.. un-web-2.0 Außerdem könnte man da mit JS zusätzliche Informationen einbinden die die gewählten Regeln erklärt.

Dann fixe ich auch den Client, und den Fehler im Regelwerk!

Edit: Robo:
Freu dich auf die erste richtige KI, die jetzige spielt immer den ersten möglichen Zug den sie findet

Geändert von xardias (10.10.2008 um 11:05 Uhr)
xardias ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2008, 13:33 Nach oben    #14
Wikinger
 
Benutzerbild von xardias
 
Registriert seit: 02.03.2006
Ort: Aachen
Beiträge: 189
Standard

Ich habe das allgemeine user interface in der lobby mal etwas angepasst.
Optionen kann man noch keine angeben, aber das kommt bald.

Cooles Feature: Wenn man ein Spiel gestartet hat und dann in die Lobby zurückkehrt (Zurück button) bekommt man ein Dialoglayer in dem man gefragt wird ob man das Spiel beenden oder weiterführen möchte . So lange die Session noch aktuell ist kann man sein Spiel also fortführen . (Momentan 1 Stunde)
xardias ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2008, 15:05 Nach oben    #15
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.378
Standard

Nun fehlt aber der link, damit man nach erfolgreichem Durchlauf ein neues Spiel starten kann.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2008, 15:09 Nach oben    #16
Wikinger
 
Benutzerbild von xardias
 
Registriert seit: 02.03.2006
Ort: Aachen
Beiträge: 189
Standard

Ja stimmt. Ich überlege noch wie ich den realisiere, da man, wenn 2 Spieler mitspielen später auf die Bestätigung des anderen warten muss.
Momentan wäre eine möglichkeit das Spiel neu zu starten einfach zurück zur lobby zu gehen und dort ein neues spiel zu erstellen.
xardias ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2008, 15:12 Nach oben    #17
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.378
Standard

Darüber hinaus bin ich am überlegen, warum mein firefox-tidy einen Fehler im head meldet.

Kannst du die Seite mal auf valides HTML checken - dann weißt du, was ich meine...

Ich sehe einfach nicht, was daran falsch ist..
http://validator.w3.org/check?verbos...s%2Freversi%2F
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2008, 15:31 Nach oben    #18
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.378
Standard

Ggf könntest du einfach einen Schalter mit einbauen, ob mit ein oder mit 2 Personen gespielt wird.
Wenn nur alleine gespielt wird, dann kommt der link - und wenn zu zweit, dann eben so, wie du das geplant hast.

btw: warum ist die Seite auf deutsch, aber die Meldungen des Spiels auf englisch?

Fällt mir erst jetzt auf, da ich hier mi Büro fleißig englische Literatur lese...
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2008, 21:54 Nach oben    #19
nox
Benutzer
 
Registriert seit: 22.11.2006
Ort: Haan
Beiträge: 50
Standard

schlimm,

ich erwische mich immerwieder wie ich es spiele, mach richtig spaß, aber ich vermisse den knopf "spiel neustarten", sonst einfach nur genial.

Achja 4Gewinnt heißt bei mir wohl 20 gewinnt Hatte 4 in einer Reihe aber ging einfach weiter.

Gruß nox
__________________
nox ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2008, 22:06 Nach oben    #20
Wikinger
 
Benutzerbild von xardias
 
Registriert seit: 02.03.2006
Ort: Aachen
Beiträge: 189
Standard

Hehe freut mich, dass es in einem so unfertigen Stadium schon Spass macht ;-).

4 Gewinnt ist nur ein experiment. Habe ich in 10 Minuten geschrieben um das ersetzen der Regeln zu testen. Die Regeln prüfen grad nur in x-Richtung auf 4 in einer Reihe ;-).

Wen es interessiert.. Das ist alles was ich für 4 Gewinnt programmieren musste, inklusive einer kleinen struktur die Beschreibung, Titel und so enthält.

Code:
from wg.models.squareboard import Stone, SetStoneAction

class ConnectFourRules(object:(   
   def start_game(self, model:(
      model.active_player = model.white
      
   def check_range(self, model, range:(
      white_connected = 0
      black_connected = 0
      for x, y in range:
         field = model.board.fields[x][y]
         
         if field:
            white_connected = white_connected+1 if field.owner is model.white else 0
            black_connected = black_connected+1 if field.owner is model.black else 0
         else:
            black_connected = white_connected = 0
            
         if white_connected == 4:
            return [model.white]
         elif black_connected == 4:
            return [model.black]

   def determine_winner(self, model:(
      dim =  model.board.dimensions
      xrange = [(x, y) for x in range(dim[0]) for y in range(dim[1])]
      yrange = [(x, y) for y in range(dim[1]) for x in range(dim[0])]
      
      winner = self.check_range(model, xrange)
      winner = winner or self.check_range(model, yrange)
      return winner
         
   def get_possible_moves(self, model, player:(
      possible = []
      stone = Stone(Stone.STONE, player)
      for x in range(model.board.dimensions[0]:(
         for y in reversed(range(model.board.dimensions[1]):(
            if model.board.fields[x][y] is None:
               possible.append(SetStoneAction(player, (x, y), stone))
               break
      return possible

   def make_move(self, model, move:(
      (x, y) = move.position
      model.board.fields[x][y] = Stone(Stone.STONE, move.player)
      model.active_player = model.white if move.player is model.black else model.black
      model.winner = self.determine_winner(model)
Des weiteren plane ich noch eine Art Mod System. Hooks denen man sich vor oder nach den Methoden dieser Rules Klasse einklinken kann.
So kann man z.b. ein Mod schreiben der das Spielfeld einfach verkleinert (hook vor start_game), ein Mod der die Gewinnbedinung für Reversi anpasst: Wer nicht mehr ziehen kann der verliert (Hook vor determine_winner).

Alternative wäre es einfach mehrere Regelwerke anzubieten und durch Ableiten von den Default Regeln das selbe zu erziehlen. Doch dann kann nur eine Modifikation gleichzeitig verwendet werden.

Edit: Das Forum macht aus :( im Code ein :(

Geändert von xardias (10.10.2008 um 22:09 Uhr)
xardias ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45