Willkommen im cgboard - classic games Forum! Deine gemütliche Retro Gaming Community. Besuche uns auch im Discord Chat.

Hilfe bei meinem Delphi-Projekt
#1
0
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)?
[Bild: gog.png] [Bild: opel.png] [Bild: atr.png]
In ewigem Gedenken an SonataFanatica... R.I.P., mein alter Freund  Sad
Zitieren
#2
0
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
Zitieren
#3
0
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.
Give a man a gun and he'll rob a bank. Give a man a bank and he'll rob everybody.
Zitieren
#4
0
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^^
[Bild: gog.png] [Bild: opel.png] [Bild: atr.png]
In ewigem Gedenken an SonataFanatica... R.I.P., mein alter Freund  Sad
Zitieren
#5
0
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. ^^
Zitieren
#6
0
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....
[Bild: gog.png] [Bild: opel.png] [Bild: atr.png]
In ewigem Gedenken an SonataFanatica... R.I.P., mein alter Freund  Sad
Zitieren
#7
0
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
Zitieren
#8
0
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?
[Bild: gog.png] [Bild: opel.png] [Bild: atr.png]
In ewigem Gedenken an SonataFanatica... R.I.P., mein alter Freund  Sad
Zitieren
#9
0
Textbox nehmen und Ruhe haben.
Zitieren
#10
0
Weiss einer, wie ich mittels RegEx eine URL aus einem Link auslesen kann?
[Bild: gog.png] [Bild: opel.png] [Bild: atr.png]
In ewigem Gedenken an SonataFanatica... R.I.P., mein alter Freund  Sad
Zitieren
#11
0
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
[Bild: gog.png] [Bild: opel.png] [Bild: atr.png]
In ewigem Gedenken an SonataFanatica... R.I.P., mein alter Freund  Sad
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Hilfe beim MP3 taggen Corsafahrer 1 2.029 12.01.2020, 03:38
Letzter Beitrag: Traxx Amiga EP
  Gradle, Java? HILFE! CrazyJose 3 3.058 01.05.2019, 17:00
Letzter Beitrag: Traxx Amiga EP
  Robobackup - Ein Mini-Projekt Atreyu 0 2.542 10.04.2018, 20:40
Letzter Beitrag: Atreyu
  [Problem] Flackern bei Browser Opera & Chrome ReservoirDog 15 5.234 09.03.2018, 21:36
Letzter Beitrag: Mustrum
  [Grafik] Bräuchte mal eine kleine Hilfe für ein Dekompression Algorithmus für ILBM Bild Dateien SagaraS 7 3.736 14.12.2017, 18:30
Letzter Beitrag: tomwatayan

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste