Autor Beitrag
Larissa17
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 24.04.06 20:23 
Hallo Leute...
Wir ham Delphi 2005 in der Schule als Thema
und nun sollen wir sowas wie ein Schachbrett programmieren... bei dem man wählen kann wie lang die Kästchen sind wie viele es sind und welche Farbe die einzelnen Kästchen haben (also z.b. blau und rot oder weiß und schwarz)
Ich hab leida nicht ma den Funken einer Idee wie man des machen könnte und grüble schon die ganzen Ferien... nun weiß ich mir keinen Rat mehr...
Also falls irgendwer Lust hat bissi zu knobeln oder sich schlichtweg gut auskennt wäre echt saunett mir zu erklären wie man des am Besten macht...
mfG Larissa

Moderiert von user profile iconmatze: Titel geändert.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Mo 24.04.06 20:31 
Habt ihr schonmal mit Canvas gearbeitet?

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Fabian W.
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1766

Win 7
D7 PE
BeitragVerfasst: Mo 24.04.06 20:38 
Kommt darauf an wie weit ihr in Delphi seit. Wenn das ganze anspruchsvolls ein soll dann könnte man images generieren und aneinanderreihen, wenn ihr erst anfangt is canvas gut...
Könntest du auch dein Problem etwas spezifizieren? Hast du einfach kA odre bereiten dir die Komponenten Probleme?

mfg
Larissa17 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 25.04.06 00:56 
Also wir haben canvas und ein wenig images aber mit zweiterem ham wir noch net soooo oft gearbeitet ;)
also mit den einzelnen Komponenten hab ich eher nich so viele Schwierigkeiten.
Ich hab halt keine Ahnung wie ich die sachen mit diversen schleifen und canvas so zusammsetze das ich am ende der aufgabe gerecht werde...
Logikmensch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 390

Win XP
Delphi 2007 Prof., XE2, XE5
BeitragVerfasst: Di 25.04.06 06:14 
Hallo Larissa17,

zum Eingewöhnen, auch wenn das Zeitverhalten nicht das beste wird, empfehle ich hier eine Image-Komponente auf dein Formular zu platzieren und mit dessen Canvas-Eigenschaften (Brush, Pen) und -Methoden (FillRect, Rectangle) zu experimentieren. Image deswegen, weil Du hier vom System verwöhnt wirst und das Canwas wie eine stabil bleibende Leinwand bemalen kannst (im Gegensatz zur Paintbox, die ihr Gemale immer wieder vergisst). Du kannst ja die Größe des Image (Image.width und .height) als Maximalkoordinaten verwenden und "einfach" ein rechteckiges Gitter reinmalen (mit zweifach geschachtelter Schleife). Schachbrettmuster lassen sich mit Hilfe des Abfragens der Schleifenzähler auf gerade oder ungerade (funktion Odd) abtesten. Da kannst Du z.B. den ungeradzahligen Rechtecken ein gelbes und den geradzahligen ein schwarzes Füllmuster zuweisen.

Liebe Grüße,

Claus.
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Di 25.04.06 08:41 
Hier mal ein Fertiger Code, ist nicht von Mir vieleicht kannst du damit was anfangen.

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:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);
var
i,x,y,modtemp: integer;

begin
  form1.Canvas.Pen.Color := clBlack;
  //Zeichnet das Spielfeld
  for i:=0 to 8 do
  begin
    canvas.MoveTo(60+i*50,60);
    canvas.LineTo(60+i*50,460);
    canvas.MoveTo(60,60+i*50); 
    canvas.LineTo(460,60+i*50);
  end

  x := 0;
  while x <> 8 do
  begin 
    x := x + 1;
    for y := 1 to 8 do 
    begin
      modtemp := y mod 2;
      if modtemp = 0 then
      begin 
        Form1.Canvas.Brush.Color := clWhite;
        Form1.Canvas.FillRect(Rect({left}50*(y)+11,{top}50*(x)+11
{right}50*(y)+60,{bottom}50*(x)+60));
      end
      else
      begin 
        Form1.Canvas.Brush.Color := clGray;
        Form1.Canvas.FillRect(Rect({left}50*(y)+11,{top}50*(x)+11
{right}50*(y)+60,{bottom}50*(x)+60));
      end;
    end;
  end

    x := 0
  while x <> 8 do
  begin
    x := x + 2;
    for y := 1 to 8 do 
    begin
      modtemp := y mod 2;
      if modtemp = 0 then
      begin
        Form1.Canvas.Brush.Color := clGray;
        Form1.Canvas.FillRect(Rect({left}50*(y)+11,{top}50*(x)+11,
{right}50*(y)+60,{bottom}50*(x)+60));
      end
      else
      begin
        Form1.Canvas.Brush.Color := clWhite;
        Form1.Canvas.FillRect(Rect({left}50*(y)+11,{top}50*(x)+11,
{right}50*(y)+60,{bottom}50*(x)+60));
      end;
    end;
  end;

  //Farbe wieder auf Hintergrundfarbe zurück setzen.
  form1.Canvas.Brush.Color := clBtnFace;

  //Schriftformatierung
  font.Name:='Arial';
  font.Size:=20;

  for i:=1 to 8 do
  begin
    canvas.TextOut(i*50+25,20,chr(96+i));    //schreibt Buchstaben über Spielfeld
    canvas.TextOut(25,i*50+20,inttostr(i));  //schreibt Zahlen über Spielfeld
  end;

end;

end.
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Di 25.04.06 09:30 
Eigentlich wollte ich den Quellcode davon abhängig machen ob du es schafst den Beitragstext oben so zu formulieren, daß es jeder vernünftige Mensch versteht. Aber lassen wir das. Das nächste Mal.

Hier ein kurzes Beispiel wie das geht. Wenn du keine schwarzen Trennlinien haben willst, dann muß du neben Brush auch Pen eine Farbe geben.

ausblenden 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:
procedure PaintX(Ax, Ay, AWidth: Word; ACan: TCanvas; ACol1, ACol2: TColor);
var
  x, y, x1, x2, y1, y2: Word;
  Col: array[Boolean] of TColor;
begin
  ACan.Brush.Style := bsSolid;
  Col[False] := ACol1; Col[True] := ACol2;

  for y := 0 to Ay - 1 do
  begin
    for x := 0 to Ax - 1 do
    begin
      ACan.Brush.Color := Col[Odd(x) xor Odd(y)];
      //ACan.Pen.Color := ACan.Brush.Color;

      x1 := x * AWidth; x2 := x1 + AWidth;
      y1 := y * AWidth; y2 := y1 + AWidth;

      ACan.Rectangle(x1, y1, x2, y2);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  PaintX(8820, Canvas, clYellow, clGreen);
end;


Wenn du noch weiter zeichnen möchtest, dann würde ich mir vorher die Canvas Eigenschaften wie z.B. Farbe und Style sichern und nach getanner Arbeit wieder zuweisen.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
dh
Hält's aus hier
Beiträge: 11


Delphi 6 PE, Delphi 7 Prof., Delphi 8 Prof., C++, Java, PHP
BeitragVerfasst: Di 25.04.06 09:41 
Habe noch nie damit gearbeitet, aber Delphi bietet DrawGrid an. Damit lassen unter anderem auch Spielbretter, Heuristiken usw. erstellen. ( Sokoban, 5-Gewinnt usw )