Da du das ganze im Array hast, können dir Tags doch egal sein?
Wenn der Computer ein Schiff im 2 dimensionalen Array aussuchen soll, dann mach doch einfach 2 Zufallszahlen. Eine für den x-Wert, die andere für den y-Wert.
Veränderung des Codes während der Laufzeit
-
- Beiträge: 32
- Registriert: Mi 7. Sep 2016, 18:27
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
Re: Veränderung des Codes während der Laufzeit
www.devstructor.com Devstructor.com - Lazarus Tutorials and more
-
- Beiträge: 6916
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Veränderung des Codes während der Laufzeit
Ich habe da noch ein Muster, dies wäre eine Alternative gegenüber den Buttons.
Man beachte die Array Feld, die zeigt den Status der Felder.
Im richtigen Spiel, wird die Array 2x gebraucht, einmal für dich und einmal für den Gegner.
Die Array kann natürlich noch um weiter Zustände des Feldes erweitert werden, da diese ein Record enthält.
In der DrawGrid, kannst anstelle der Rechtecke auch Bitmaps reinkopieren.
Man beachte die Array Feld, die zeigt den Status der Felder.
Im richtigen Spiel, wird die Array 2x gebraucht, einmal für dich und einmal für den Gegner.
Die Array kann natürlich noch um weiter Zustände des Feldes erweitert werden, da diese ein Record enthält.
In der DrawGrid, kannst anstelle der Rechtecke auch Bitmaps reinkopieren.
- Dateianhänge
-
Schiffversenken_2.zip
- (125.13 KiB) 66-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 30
- Registriert: So 30. Okt 2016, 21:13
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Veränderung des Codes während der Laufzeit
Danke für die Datei, aber ich glaube dir hilft mir grad nicht weiter.
Bezüglich der Koordinaten habe ich Folgendes geschrieben:
procedure TForm1.B_gegnerClick(Sender: TObject);
var
zufall_x,zufall_y: INTEGER;
begin
zufall_y:=random(5)+5;
zufall_x:=random(10);
if Spielfeld[zufall_y div max.x,zufall_x mod max.x].NumGlyphs=1 then close;
Das close ist natürlich nur als Test, aber auch wenn ich showmessage oder Ähnliches eingebe, dann kriege ich immer die Nachricht, dass immer ein Feld mit einem Bild getroffen wurde, obwohl das nicht der Fall ist.
Bezüglich der Koordinaten habe ich Folgendes geschrieben:
procedure TForm1.B_gegnerClick(Sender: TObject);
var
zufall_x,zufall_y: INTEGER;
begin
zufall_y:=random(5)+5;
zufall_x:=random(10);
if Spielfeld[zufall_y div max.x,zufall_x mod max.x].NumGlyphs=1 then close;
Das close ist natürlich nur als Test, aber auch wenn ich showmessage oder Ähnliches eingebe, dann kriege ich immer die Nachricht, dass immer ein Feld mit einem Bild getroffen wurde, obwohl das nicht der Fall ist.
-
- Beiträge: 6916
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Veränderung des Codes während der Laufzeit
Wieso machst das nicht so ?
Oder fängt deine Array nicht bei x0,y0 an ?
Code: Alles auswählen
procedure TForm1.B_gegnerClick(Sender: TObject);
var
zufall_x,zufall_y: INTEGER;
begin
zufall_y:=random(10);
zufall_x:=random(10);
if Spielfeld[zufall_x ,zufall_y].NumGlyphs = 1 then close;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6916
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Veränderung des Codes während der Laufzeit
So sieht das in etwa aus mit der Zufalls-Erzeugung.
Fehlt nur noch das abknallen der Schiffe.
Fehlt nur noch das abknallen der Schiffe.
- Dateianhänge
-
Schiffversenken_2.zip
- (125.8 KiB) 60-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot