cgboard - classic games

Normale Version: Hilfe bei meinem Delphi-Projekt
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Leute.

Wenn sich zufällig einer mit Delphi etwas auskennt, wäre ich sehr verbunden, wenn derjenige mir etwas bei einem kleinen Einstiegsprojekt helfen könnte...

Es ist mein erstes Projekt nach langer Zeit und ich muss mich erstmal wieder etwas einarbeiten.
Ich will ein ganz einfaches TicTacToe coden. Dazu nehme ich erstmal ein TImage mit einem Raster für die Spielfläche.

Wie stelle ich es nun am besten an, die Xs und Os darzustellen? Sollte ich jeweils pro Klick ein neues TImage erstellen, welches auf der Spielfläche liegt? Oder gibts da eine andere Möglichkeit?

Und: Ich habe ja 9 Felder, auf das die Spieler Ihre Steine legen können. Wie speichere ich am besten die Koordinaten (Feld geht von PixelX, PixelY nach PixelX2, PixelY2)?
Also ich programmiere schon länger in Delphi, habe aber noch nicht wirklich mit Grafischen Sachen gearbeitet.

Würde das Spielfeld so erstellen wie du es vor hast oder sogar aus jeden Feld ein TImage machen dann kannst du das klick-Event von den jeweiligen Spielfeld einfach auswerten. Dann einfach X oder O Image drüberlegen falls es frei ist. Die Berechnung ob jemand gewonnen hat kannst du einfach mit den Array lösen. 3x3 Array und dieses dann mit 0=leer und 1=X und 2=O

hättest dann z.B. im Array
1 0 1
2 1 2
2 0 1

hätte demnach der Spieler mit X gewonnen, da ja diagonal auch geht.

Quick and Dirty Wink
Ich habe früher mal in Delphi 5 ein Bauernschach-Spiel mit grafischer Oberfläche programmiert.

Dazu habe ich im mehrere *.bmp-Bilder in TBitmap(s) geladen. Insgesamt 5 Bilder: Hintergrund, weiße Figuren auf weißem und schwarzem Grund, schwarze Figuren auf weißem und schwarzem Grund.

Die Spielfläche war dann eine TPaintbox.

Die einzelenen Bilder wurden dann auf dem Canvas der TPaintbox zusammenkopiert (Zuerst das Spielfeld, dann die Figuren ^^).

Die Position, welches Feld geklickt wurde, habe ich über die Position des Cursors auf der TPaintbox errechnet. Das Event "OnMouseOver" (oder so ähnlich) gibt die die Cursorposition zurück - diese Koordinate musst du in einer globalen Variable speichern. Wenn das "OnClick"-Event ausgelöst wurde, rechnest du die Cursorposition in die Feld-Koordinaten um.

Leider habe ich den Sourcecode zu dem Programm nicht mehr Sad

PS.: Wenn du es dir etwas leichter machen willst, kannste das ganze auch über die Vektor-Grafik Funktionen vom Canvas machen ;-) Sieht zwar nicht so schön aus, funktioniert aber auch.


//EDIT:
Das kopieren der Bitmaps geht über die Funktion "BitBlt" mit dem Parameter dwRop=SRCCOPY - hier noch der MSDN-Library-Link: klick

Ein wenig googlen fördert ein paar Beispiele für die Benutzung in Delphi zu tage.
Das mit der Maske habe ich schon drin.

Was den menschlichen Spieler angeht, so muss ich im Moment noch die Mauskoordinaten abfragen und aufwendige if-Konstrukte bauen, aber vielleicht kriege ich das auch vereinfacht hin...

Mein nächstes Projekt wird dasselbe nochmal sein, nur mit einem riesigen Spielbrett und es müssen immer 4 in eine Reihe gebracht werden. Dazu soll es einen schlaueren Computer geben.

Ich hab mal eine kleine Beta, die ich heute schnell gecodet habe hochgeladen!

http://www.megaupload.com/?d=IZG26BM3


edit: Boah, Apie, du überforderst mich^^
Zitat:
Die Datei, auf die Sie zugreifen möchten, ist derzeit leider nicht verfügbar.
Und drunter im schönsten Verrücktwerdblinketext
"Wie verdienen zu 10 000 € pro Monat, klicken Sie hier"

Aah! Sad

EDIT:
Nicht eingeloggt funktioniert es. Elefant Elefant
Spiel funktioniert. Ich gewinne. Alles fein. ^^
Ich arbeite gerade an der grossen Version.

Ich brauch nur etwas Hilfe, und zwar:

Ich habe ein Spielfeld. Jetzt will ich die gesetzten Steine nicht jedesmal neu kreiieren und laden, sondern einfach nur eine Art Kopie als TImage an die Stelle setzen.
Wie soll das gehen, dass ich ein TImage nur einmal lade und dann gleich auf eine bestimmte Position setze?

edit: Ich habe jetzt einfach eine TImageList gebaut und laden die Dinger dann eben als Bitmaps....
Du kannst ja ein Element über die Oberfläche erstellen und dann weitere über .create
Musst dann noch die Position setzen und gut ist.

Werde mir das mal anschauen.

Ich wühle gleich auch mal etwas in Delphi rum Wink
Kann mir einer mal TPoint erklären?

Ich habe im Prinzip eine Function, mit der ich Koordinaten als Rückgabewert brauche. Wie kann ich a und b jetzt zurückgeben und wieder auseinanderfriemeln?

edit: Habs rausgefunden, ist echt simpel. TPoint hat nur X und Y, die man als result zuweisen kann...



edit: Ich hab jetzt eine ganz neue Version, in der der PC cleverer ist. Leider ist er dennoch sehr leicht auszutricksen. VERDAMMT, ich möchte echt wissen, wie ich den schlauer machen kann....

http://www.megaupload.com/?d=HZO3LS4E

Kann sich das trotzdem mal einer ansehen?
Textbox nehmen und Ruhe haben.
Weiss einer, wie ich mittels RegEx eine URL aus einem Link auslesen kann?
Ich hab jetzt mal eine verbesserte Version meines Games rausgebracht. Der PC lässt sich immer noch leicht überlisten, aber viel besser kann ich es einfach nicht... KI ist ne Bitch!

http://www.megaupload.com/?d=32PUQQEK