![]() |
Vier gewinnt
Hallo ihr Computerfanatiker!
Wir (Sarah und Julia) müssen im Rahmen unseres Informatikunterrichts mit Hilfe des Delphi-Programms (Delphi5) ein Spiel programmieren. Ausgewählt haben wir "Vier gewinnt". Wir beide haben leider absolut keine Ahnung von Programmiersprache, StringGrid und Co. und werden wohl nie ganz hinter den Sinn der Informatik steigen. Deshalb hoffen wir auf eure Hilfe! Folgendes Problem: Mittlerweile haben wir (zugegebenermaßen nicht ganz ohne die Hilfe unseres Informatiklehrers!) es geschafft, die Zellen in die wir klicken mit einem farbigen Kreis zu füllen. Doch wie ist es möglich das 2 Spieler immer abwechselnd an der Reihe sind. Bitte antwortet im Quelltext, da es uns nicht gelingt Anweisungen in "unserer" Sprache in Programiersprache zu übersetzen! ;-) :gruebel: Wir hoffen auf eure Hilfe und Antwort! Mit freundlichen Grüßen Sarah und Julia |
Re: Vier gewinnt
Einfach merken, wer als letztes geklickt hat. Wenn das Spieler eins war, ist jetzt Spieler zwei dran und der Kreis muss blau sein. War es Spieler zwei, ist jetzt Spieler eins dran und der Kreis muss rot sein.
|
Re: Vier gewinnt
Hallo,
falsche Rubrik. es müßte ja heißen "Macht bitte meine Hausaufgaben". Zeigt mal per Code, was ihr schon habt. Das 2Merken", wer dran ist, könnte man per Boolean bPlayer1 = True -> Spieler 1 ist dran bPlayer1 = False -> Spieler 2 ist dran in FormCreate kommt
Delphi-Quellcode:
Nach jedem Spielzug (gültiger Klick auf Grid)
bPlayer1:= True;
Delphi-Quellcode:
Das schaltet immer zwischen True und False um.
bPlayer1:= not bPlayer1;
Man könnte auch schreiben
Delphi-Quellcode:
if bPlayer1 then
begin bPlayer1:= False; end else begin bPlayer1:= True; end; Zitat:
Heiko |
Re: Vier gewinnt
Das ist unser bisheriger Quelltext .. wie gesagt noch ziemlich am Anfang:
Delphi-Quellcode:
[edit=Luckie]Delphi-Tags gesetzt. Beim nächsten mal bitte selber machen. Mfg, Luckie[/edit]
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids; type TForm1 = class(TForm) StringGrid1: TStringGrid; procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} {==============================================================================} procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin // wenn in der gerade gezeichneten Zelle eine 1 steht, dann zeichne dort einen grünen Kreis if StringGrid1.Cells[ACol,ARow] = '1' then begin StringGrid1.Canvas.Brush.Color := clGreen; StringGrid1.Canvas.Ellipse (Rect); end; // wenn in der gerade gezeichneten Zelle eine 2 steht, dann zeichne dort einen blauen Kreis if StringGrid1.Cells[ACol,ARow] = '2' then begin StringGrid1.Canvas.Brush.Color := clBlue; StringGrid1.Canvas.Ellipse (Rect); end; end; {==============================================================================} procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin //wenn spieler 1 dannn schreibe 1 // StringGrid1.Cells[ACol,ARow] := '1'; // sonst schreibe 2 KEINE AHNUNG WIE DIE SPIELER ABWECHSELND ZUM ZUG KOMMEN! HELFT UNS BITTE. end; {==============================================================================} end. |
Re: Vier gewinnt
In Der Hoffnung, dass ihr das nicht einfach nur Kopiert, möchte ich euch mal auf dieses
![]() |
Re: Vier gewinnt
Hallo,
Delphi-Quellcode:
TForm1 ..
private { Private-Deklarationen } bPlayer1: Boolean; public end;
Delphi-Quellcode:
Und jetzt nur noch das "wer hat gewonnen" schreiben ...
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean); begin if StringGrid1.Cells[ACol,ARow] <> '' then begin // es steht was drin // also lassen wir von dieser Zelle mal die Finder // und verschwinden Exit; end; if bPlayer1 then begin // es ist Spieler 1 StringGrid1.Cells[ACol,ARow] := '1'; end else begin // es ist Spieler 2 StringGrid1.Cells[ACol,ARow] := '2 '; end; // Spieler umschalten if bPlayer1 then begin bPlayer1:= False; end else begin bPlayer1:= True; end; end; Vergesst mein FormCeate nicht - freie Form-Fläche suchen - Doppelklick Heiko |
Re: Vier gewinnt
Vielen Dank, Corpsman! Wir werden mal schauen was wir damit bewerkstelligen können. :-)
Natürlich auch vielen Dank an die anderen netten "Informatiker", die bereit waren uns zu helfen! ;-) |
Re: Vier gewinnt
Delphi-Quellcode:
Umständlicher geht es nicht oder? ;)
// Spieler umschalten
if bPlayer1 then begin bPlayer1:= False; end else begin bPlayer1:= True; end; end; Wie wäre es mit:
Delphi-Quellcode:
bPlayer1 := not bPlayer1;
|
Re: Vier gewinnt
LUCKIE !!!
Es sind Rookies !!! ;) Wie du in #3 siehst, hatte ich das dort auch so schon gehabt, aber es dann vereinfacht ;) Zitat:
wenn ihr den Code nicht versteht. Heiko |
Re: Vier gewinnt
[OT]
@corpsman leider komm ich an den Link nicht heran mein Admin schickt mir so etwas: Access Denied (content_filter_denied) Your request was denied because of its content categorization: "Games" Gibt es da vielleicht auch "saubere" Quellen? ja ich will einfach abschreiben vor allem die KI, dann muß ich nicht mehr selber denken!! [/OT] Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz