Autor Beitrag
VerdammtVerzweifelt
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 19.01.10 15:34 
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!

Wir hoffen auf eure Hilfe und Antwort!

Mit freundlichen Grüßen
Sarah und Julia

P.S: Bitte spart euch Bemerkungen wie: "Falsche Rubrik. Es müßte ja heißen "Macht bitte meine Hausaufgaben."
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8549
Erhaltene Danke: 478

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 19.01.10 15:41 
Hallo und :welcome: in der Entwickler-Ecke,

Dann zeigt doch am besten erst einmal, was ihr schon so habt. Dann kann man da vielleicht etwas passendes einbauen. :D

_________________
We are, we were and will not be.
VerdammtVerzweifelt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 19.01.10 15:46 
Das ist unser bisheriger Quelltext .. wie gesagt noch ziemlich am Anfang:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
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!
HILF UNS BITTE.
end;
{==============================================================================}
end.


:'(

Erstmal ist es uns wichtig zu wissen, wie wir nun die Spieler abwechselnd zum Zuge kommen lassen können???

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt, Beiträge zusammengefasst.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8549
Erhaltene Danke: 478

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 19.01.10 15:55 
Eine Idee: Den Spieler in einer Variable merken und bei Klick umsetzen, also:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
// oben bei der Deklaration von Form 1
 private
    { Private-Deklarationen }
    Spieler: Integer;

// weiter unten:

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
   if Spieler = 0 then
   begin
      // code für Spieler 0
      //...
      Spieler := 1// anderer Spieler ist dran
   end else
   begin
     // ...
     Spieler := 0;
   end;
end;

_________________
We are, we were and will not be.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 19.01.10 15:59 
Soweit sind wir in der Delphipraxis auch schon: www.delphipraxis.net...1121988.html#1121988 ;)
guinnes
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 182
Erhaltene Danke: 14



BeitragVerfasst: Di 19.01.10 16:05 
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Soweit sind wir in der Delphipraxis auch schon: www.delphipraxis.net...1121988.html#1121988 ;)

Im Delphi-Treff gibts auch schon Antworten
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Di 19.01.10 16:07 
Na super, dann können wir ja hier die Bemühungen einstellen. :autsch:
@Mädels: Bitte nächstes Mal sofort auf Crossposts hinweisen. :roll:

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 19.01.10 16:07 
@Guinnes: Warum ist der Thread bei euch noch nicht geschlossen? ;)


Zuletzt bearbeitet von Luckie am Di 19.01.10 16:08, insgesamt 1-mal bearbeitet
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Di 19.01.10 16:08 
Ich wollt erst frage wo sie copy paste gemacht haben, da dies bei Codeabschnitten nicht so funktioniert und daher gleich zu sehen war. ^^

Mein Tipp versucht erstmal die bisherigen Tipps zu verstehen und dann Fragen zu stellen.
Und egal in wieviele Foren ihr geht es sind dort zum groß Teil die selben Leute wie in anderen und daher braucht ihr das nicht in jedes Forum das ihr findet zu posten.
guinnes
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 182
Erhaltene Danke: 14



BeitragVerfasst: Di 19.01.10 16:22 
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
@Guinnes: Warum ist der Thread bei euch noch nicht geschlossen? ;)

Machen wir in so einem Fall nicht mehr, gibt nur ne Verwarnung. ( Obwohl der Effekt wohl der gleiche sein wird :wink: )
VerdammtVerzweifelt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Mi 20.01.10 14:06 
Keine Ahnung was ihr hier für Informatikerspecials und Verknüpfung zu anderen Foren habt.
Wir wollten einfach nur Hilfe von möglichst vielen Leuten, damit wir dahinter steigen und unser eigenen Spiel zusammen basteln können.
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Mi 20.01.10 14:28 
habt ihr ds von gausi denn schon umgesetzt?

_________________
mfg. Joel
VerdammtVerzweifelt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Mi 20.01.10 14:51 
Wir arbeiten nur jeden Dienstag an unserem Projekt und zuhause haben wir das Programm nicht auf dem Rechner.
Weitere Frage werden sich sicherlich nächsten Dienstag ergeben.
Aber wir werden erstmal versuchen das so umzusetzen.
Also es funktioniert auch im Delphi5?
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8549
Erhaltene Danke: 478

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mi 20.01.10 14:55 
Ja, das sollte auch in Delphi 5 gehen. Das sind absolute Basis-Elemente der Sprache. :D

_________________
We are, we were and will not be.
VerdammtVerzweifelt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Mi 20.01.10 15:45 
Vielen Lieben Dank.
Weitere spannende Aufgaben erwarten euch nächsten Dienstag ;-)
VerdammtVerzweifelt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 09.02.10 14:40 
Soooo, nun sind wir soweit & wollen unsere Spielsteine fallen lassen.
Egal in welches Feld der Spieler klickt: der Stein soll in dieser Spalte soweit runter fallen wie es geht.
4gewinnt eben ;-)
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Di 09.02.10 14:44 
user profile iconVerdammtVerzweifelt hat folgendes geschrieben Zum zitierten Posting springen:
Soooo, nun sind wir soweit & wollen unsere Spielsteine fallen lassen.
Egal in welches Feld der Spieler klickt: der Stein soll in dieser Spalte soweit runter fallen wie es geht.
4gewinnt eben ;-)

Na dann viel Erfolg bei dieser spannenden Aufgabe.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
VerdammtVerzweifelt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 09.02.10 14:49 
Äääähm wir würden uns sehr über Hilfe freuen!!

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Unsere Idee ist Folgende:

if y ungleich ymaximal
solange (zelle[x,y+1]=leer) and y-1 < ymaximal
zelle [x,y+1]=1
zelle [x,y]='' (leer)

soooo & wie kriegt man das nun in einen vernünftgen Algorithmus?
Webo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 577
Erhaltene Danke: 14

Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
BeitragVerfasst: Di 09.02.10 16:04 
"Wenn y ungleich dem maximalen y ist, dann soll, solange die Zelle [x, y+1] leer ist und y-1 kleiner als dem maximalen y ist, in die Zelle [x, y + 1] eine 1 reingeschrieben werden und die Zelle [x,y] leer sein" ... Aber x und y ändert ihr nicht, oder ?
Ich weiss ja nicht, wie genau ihr das gedacht hattet, aber wenn das so ist, würde ja die "solange"-Bedingung (unter Delphi auch while genannt) immer "aktiv" bleiben, wenn sie denn einmal erfüllt ist, also würde ewig die gleiche Zelle 1 beinhalten. Außer ihr ändert irgendwo noch x und y ... (Kann auch sein, dass ich etwas überlesen hab)

Für weitere Überlegungen wäre Euer PseudoCode mal ganz schnell übersetzt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if y <> ymaximal then
begin
  while ( StringGrid.Cells[x, y + 1] = '' ) and ( y - 1 < ymaximal ) do
  begin
    StringGrid.Cells[x, y + 1] := '1';
    StringGrid.Cells[x, y] := '';  
  end;
end;

_________________
Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 09.02.10 17:13 
Ich frage mich gerade, wer hier eigentlich das Programm schreibt. :roll:
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.