![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Wikinger Registriert seit: 02.03.2006 Ort: Aachen
Beiträge: 189
|
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 http://dev-area.net:8095/reversi/ Grüße, Dennis |
| | |
| | Nach oben #2 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.378
|
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: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! Geändert von Jann Hendrik (07.10.2008 um 21:34 Uhr) |
| | |
| | Nach oben #3 |
| Wikinger Registriert seit: 02.03.2006 Ort: Aachen
Beiträge: 189
|
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 |
| | |
| | Nach oben #4 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.378
|
ggf. auch schon vor Ende (wenn alle Felder belegt sind) aber ein Gegner keine Chance mehr hat das Spiel abbrechen.
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #5 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.378
|
Das würde ich mal einen bug nennen! schwarz ist zwar dran, aber kann nicht ziehen. Und ich muss auf ihn warten
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #7 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.378
|
och - bis auf ein paar Kleinigkeiten läuft das doch schon recht gut - finde ich..
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #8 | |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.378
|
jetzt wollte ich das jmd. zeigen... da kommt nur eine Fehlermeldung: Zitat:
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! | |
| | |
| | Nach oben #9 |
| Wikinger Registriert seit: 02.03.2006 Ort: Aachen
Beiträge: 189
|
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) |
| | |
| | Nach oben #10 |
| Benjamin Steininger Registriert seit: 02.06.2005 Ort: weiher im tiefsten Odenwald
Beiträge: 1.204
|
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 |
| | |
| | Nach oben #11 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.378
|
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: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #12 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.378
|
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?
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #13 |
| Wikinger Registriert seit: 02.03.2006 Ort: Aachen
Beiträge: 189
|
Hm stimmt den Fall habe ich garnicht betrachtet. Entweder jemand kann ziehen oder das Spielfeld ist voll 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 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) |
| | |
| | Nach oben #14 |
| Wikinger Registriert seit: 02.03.2006 Ort: Aachen
Beiträge: 189
|
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 |
| | |
| | Nach oben #15 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.378
|
Nun fehlt aber der link, damit man nach erfolgreichem Durchlauf ein neues Spiel starten kann.
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #16 |
| Wikinger Registriert seit: 02.03.2006 Ort: Aachen
Beiträge: 189
|
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. |
| | |
| | Nach oben #17 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.378
|
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: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #18 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.378
|
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: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #19 |
| Benutzer Registriert seit: 22.11.2006 Ort: Haan
Beiträge: 50
|
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 Gruß nox |
| | |
| | Nach oben #20 |
| Wikinger Registriert seit: 02.03.2006 Ort: Aachen
Beiträge: 189
|
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)
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) |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |