Avatar billede jakob/cosmo Nybegynder
09. februar 2002 - 15:54 Der er 4 kommentarer og
1 løsning

Endnu engang HJÆLP!!!!!!!!!!!!!!!!!!!plzzz

Hej Allesammen HJÆLP!!

Jeg er ved at lave en skabelon/Skellet til et kortspil.
men jeg kan ikke helt finde ud af det :-(. Jeg har lavet det færdigt men det kører ikke som det skal!!
Jeg har en form med en TMainMenu på med 2 knapper en til at starte et nyt spil med(navn: afslut1  og en til at afslutte spille spillet med(navn: afslut2). Når man trykke på en bunke jeg har lavet i procedure NewGame med musen skal kører en procedure = Mousedown. MEN DEN VIRKER IKKE. det
DER SKER ALSÅ IKKE NOGET NÅR JEG TRYKKE PÅ p1.
hele ser sådan ud:

PROCEDURE:

NEWGAME(på tryk fra afslut1 på TMenu):

procedure TFrmBord.Afslut1Click(Sender: TObject);
begin
  NewGame;
end;



OG DEN ANDEN NEWGAME:

procedure NewGame;
begin
    p1 := TPile.Create(20, 20, 0, 0);
    CTable.addPile(p1);
    p2 := TPile.Create(100, 50, 0, 20);
    CTable.addPile(p2);
    p1.make52;
end;



MOUSEDOWN:

procedure TFrmBord.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var p: TPile; c: TCard;
begin
  CTable.GetPileCardAt(x,y,p,c);
  if p<>nil then gui.MouseDown(p,c);
end;



OG DEN ANDEN MOUSEDOWN:

procedure MouseDown(Pile: TPile; Card: TCard);
var c: TCard;
begin
  if Pile=p1 then
  begin
      c:=p1.removeCard(Card);
      p2.insertAtTop(c);
  end;
end;



OG HELE BALADEN:

unit gui;

interface

uses
  Windows, Messages, Classes, Graphics, Controls, Forms,
  StdCtrls, cardclasses, cardFkt, Menus;

  procedure NewGame;
  procedure ProgInit;
  procedure MouseDown(Pile: TPile; Card: TCard);
  procedure MouseUp(Pile: TPile; Card: TCard);

type
  TFrmBord = class(TForm)
    MainMenu1: TMainMenu;
    Nytspil1: TMenuItem;
    Afslut1: TMenuItem;
    Afslut2: TMenuItem;
    procedure FormPaint(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Afslut1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Afslut2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure EraseRect(HFillrect,VFillRect: TRect);
    procedure DrawEmptyPile(aType: integer;x1,y1: integer);
    procedure CardDrawInverted(x,y,CardNr: integer);
    procedure CardDraw(x,y,CardNr: integer);
    procedure BackDraw(x,y,BackNr: integer);
  end;

var
  FrmBord: TFrmBord;

implementation

{$R *.DFM}
uses dialogs,sysutils;

{ her kan du placere globale erklæringer af f.eks. pile }
var p1,p2: TPile;

procedure TFrmBord.EraseRect(HFillrect,VFillRect: TRect);
begin
  Canvas.brush.Color:=Color;
  Canvas.FillRect(HFillRect);
  Canvas.FillRect(VFillRect);
end;

procedure TFrmBord.DrawEmptyPile(aType: integer;x1,y1: integer);
const d=5;
var i: integer;
begin
  case aType of
    1: _BackDraw(Canvas,x1,y1,14);
    2: _BackDraw(Canvas,x1,y1,13);
    else
      Canvas.Pen.Color:=clLime;
      for i:=0 to 1 do
        Canvas.RoundRect(x1+i,y1+i,x1+CardWidth-i,y1+CardHeight-i,d,d);
  end
end;

procedure TFrmBord.CardDrawInverted(x,y,CardNr: integer);
begin
  _CardDrawInverted(FrmBord.Canvas,x,y,CardNr);
end;

procedure TFrmBord.CardDraw(x,y,CardNr: integer);
begin
  _CardDraw(FrmBord.Canvas,x,y,CardNr);
end;

procedure TFrmBord.BackDraw(x,y,BackNr: integer);
begin
  _BackDraw(FrmBord.Canvas,x,y,BackNr);
end;

procedure TFrmBord.FormPaint(Sender: TObject);
begin
  CTable.Refresh;
end;

procedure TFrmBord.Afslut2Click(Sender: TObject);
begin
  close
end;

procedure TFrmBord.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  CTable.Clear;
end;

procedure NewGame;
{ Kaldes ved start af nyt spil;
  skriv evt. initialiseringer ved start af nyt spil;
  HUSK først at kalde free for alle skabte objekter fra
  evt. tidligere spil  }
begin
    p1 := TPile.Create(20, 20, 0, 0);
    CTable.addPile(p1);
    p1.make52;
    p2 := TPile.Create(100, 50, 0, 20);
    CTable.addPile(p2);
end;

procedure ProgInit;
{ Kaldes ved programstart;
  skriv evt. initialiseringer ved programstart i denne procedure }
begin
    ShowMessage('hejhej')
end;

procedure MouseDown(Pile: TPile; Card: TCard);
{ kaldes ved MouseDown i bunken Pile på kortet Card;
  skriv kode der skal udføres ved MouseDown }
var c: TCard;
begin
  if Pile=p1 then
  begin
      c:=p1.removeCard(Card);
      p2.insertAtTop(c);
  end;
end;

procedure MouseUp(Pile: TPile; Card: TCard);
{ kaldes ved MouseUp i bunken Pile på kortet Card;
  skriv kode der skal udføres ved MouseUp }
var c: TCard;
begin
end;

procedure TFrmBord.FormCreate(Sender: TObject);
begin
  ProgInit;
end;

procedure TFrmBord.Afslut1Click(Sender: TObject);
begin
  NewGame;
end;

procedure TFrmBord.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var p: TPile; c: TCard;
begin
  CTable.GetPileCardAt(x,y,p,c);
  if p<>nil then gui.MouseDown(p,c);
end;

procedure TFrmBord.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var p: TPile; c: TCard;
begin
  CTable.GetPileCardAt(x,y,p,c);
  if p<>nil then gui.MouseUp(p,c);
end;


end.


Avatar billede dkn Nybegynder
09. februar 2002 - 18:00 #1
Prøv at sætte det her ind:

procedure TFrmBord.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
showmessage('Jeg blev kørt!!');
end;

hvis den viser beskeden når du clicker på den, er det din kode som er fejl i, og ikke mousedown der ikke virker
Avatar billede jakob/cosmo Nybegynder
10. februar 2002 - 16:55 #2
Aaaaaaa nu ved jeg hvad der er galt!!

Det er fordi at den ikke kender koden: Pile=p1
Og den er lavet i cardclasses.

Men jeg har allerede brugt cardclasses under usses i interface.
????Kan jeg på en eller anden måde også bruge cardclasses under usses i implementation.????????????:-\
Avatar billede jakob/cosmo Nybegynder
10. februar 2002 - 17:23 #3
p.s. dette virkede ikke

procedure TFrmBord.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
showmessage('Jeg blev kørt!!');
end;
Avatar billede jakob/cosmo Nybegynder
10. februar 2002 - 17:25 #4
jeg kan stadig ikke få det til at virke HJÆLPPPPPPPP!!!!!!!!!!!!:-(:-(
Avatar billede jakob/cosmo Nybegynder
11. februar 2002 - 12:23 #5
ÅÅÅÅ så glem det!11
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester