Schiffe versenken
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
datum
feedback
feld
gedanke
helfen
interaktion
joint
kreuzung
liste
lobby
mitspieler
sache
schiff
schiffen
server
setzen
spiel
spieler
url
-
Hallo zusammen!
Eine Freundin fragte mich neulich, ob ich Schiffe versenken für eine Website programmieren könnte. Hintergrund ist eine Piraten-Homepage.
Natürlich sagte ich "Ja, das geht schon" - ich zweifel auch nicht daran, dass ich das hinkriege, die Frage ist nur wie sauber und in welcher Zeitspanne *grins*
Darum bin ich nun am überlegen: Ich kann JavaScript, PHP & SQL, ActionScript3 und TypoScript - letzteres wird mir aber nicht weiter helfen! Leider kann ich keine der Sprachen 100%ig sicher, aber gut genug, dass ich immer alles hinbekommen habe, was ich wollte :)
Ihr seht, der Threat steht unter PHP - in der Ahnung, dass die angemeldeten Benutzer das auch mal gegen einander spielen sollen, habe ich mich nun für diese Variante entschieden - mit JS und AS wüsste ich nämlich nicht, wie ich eine Interaktion mit einem anderen Client herstellen kann.
Nun grübel ich aber, wie ich das eigentliche Spiel aufziehen kann:
- die Feldgröße wird clientseitig festgelegt und in Form von verlinkten Quadraten ausgegeben
- vom Server werden aus der DB die Größe der Schiffe geholt
Und nun? ^^"
Ich habe überlegt, die Feldnamen (A1, A2, A3, ...) in einem Array abzulegen und zufällig bei den Schiffen auszuwählen, auf welchem Feld das Schiff beginnt. Dann auch noch ausloten ob horizontal oder vertikal. Dann werden die Felder, die das Schiff bedeckt aus dem Array gelöscht - genau, wie die Felder direkt daneben. Dann kann das nächste Schiff positioniert werden.
Das klingt für mich nun nach einer wahnsinns Abfragerei und ich kann mir vorstellen, dass es geschickter geht... Aber ich komme nicht drauf *s*
Vielleicht hat ja einer von euch grad eine spontane Idee, wie man sowas geschickt ausziehen kann. Ich würde mich sehr freuen!
Grüße
things -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hiho,
also ein paar Anregungen kann ich dir vielleicht geben. Eigentlich wäre es jedoch gut zu wissen wie hoch der Anspruch bei der Sache ist.
Du könntest das Spiel komplett mit php bauen. Du erstellst zum Beispiel ein Gitter (hier bietet sich fast eine Tabelle an) und füllst diese mit je einer Graphik (bereits auf die Stelle geschossen oder nicht) jeder dieser Graphiken ist ein Link. Beim Klicken des Links wird dann die Aktion ausgeführt und die Daten in einer Datenbank entsprechend geändert.
Diese Methode ist jedoch für Nutzer unpraktisch. Man muss dazu jedes mal die komplette Seite neu laden und der Mitspieler bekommt noch kein Feedback ob er dran ist oder nicht. Auch beim Setzen der eigenen Schiffe handelt es sich so um eine langwierige Prozedur.
Besser wäre es bei solchen Sachen auf Javascript zu setzen. Zum Beispiel beim Setzen der Schiffe jede Position in einem Javascript-Array speichern und erst wenn alles gesetzt ist die Daten an den Server schicken.
Auch mit der Interaktion zwischen den Spielern macht sich Javascript/AJAX nicht schlecht um den Mitspieler darauf hinzuweisen das er dran ist.
Weiterhin solltest du dir Gedanken machen wie Spieler gegeneinander spielen sollen. Du müsstest so etwas wie eine Lobby schreiben damit die Spieler sich herausfordern können.
Beim einfachen Spiel gegen den Computer würde ich auf PHP verzichten. Bei Javascript können die Spieler zwar den Quellcode verändern und somit "cheaten" aber naja... es geht ja dabei auch nicht um die Steuerung von Atomreaktoren.
Also wie gesagt bei der Interaktion zwischen den Spielern dürft AJAX dein Freund sein...
Ich hoffe ich konnte wenigstens ein wenig helfen. Gruß loadi.
-
Hallo loadi!
Stimmt, AJAX ist ja die Kreuzung aus JS und PHP *grins*
Einen richtigen Plan gibt es für das Spiel noch nicht - auch über ein Herausforderungssystem möchte ich noch gar nicht nachdenken. Eigentlich möchte ich es erstmal so gestalten, dass man gegen den PC spielt und es später auch auf User vs User ausweiten kann.
Die Feedback-Sache hatte ich noch überhaupt nicht auf dem Schirm - danke dafür!
Dein Beitrag hat mir auf jeden Fall weiter geholfen. Dann werde ich eben noch AJAX lernen - aber man lernt ja eh nie aus, oder? *s*
Grüße
things -
things schrieb:
Stimmt, AJAX ist ja die Kreuzung aus JS und PHP *grins*
ehhh, nein ...
AJAX steht für Asyncronous JavaScript and XML
Ändert aber nichts daran das es dir vermutlich helfen wird.
Aber wenn du ActionScript3 kannst, könntest du es doch auch mit Flah umsetzen? Hier ist auf jeden fall ein komfortables Client-Side-Handling möglich. Die kommunikation mittels eines WebService oder einer PHP-Seite sollte hier auch möglich sein. Google liefert mir auf jeden fall links zu Flash & Ajax ;)
grüße
Doomdrake -
Grundsätzlich ist es sicherlich klug auf MySQL, PHP und JavaScript zu setzen, da man dazu u.a. auch die meisten Tutorials findet.
Die Idee finde ich auch ganz lustig.
Also über folgendes solltest du dir erst einmal Gedanken machen:
- wie läuft die Client-Server-Client Kommunikation ab
- was passiert bei Unterbrechungen, Aufgabe, keine Reaktion des Gegners etc. einfach mal ne Liste mit Fällen und dazu die Aktion
- wie finden sich zwei Spieler? wie finden sich möglichst faire Spieler
Ich denke, dass es darauf hinauslaufen wird, dass du die Struktur in etwa so aussehen wird:
Client verbindet sich
Client gibt Benutzernamen ein / meldet sich an
Client kommt in eine Lobby
--- wie finden sich zwei Clienten? Hostet ein Client das Spiel und der andere Joint? Oder Joint man grundsätzlich und wird mit dem nächst besten Clienten verbunden?
Client ist im Spiel
--- integrierter Chat?
und jetzt habe ich gerade keine Lust mehr.
Aber diese Liste solltest du noch etwas fortführen.
Wenn du Hilfe bei der Umsetzung brauchst und das Gerüst steht, meld dich ruhig. Hätte wohl Spaß dir zu helfen. :)
Viele Grüße,
Lucas
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage