AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Jump"n"run

Ein Thema von hans101 · begonnen am 30. Jan 2006 · letzter Beitrag vom 10. Jan 2014
Antwort Antwort
Seite 1 von 3  1 23   
hans101

Registriert seit: 30. Jan 2006
19 Beiträge
 
Delphi 2005 Personal
 
#1

Jump"n"run

  Alt 30. Jan 2006, 17:45
hallo,
Ich möchte ein Jumpnrungame im stil von super mario programmieren.Mein Problem ist, dass ich nicht weiß, wie er diagonal( nach oben und zur seite gleichzeitig) springen kann und wie man die Scrollbar programmieren muss, dass die Figur immer in der mitte der Form ist.
Ich habe 3 timer, 1 shape, und 2 textboxen(zur überprüfung der Variablen).

Hier mein Quellcode bis jetzt:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Shape1: TShape;
    Shape2: TShape;
    Timer1: TTimer;
    Edit1: TEdit;
    links: TTimer;
    Edit2: TEdit;
    rechts: TTimer;
    procedure linksTimer(Sender: TObject);
    procedure rechtsTimer(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  y : integer; // für den Sprung
  t : integer = 0; // für den Sprung
  d : integer = 7; // für den Sprung
  k : integer = 3; // Für den Turbo
 zr : integer = 0; // Zeit für Timer: Rechts
 zl : integer = 0; //Zeit für Timer: Links


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  t := 0;
  if timer1.Enabled = false then timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var yy : integer;
    v : integer;
begin
  t := t + 1;
  v := 50 div d;
  yy := abs(round(100*sin(t/v)));
  edit1.Text := inttostr(yy);
  shape1.Top := y - yy;
  if round(100*sin(t/v)) <= 0 then timer1.enabled := false;
  If g = 1 then shape1.Left := shape1.Left + 5;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  y := shape1.top;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

begin
  if key = #119 then begin //Sprung
    t := 0;
    if timer1.Enabled = false then timer1.Enabled := true;
    end;
   if key = #100 then begin //Laufen nach rechts
         zr:= 0;
    if rechts.Enabled = false then rechts.Enabled := true;
      end;
   if key = #97 then begin //Laufen nach links
   zl:= 0;
   if links.Enabled = false then links.Enabled := true;
   end;
end;





Danke im Voraus!!!
  Mit Zitat antworten Zitat
30. Jan 2006, 17:59
Dieses Thema wurde von "Christian Seehase" von "Datenbanken" nach "Sonstige Fragen zu Delphi" verschoben.
Kein Datenbank-Problem
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Jump"n"run

  Alt 30. Jan 2006, 21:18
da würde ich dir jetzt fast dazu raten, alle x millisekunden den tastaturstatus mit Hier im Forum suchengetasynckeystate abzufragen und dann eben, wenn mehrere tasten gedrückt sind, auch die entsprechenden aktionen auslösen.

Natürlich kannst du auch im OnKeyDown Variablen setzen und im OnkeyUP wieder entsetzen

Delphi-Quellcode:
//global:
type TKeys = (left,right,up,down); //das hier ist ein aufzählungstyp

var keysdown = set of TKeys; //das hier ist eine Menge

procedure TForm1.OnkeyDown(Sender: TObject, var Key: Integer);
begin
case Key of
  vk_left: keysdown = keysdown + left; // hier fügst du der menge eine wert hinzu
  //etc.
end;
// dasselbe für onkeyup, nur dann mit -
Das ganze musst du dann natürlich im Timer-Event auswerten.

EDIT: ach ja übrigens, ich hab jetzt glaub ich schon 6 threads von dir gesehen, und in zwei geantwortet... meinst du nicht, das reicht jetzt dann mal wieder ? im übrigen kann ich dir empfehlen, da du in Delphi neu scheinst, die mal die Tutorial auf www.dsdt.info durchzulesen und eventuell, wenn es dir ernster ist, dir ein Buch zu kaufen oder erstmal in einer Bücherei auszuleihen (solls ja auch geben).
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
hans101

Registriert seit: 30. Jan 2006
19 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Jump"n"run

  Alt 30. Jan 2006, 21:27
Danke erstmal für deine Hilfe! (also 6 Threads warns nich, sondern 2) - Ich habe mit Delphi erst neu angefangen und deswegen kenne ich mich noch nicht so gut aus - Die Community ist aber super hier!!! Ich werde mir das Tutorial jetzt mal anschauen.Ich hoffe,dass das dann auch mit dem JumpnRun klappt.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Jump"n"run

  Alt 31. Jan 2006, 15:14
jo, sorry, hab dich wohl mit Erdnusslocke verwechselt...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
hans101

Registriert seit: 30. Jan 2006
19 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Jump"n"run

  Alt 31. Jan 2006, 16:09
np, aber ich dachte, dass es für Fragen das Forum gibt . Ich wüsste nämlich noch gerne, ob man einem TImage während der Laufzeit des Programms z.B. per Buttonklick ein anderes Picture verpassen kann (Das habe ich leider nicht in den Tutorials gefunden), damit wäre es dann möglich eine kleine einfache Animation zu erstellen. Falls da jemand etwas weis, bitte melden (ohne OpenGL oder DirectX zu benutzen)
  Mit Zitat antworten Zitat
hans101

Registriert seit: 30. Jan 2006
19 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Jump"n"run

  Alt 31. Jan 2006, 21:07
könnte mir vllt jemand mit diesem Problem helfen oder Tipps geben etc. plz
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: Jump"n"run

  Alt 31. Jan 2006, 21:27
Du kannst andere TBitmaps per TImage.Canvas.Draw (= TImage.Picture.Bitmap.Canvas.Draw) auf das OffScreenBitmap des Images zeichnen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
hans101

Registriert seit: 30. Jan 2006
19 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Jump"n"run

  Alt 31. Jan 2006, 22:10
Aha, vielen Dank Soweit so gut, nur jetzt kommt ein Problem auf - Ich weis jetzt nicht, wie ich ein anderes Bild da rein zeichnen soll, den Befehl dazu habe ich ja schon mal . Aber muss man jetzt in der ...Canvas.Draw() <--Klammer den Pfad des Bildes angeben, das er laden soll ?? Vllt. könnte mir ja jemand freundlicherweise ein kleines Beispiel geben.
  Mit Zitat antworten Zitat
hans101

Registriert seit: 30. Jan 2006
19 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Jump"n"run

  Alt 1. Feb 2006, 16:12
Also ich verstehe einfach nicht, wie das mit Onkeyup und Onkeydown gehen soll, denn wenn ich z.B. das hier schreibe :
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, System.ComponentModel, Borland.Vcl.StdCtrls;

type
  TForm2 = class(TForm)
    Edit2: TEdit;
      procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.nfm}
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  // Schießen
  if key =VK_SPACE then form2.Width := 300;
end;
end.
tut sich einfach gar nichts.
Das war ja jetzt für Keydown,aber für OnkeyUP,Onkeydown und Keydown find ich einfach nix
ALso brauch man da noch eine Prozedur oder so.Vllt könnte Jemand einfach nen kleinen Quellcode hier rein posten.
Ich weis, das es bestimmt einer weis, also wäre es gut,wenn mir jemand mit dem eigentlich kleinen Problem weiter helfen würde.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf