Develop and Download Open Source Software

Browse Subversion Repository

Diff of /Unit1.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2 by yamat0jp, Fri Jul 10 10:00:49 2015 UTC revision 4 by yamat0jp, Fri Jul 10 23:55:37 2015 UTC
# Line 66  type Line 66  type
66    
67    TDirector = (Under, Left, Right);    TDirector = (Under, Left, Right);
68    
69    TOjamaEvent = procedure(Sender: TObject; Count: integer) of object;    TOjamaEvent = procedure(Sender: TObject; Count: integer; const Text: string)
70        of object;
71    
72    TGameParam = record    TGameParam = record
73      Rensa: integer;      Rensa: integer;
# Line 83  type Line 84  type
84      FOnCreateOjama: TOjamaEvent;      FOnCreateOjama: TOjamaEvent;
85      BackGround: Boolean;      BackGround: Boolean;
86      FOnScoreEvent: TScoreEvent;      FOnScoreEvent: TScoreEvent;
87        FOnTextMessage: TNotifyEvent;
88      function Check(aItem: TItem): Boolean;      function Check(aItem: TItem): Boolean;
89    public    public
90      Temp: TItem;      Temp: TItem;
# Line 95  type Line 97  type
97      OjamaColor: TColor;      OjamaColor: TColor;
98      EffectCount: integer;      EffectCount: integer;
99      GameParam: TGameParam;      GameParam: TGameParam;
100        TextColor: TColor;
101        Name: string;
102      constructor Create;      constructor Create;
103      destructor Destroy; override;      destructor Destroy; override;
104      procedure Start(const Resume: Boolean = false);      procedure Start(const Resume: Boolean = false);
# Line 134  type Line 138  type
138      { Private 宣言 }      { Private 宣言 }
139      Buffer: TBitmap;      Buffer: TBitmap;
140      TextMessage: string;      TextMessage: string;
141        Limit: TTime;
142    public    public
143      { Public 宣言 }      { Public 宣言 }
144      Player1, Player2: TPlayer;      Player1, Player2: TPlayer;
145      Rensa: TThread;      Rensa: TThread;
146      procedure CreateOjama(Sender: TObject; aCount: integer);      procedure CreateOjama(Sender: TObject; aCount: integer; const Text: string);
147      procedure PlayerScore(Sender: TObject; const GameParam: TGameParam;      procedure PlayerScore(Sender: TObject; const GameParam: TGameParam;
148        var Score: integer);        var Score: integer);
149    end;    end;
# Line 329  begin Line 334  begin
334        Player1.State := Stop;        Player1.State := Stop;
335      end;      end;
336      Player1.Execute;      Player1.Execute;
337      Paint;      FormPaint(Player1);
338      Done := false;      Done := false;
339    end    end
340    else if Player2.State <> Stop then    else if Player2.State <> Stop then
# Line 344  begin Line 349  begin
349    Close;    Close;
350  end;  end;
351    
352  procedure TForm1.CreateOjama(Sender: TObject; aCount: integer);  procedure TForm1.CreateOjama(Sender: TObject; aCount: integer;
353      const Text: string);
354  begin  begin
355    if Sender = Player1 then    if Sender = Player1 then
356      Player2.Make(aCount)      if aCount = 0 then
357          TextMessage := 'Player2 WIN !!'
358        else
359          Player2.Make(aCount)
360      else if aCount = 0 then
361        TextMessage := 'Player1 WIN !!'
362    else    else
363      Player1.Make(aCount);      Player1.Make(aCount);
364      if aCount > 0 then
365        TextMessage := Text;
366      Buffer.Canvas.Font.Color := (Sender as TPlayer).TextColor;
367      Limit := Time + 1 / (24 * 60 * 60);
368      Paint;
369  end;  end;
370    
371  procedure TForm1.FormCreate(Sender: TObject);  procedure TForm1.FormCreate(Sender: TObject);
# Line 362  begin Line 378  begin
378    Player2.OnCreateOjama := CreateOjama;    Player2.OnCreateOjama := CreateOjama;
379    Player1.OnScore := PlayerScore;    Player1.OnScore := PlayerScore;
380    Player2.OnScore := PlayerScore;    Player2.OnScore := PlayerScore;
381      Player1.Name := 'Player1';
382      Player2.Name := 'Player2';
383    Rensa := TRensa.Create;    Rensa := TRensa.Create;
384    Player1.Com := true; { ComPlay }    Player1.Com := true; { ComPlay }
385    Player11.Checked := Player1.Com;    Player11.Checked := Player1.Com;
# Line 394  begin Line 412  begin
412      Player2.Start(true);      Player2.Start(true);
413      Buffer.Canvas.Brush.Color := Color;      Buffer.Canvas.Brush.Color := Color;
414      Buffer.Canvas.FillRect(Rect(0, 0, Buffer.Width, Buffer.Height));      Buffer.Canvas.FillRect(Rect(0, 0, Buffer.Width, Buffer.Height));
415        Limit := 0;
416      Exit;      Exit;
417    end;    end;
418    if (Player1.State = Shoot) or (Player1.State = Ojama) then    if (Player1.Com = false) and (Player1.State = Down) then
419      Exit;    begin
420    case Key of      case Key of
421      VK_DOWN:        VK_DOWN:
       if Player1.State = Down then  
422          Player1.State := Shoot;          Player1.State := Shoot;
423      VK_UP:        VK_UP:
424        Player1.Turn;          Player1.Turn;
425      VK_LEFT:        VK_LEFT:
426        Player1.Move(TDirector.Left);          Player1.Move(TDirector.Left);
427      VK_RIGHT:        VK_RIGHT:
428        Player1.Move(Right);          Player1.Move(Right);
429        end;
430        Paint;
431    end;    end;
   Paint;  
432  end;  end;
433    
434  procedure TForm1.FormPaint(Sender: TObject);  procedure TForm1.FormPaint(Sender: TObject);
435  var  var
436    i: integer;    i: integer;
437    s: TGround;    s: TGround;
438      t: TPlayer;
439    
440    procedure GroundDraw;    procedure GroundDraw;
441    var    var
# Line 495  begin Line 515  begin
515    Buffer.Canvas.FillRect(Rect(Player1.Ground.Left + Wid * Size, 0,    Buffer.Canvas.FillRect(Rect(Player1.Ground.Left + Wid * Size, 0,
516      Player2.Ground.Left, Hei * Size));      Player2.Ground.Left, Hei * Size));
517    Buffer.Canvas.Brush.Color := clWhite;    Buffer.Canvas.Brush.Color := clWhite;
518    if Sender = nil then    if Sender is TPlayer then
519    begin    begin
520      s := Player2.Ground;      t:=Sender as TPlayer;
521        s := t.Ground;
522      Main;      Main;
523      ItemDraw(Player2.Item);      ItemDraw(t.Item);
524      OjamaDraw(Player2);      OjamaDraw(t);
525    end    end
526    else    else
527    begin    begin
# Line 508  begin Line 529  begin
529      Main;      Main;
530      ItemDraw(Player1.Item);      ItemDraw(Player1.Item);
531      OjamaDraw(Player1);      OjamaDraw(Player1);
532        Buffer.Canvas.Brush.Color := clWhite;
533        s := Player2.Ground;
534        Main;
535        ItemDraw(Player2.Item);
536        OjamaDraw(Player2);
537    end;    end;
538    if (Player1.State = Stop) and (Player2.State = Stop) then    if Limit > 0 then
539    begin    begin
540      i := (Buffer.Width - Buffer.Canvas.TextWidth(TextMessage)) div 2;      i := (Buffer.Width - Buffer.Canvas.TextWidth(TextMessage)) div 2;
541      Buffer.Canvas.Brush.Color := Color;      Buffer.Canvas.Brush.Color := Color;
542      Buffer.Canvas.TextOut(i, 0, TextMessage);      Buffer.Canvas.TextOut(i, 0, TextMessage);
543        if Time > Limit then
544        begin
545          Limit := 0;
546          Paint;
547        end;
548    end;    end;
549    Canvas.Draw(100, 50, Buffer);    Canvas.Draw(100, 50, Buffer);
550  end;  end;
# Line 529  procedure TForm1.PlayerScore(Sender: TOb Line 560  procedure TForm1.PlayerScore(Sender: TOb
560    var Score: integer);    var Score: integer);
561  begin  begin
562    with GameParam do    with GameParam do
563      Score:=Rensa*Rensa*10+Group*Group*15;      Score := Rensa * Rensa * 10 + Group * Group * 15;
564  end;  end;
565    
566  procedure TForm1.Start1Click(Sender: TObject);  procedure TForm1.Start1Click(Sender: TObject);
# Line 871  begin Line 902  begin
902          begin          begin
903            Sleep(3);            Sleep(3);
904            Application.ProcessMessages;            Application.ProcessMessages;
905              if State <> Down then
906                break;
907          end;          end;
908        end;        end;
909      Shoot:      Shoot:
# Line 890  begin Line 923  begin
923        begin        begin
924          State := Ojama;          State := Ojama;
925          if Assigned(FOnCreateOjama) = true then          if Assigned(FOnCreateOjama) = true then
926            FOnCreateOjama(Self, GameParam.Rensa - 1);            if Zenkesi = true then
927          if (Zenkesi = true) and (Assigned(FOnCreateOjama) = true) then              FOnCreateOjama(Self, 2 * Wid, '**全消し**')
928            FOnCreateOjama(Self, 2 * Wid);            else if GameParam.Rensa > 1 then
929                FOnCreateOjama(Self, GameParam.Rensa - 1,
930                  Name + Format(' %d 連鎖', [GameParam.Rensa]));
931        end;        end;
932      Effect:      Effect:
933        begin        begin
# Line 959  begin Line 994  begin
994    Item.Assign(Temp);    Item.Assign(Temp);
995    Item.Visible := true;    Item.Visible := true;
996    if Check(Item) = false then    if Check(Item) = false then
997      State := TState.Stop    begin
998        State := TState.Stop;
999        if Assigned(FOnCreateOjama) = true then
1000          FOnCreateOjama(Self, 0, 'Game Over');
1001      end
1002    else    else
1003    begin    begin
1004      if Com = true then      if Com = true then

Legend:
Removed from v.2  
changed lines
  Added in v.4

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26