Bitmap in Stringrig anzeigen (Zeile)

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Jochim
Beiträge: 32
Registriert: Mi 20. Mär 2013, 13:44
OS, Lazarus, FPC: Win7 HP x64
CPU-Target: Bit

Bitmap in Stringrig anzeigen (Zeile)

Beitrag von Jochim »

Hallo
ich möchte mein Spiel Schiffeversenke optisch optimieren und jetzt Bitmaps statt buchstaben verwenden. Doch ich habe bisher nur Prozeduren gefunden, wo ein bitmap in eine einzelne Zelle geladen wird. Gibt es auch die möglichkeit es Zellenübergreifend zu machen?

Mg Jochim

Das ist meine bisherige Procedur zum Zeichnen:

Code: Alles auswählen

procedure TForm1.schiffsetzen;
var c,i:integer;
begin
  schiff[index].x:=sg1.col//x- Koordinate
  schiff[index].y:=sg1.row; //y- Koordinate
  darfsetzen(schiff[index].x, schiff[index].y, schiff[index].leng, schiff[index].ausrichtung); //procedur zum überprüfen ob setzen möglich ist
  if dasetz=false then begin
    ShowMessage('Das Schiff liegt auserhalb des Spielfeldes oder es fährt bereits ein Schiff auf diesen Koordinaten.!'); //fals nicht möglich
    case index of
      1: begin s21.Enabled:=True; s22.Enabled:=True end;
      2: begin s31.Enabled:=True; s32.Enabled:=True end;
      3: begin s41.Enabled:=True; s42.Enabled:=True end;
      4: begin s51.Enabled:=True; s52.Enabled:=True end;
    end;
  end else begin
  for i:=1 to 4 do begin //alle schiffe setzen
  //komplette schiff länge
    if (schiff[i].x<>0) and (schiff[i].y<>0) then begin
      for c:=0 to schiff[i].leng-1 do begin
        //ausrichtung prüfen
        if schiff[i].ausrichtung=True then begin //für beide Ausrichtungen
          sg1.cells[schiff[i].x,schiff[i].y+c]:=bt[i]; //mit Schiffsnummer kennzeichnen
          end;
        if schiff[i].ausrichtung=False then begin
          sg1.cells[schiff[i].x+c,schiff[i].y]:=bt[i];
        end;
      end;
    end;
    end;
  end;

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Bitmap in Stringrig anzeigen (Zeile)

Beitrag von theo »

Theoretisch wäre ein TDrawGrid geeigneter.

Jochim
Beiträge: 32
Registriert: Mi 20. Mär 2013, 13:44
OS, Lazarus, FPC: Win7 HP x64
CPU-Target: Bit

Re: Bitmap in Stringrig anzeigen (Zeile)

Beitrag von Jochim »

Gibt es denn dort die Möglichkeit?

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Bitmap in Stringrig anzeigen (Zeile)

Beitrag von theo »

Jochim hat geschrieben:Gibt es denn dort die Möglichkeit?

Welche? Verstehe deine Frage nicht.
Grundsätzlich ist einen Grid Komponente für ein Spiel nicht unbedingt geeignet.
Zeichne die Positionen doch einfach selber, ohne Komponente, im OnPaint Ereignis.
Hatte hier mal die Grundidee gepostet: viewtopic.php?p=53064#p53064

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2639
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Bitmap in Stringrig anzeigen (Zeile)

Beitrag von m.fuchs »

theo hat geschrieben:Grundsätzlich ist einen Grid Komponente für ein Spiel nicht unbedingt geeignet.


Das höre/lese ich häufiger und verstehe es ehrlich gesagt nicht so ganz. Gerade für "Brettspiele" wie Schach, Schiffe versenken, etc. ist doch ein DrawGrid eine schöne Sache. Man legt die Felder in einem 2D-Array ab, lässt OnDrawCell abhängig vom Feldinhalt des Arrays das Gridfeld bemalen und hat auch gleich alle Events für Mausklicks auf ein bestimmtes Feld.
Was spricht denn nun dagegen?

mfg
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Bitmap in Stringrig anzeigen (Zeile)

Beitrag von theo »

Man kann schon. Man kann auch mit einem Ackerschlepper zum Brot kaufen fahren. Kein Problem. ;-)

Nö, im Ernst, wenn du ein Spiel basteln willst, welches dann eben doch nicht nur in Grid-Zellen abläuft, musst du es anders machen.
So ein Grid hat auch viele Eigenschaften, die ein Spiel meistens nicht braucht.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Bitmap in Stringrig anzeigen (Zeile)

Beitrag von corpsman »

Wenns um 2D-Spiele geht könntet ihr auch meinen Greenfoot Port versuchen. Dazu gibts auch ne Online Dokumentation vom Original. Habe si schon in wenigen Minuten ein Spiel zusammengeklickt *g*.
--
Just try it

