![]() |
Re: Spieleideen für ein lustiges Spiel für die Schule ...
Ach du bist das. ;)
Die TProgressBar befindet sich auf dem Reiter "Win32". Einen Fortschrittsbalken kannst du auf verschiedene Art und Weise lösen. Eine anschauliche wäre beispielsweise diese hier:
Delphi-Quellcode:
Wenn du mit dem Canvas umgehen kannst, dann kannst du auch auf diesem deine eigene (schönere) zeichnen.
var
Form1: TForm1; Counter_Sec: Integer = 0; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin ProgressBar1.Max := 120; end; procedure TForm1.Timer1Timer(Sender: TObject); begin inc(Counter_Sec); ProgressBar1.Position := Counter_Sec; if Counter_Sec = 120 then begin // The End end; end; |
Re: Spieleideen für ein lustiges Spiel für die Schule ...
ah danke schön nein ich kann nicht mit canvas umgehen aber mit progressbar geht es ^^
|
Re: Spieleideen für ein lustiges Spiel für die Schule ...
Delphi-Quellcode:
Brauche wieder Hilfe ich weiß nicht wie ich zählen soll also die Icons/images die angeklickt wurden und wie ich das nun ausgebe?!
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, ComCtrls; type TForm1 = class(TForm) Timer1: TTimer; Image1: TImage; ImLaura: TImage; ImFee1: TImage; ProgressBar1: TProgressBar; procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; vx, vy: integer; Counter_Sec: Integer = 0; StopTimer: boolean = false; implementation {$R *.DFM} procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_LEFT: begin ImLaura.Left := ImLaura.Left - 5; Key := 0; end; VK_RIGHT: begin ImLaura.Left := ImLaura.Left + 5; Key := 0; end; VK_UP: begin ImLaura.Top := ImLaura.Top - 5; Key := 0; end; VK_DOWN: begin ImLaura.Top := ImLaura.Top + 5; Key := 0; end; end; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if not StopTimer then begin ImFee1.visible:=true; ImFee1.Left := ImFee1.Left + vx; ImFee1.Top := ImFee1.Top + vy; inc(Counter_Sec); ProgressBar1.Position := Counter_Sec; ProgressBar1.Perform($0409, 0, clTeal); if (ImFee1.Left > ClientWidth - ImFee1.Width - 1) or (ImFee1.Left < 1) then vx := vx * -1; if (ImFee1.Top > ClientHeight - ImFee1.Height - 1) or (ImFee1.Top < 1) then vy := vy * -1; if Counter_Sec = 10 then begin ImFee1.visible:=false; ImLaura.visible:=false; Timer1.Interval:=0; Form1.Caption:=('Spiel ist vorbei'); end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin Randomize; vx := -10 + Random(50); vy := -10 + Random(50); ProgressBar1.Max := 10; end; procedure TForm1.FormClick(Sender: TObject); begin StopTimer := true; ImFee1.Visible := false; end; end. |
Re: Spieleideen für ein lustiges Spiel für die Schule ...
Irgendwie komm ich nicht hinter das Spieleprinzip. Wie ich das sehe, hast du nun ein Image, das sich da umherbewegt und sobald du irgendwohin auf das Formular klickst, verschwindet es. Ich würde eher ein Zielobjekt erstellen, bzw mehrere (evtl. in einer eigenen Klasse, falls du das kannst), die sich unabhängig voneinander bewegen und alle das selbe OnClick-Ereignis besitzen. Da kannst du dann die Treffer zählen und auch die Images ausblenden (freigeben).
|
Re: Spieleideen für ein lustiges Spiel für die Schule ...
Also
a) ich wollte zuerst mit einer Figur die Feen einsammeln deswegen auch das Hotkey verfahren b) dann wurde mir das zu kompliziert und ich hab das ganze mit der Maus angefangen... Nu redest du für mich von böhmischen Dörfern. Ich wollte nach und nach dann die anderen Feen einfügen ... wäre zwar sehr lang geworden aber ich weiß h alt es nit anders. Ich weiß auch nit wie ich das hinkriege das diese Icons keinen weißen Hintergrund haben. Ich hab von so vielem keinen Peil .. und dabei brauch ich die Note sehr sehr dringend.!!!! Sonst hätte ich längst aufgegeben. Ich suche stundenlang in Google rum wie man in Delphi zählt und krieg irgendwie nix gebacken. Eigentlich soll man feen fangen und wenn man ne bestimmte anzahl an feen hat kann man das nächste level machen. *seufz* |
Re: Spieleideen für ein lustiges Spiel für die Schule ...
Hi Ayslynn,
ich verstehe auch noch nicht so ganz wie das Spielprinzip sein soll, aber versuche dir mit dem was du zählen willst zu helfen. Ich habe mal in c++ einen Shooter gemacht in dem man einen Roboter abschießen musste, und wenn man diesen 10 mal getroffen hatte lief er schneller. (ein level weiter). Du könntest es so machen mit dem zählen, das du eine Public Variable vom Typ Integer nimmst z.B highscore : Integer; Und jedes mal wenn du so eine Fee fängst, dann rufst du eine funktion auf die deine highscore variable beispielsweise erhöht um 1 oder 10. (Habe bei mir noch eine funktion drin gehabt die beim daneben schießen den highscore wieder verkleinert hat, machte es was schwieriger.) So, hoffe habe verstanden was du wolltest und dir hilft das weiter. greetz Lun P.S: viel Erfolg |
Re: Spieleideen für ein lustiges Spiel für die Schule ...
Das bringt mich immernoch nicht weiter was ist ne Puplic Variable .. *total verwirrt ist* Leute ich hab ne 4 und ne 5 in zwei Arbeiten über Delphi geschrieben ... ich bin kein Genie *verzweifelt ist* :wall: :wiejetzt: :cry:
|
Re: Spieleideen für ein lustiges Spiel für die Schule ...
Auch wenn du 20 bist, würde ich dir das Buch "Delphi für Kids" ans herz legen. Da werden solche Sachen bestens erklärt. Auch wie man Klassen vereinbart etc. Wenn du dich dann noch ein Bisschen über TCanvas schlau machst (delphi-hilfe), solltest du sicher in der lage sein so ein spiel zu programmieren.
|
Re: Spieleideen für ein lustiges Spiel für die Schule ...
Also setzte deine highscore:Integer Variable hier hin.
Delphi-Quellcode:
dahin die funktion
var
Form1: TForm1; vx, vy: integer; Counter_Sec: Integer = 0; StopTimer: boolean = false; highscore : Integer = 0;
Delphi-Quellcode:
die definition
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormClick(Sender: TObject); procedure sethighscore(Sender : TObject); private { Private-Deklarationen }
Delphi-Quellcode:
Aufruf:implementation procedure Tform1.setHighscore(Sender : Tobject) begin highscore := highscore + 10; end; ich denke mal hier fängst du die Fee
Delphi-Quellcode:
So in etwa ist jetzt aus dem steh greif da ich nicht so viel zeit habe, hoffe das es so deutlicher ist.
procedure TForm1.FormClick(Sender: TObject);
begin StopTimer := true; ImFee1.Visible := false; setHighscore(); end; greetz Lun P.S: Für die Ausgabe, ein Label auf das form und dann Label1.Text := IntToStr(highscore); Aber würde mir an deiner stelle auch mal ein paar Tutorials angucken. |
Re: Spieleideen für ein lustiges Spiel für die Schule ...
Danke *seufz* werd ich machen ^^
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:01 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