creed steiger
Beiträge: 957
Registriert: Mo 11. Sep 2006, 22:56

Re: Bitmap in Stringrig anzeigen (Zeile)

Beitrag von creed steiger »

corpsman hat geschrieben:Wenns um 2D-Spiele geht könntet ihr auch meinen Greenfoot Port versuchen. Dazu gibts auch ne Online Dokumentation vom Original. Habe si schon in wenigen Minuten ein Spiel zusammengeklickt *g*.

leicht OT:;
schicke Idee. :D
Wenn ich endlich wieder mal Zeit habe werd ich mir das mal sicher mal anschauen.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Bitmap in Stringrig anzeigen (Zeile)

Beitrag von pluto »

Wenn man am Anfang nicht so viel Erfahrung hat, ist der Weg natürlich erst mal egal. Da kann man auch was nehmen, was man gerade hat. Z.B. ein StringGrid eben. Aber wenn man dann etwas mehr will z.b. kleine Grafiken Anzeigen, sollte man schon eine andere Struktur nehmen.

Z.B. ein einfachen 2D Array und eine PaintBox. Das erfordert aber einiges an Hintergrundwissen. Es Lohnt sich natürlich, aber es dauert eben seine Zeit. Mal eben schnell ein Spiel so zu erstellen, geht für einen "Anfänger" nicht. Erfahrende können das schon.

Daher mein Vorschlag:
Schau dir folgende Sachen an:
1. 2D Array
Was ist das? Was kann man damit machen?

2. TBitMap, TPicture
Mit TBitmap kann man nur Bitmaps laden und mit TPicture auch jpegs und png's

3. TPaintBox
Das ist eine Komponente, die im Prinzip nur eine Canvas zuverfügung stellt. Daher solltest du dir das TCanvas genauer ansehen.

Ich schätzte du brauchst eine oder zwei Wochen.
(Bitte nicht Falsch verstehen, ist keine Beleidigung, nur damit du weißt was auf dich zu kommt, wenn du diesen Weg gehst)

Aber es lohnt sich. Du lernst eine Menge dabei. Ich kann dir nur ein Beispiel anbieten, wie ich ein Snake erstellt habe. Das ist aber schon recht komplex geschrieben.
MFG
Michael Springwald

Jochim
Beiträge: 32
Registriert: Mi 20. Mär 2013, 13:44
OS, Lazarus, FPC: Win7 HP x64
CPU-Target: Bit

Re: Bitmap in Stringrig anzeigen (Zeile)

Beitrag von Jochim »

also erstmal danke für die Antworten.

2D Array
Was ist das? Was kann man damit machen?

2. TBitMap, TPicture
Mit TBitmap kann man nur Bitmaps laden und mit TPicture auch jpegs und png's

3. TPaintBox
Das ist eine Komponente, die im Prinzip nur eine Canvas zuverfügung stellt. Daher solltest du dir das TCanvas genauer ansehen.


Also ich habe bereits mit all diesen Objekten schon in Spielen wie Snake etc gearbeitet, doch da ich noch Schüler bin, muss ich das machen, was der Lehrer sagt und das ist nun mal Schiffe versenken mit einem Stringgrid zeichnen. Eigentlich war auch die Aufgabe lediglich Buchstaben zu verwenden doch da ich als einziger Fertig bin habe ich mir eben gedacht die Wartezeit zu nutzen.

Könnt ihr noch ihrgendwelche Tutorials empfehlen um das Wissen zu erweitern? z.b 3D-Spiele/Objekte?

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Bitmap in Stringrig anzeigen (Zeile)

Beitrag von pluto »

OK! Dann hat der Lehrer Schuld.

Aber du könntest ja eine eigene Version erstellen und dann dem Lehrer Zeigen? Vielleicht gibt es Zusatz Punkte oder sowas?
MFG
Michael Springwald

Jochim
Beiträge: 32
Registriert: Mi 20. Mär 2013, 13:44
OS, Lazarus, FPC: Win7 HP x64
CPU-Target: Bit

Re: Bitmap in Stringrig anzeigen (Zeile)

Beitrag von Jochim »

Wir haben jetzt aber Projekt Arbeit und sollen ein eigenes neues Spiel zu programmieren. Würde gerne ein 3D-spiel Programmieren doch finde kein gutes tutorial.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Bitmap in Stringrig anzeigen (Zeile)

Beitrag von pluto »

Schau mal auf www.delphigl.com

Das ist die Seite für 3D Sachen. Jedoch mit OpenGL und etwas Grundwissen solltest du schon haben. Mit Etwas meine ich eigentlich VIEL. SEHR VIEL.
MFG
Michael Springwald

Antworten