• R/O
  • SSH
  • HTTPS

rensa: Commit


Commit MetaInfo

Revision3 (tree)
Time2015-07-10 23:24:01
Authoryamat0jp

Log Message

テキストメッセージの充実

キー操作の反応性

で改善が図られました

Change Summary

Incremental Difference

--- Unit1.pas (revision 2)
+++ Unit1.pas (revision 3)
@@ -83,7 +83,10 @@
8383 FOnCreateOjama: TOjamaEvent;
8484 BackGround: Boolean;
8585 FOnScoreEvent: TScoreEvent;
86+ FOnTextMessage: TNotifyEvent;
87+ FText: string;
8688 function Check(aItem: TItem): Boolean;
89+ procedure SetText(const Value: string);
8790 public
8891 Temp: TItem;
8992 Item: TItem;
@@ -95,6 +98,8 @@
9598 OjamaColor: TColor;
9699 EffectCount: integer;
97100 GameParam: TGameParam;
101+ TextColor: TColor;
102+ Name: string;
98103 constructor Create;
99104 destructor Destroy; override;
100105 procedure Start(const Resume: Boolean = false);
@@ -110,6 +115,9 @@
110115 property OnCreateOjama: TOjamaEvent read FOnCreateOjama
111116 write FOnCreateOjama;
112117 property OnScore: TScoreEvent read FOnScoreEvent write FOnScoreEvent;
118+ property Text: string read FText write SetText;
119+ property OnTextMessage: TNotifyEvent read FOnTextMessage
120+ write FOnTextMessage;
113121 end;
114122
115123 TForm1 = class(TForm)
@@ -134,6 +142,7 @@
134142 { Private 宣言 }
135143 Buffer: TBitmap;
136144 TextMessage: string;
145+ Limit: TTime;
137146 public
138147 { Public 宣言 }
139148 Player1, Player2: TPlayer;
@@ -141,6 +150,7 @@
141150 procedure CreateOjama(Sender: TObject; aCount: integer);
142151 procedure PlayerScore(Sender: TObject; const GameParam: TGameParam;
143152 var Score: integer);
153+ procedure PlayerMessage(Sender: TObject);
144154 end;
145155
146156 var
@@ -362,6 +372,10 @@
362372 Player2.OnCreateOjama := CreateOjama;
363373 Player1.OnScore := PlayerScore;
364374 Player2.OnScore := PlayerScore;
375+ Player1.OnTextMessage := PlayerMessage;
376+ Player2.OnTextMessage := PlayerMessage;
377+ Player1.Name := 'Player1';
378+ Player2.Name := 'Player2';
365379 Rensa := TRensa.Create;
366380 Player1.Com := true; { ComPlay }
367381 Player11.Checked := Player1.Com;
@@ -394,22 +408,23 @@
394408 Player2.Start(true);
395409 Buffer.Canvas.Brush.Color := Color;
396410 Buffer.Canvas.FillRect(Rect(0, 0, Buffer.Width, Buffer.Height));
411+ Limit := 0;
397412 Exit;
398413 end;
399- if (Player1.State = Shoot) or (Player1.State = Ojama) then
400- Exit;
401- case Key of
402- VK_DOWN:
403- if Player1.State = Down then
414+ if (Player1.Com = false) and (Player1.State = Down) then
415+ begin
416+ case Key of
417+ VK_DOWN:
404418 Player1.State := Shoot;
405- VK_UP:
406- Player1.Turn;
407- VK_LEFT:
408- Player1.Move(TDirector.Left);
409- VK_RIGHT:
410- Player1.Move(Right);
419+ VK_UP:
420+ Player1.Turn;
421+ VK_LEFT:
422+ Player1.Move(TDirector.Left);
423+ VK_RIGHT:
424+ Player1.Move(Right);
425+ end;
426+ Paint;
411427 end;
412- Paint;
413428 end;
414429
415430 procedure TForm1.FormPaint(Sender: TObject);
@@ -502,6 +517,13 @@
502517 ItemDraw(Player2.Item);
503518 OjamaDraw(Player2);
504519 end
520+ else if Sender = Player2 then
521+ begin
522+ s := Player1.Ground;
523+ Main;
524+ ItemDraw(Player1.Item);
525+ OjamaDraw(Player1);
526+ end
505527 else
506528 begin
507529 s := Player1.Ground;
@@ -508,12 +530,22 @@
508530 Main;
509531 ItemDraw(Player1.Item);
510532 OjamaDraw(Player1);
533+ Buffer.Canvas.Brush.Color := clWhite;
534+ s := Player2.Ground;
535+ Main;
536+ ItemDraw(Player2.Item);
537+ OjamaDraw(Player2);
511538 end;
512- if (Player1.State = Stop) and (Player2.State = Stop) then
539+ if Limit > 0 then
513540 begin
514541 i := (Buffer.Width - Buffer.Canvas.TextWidth(TextMessage)) div 2;
515542 Buffer.Canvas.Brush.Color := Color;
516543 Buffer.Canvas.TextOut(i, 0, TextMessage);
544+ if Time > Limit then
545+ begin
546+ Limit := 0;
547+ FormPaint(Sender);
548+ end;
517549 end;
518550 Canvas.Draw(100, 50, Buffer);
519551 end;
@@ -525,11 +557,29 @@
525557 Start1Click(Sender);
526558 end;
527559
560+procedure TForm1.PlayerMessage(Sender: TObject);
561+var
562+ s: TPlayer;
563+begin
564+ s := Sender as TPlayer;
565+ if s.State = Stop then
566+ begin
567+ if s = Player1 then
568+ TextMessage := 'Player2 WIN !!'
569+ else
570+ TextMessage := 'Player1 WIN !!';
571+ end
572+ else
573+ TextMessage := s.Text;
574+ Canvas.Font.Color := s.TextColor;
575+ Limit := Time + 1 / (24 * 60 * 60);
576+end;
577+
528578 procedure TForm1.PlayerScore(Sender: TObject; const GameParam: TGameParam;
529579 var Score: integer);
530580 begin
531581 with GameParam do
532- Score:=Rensa*Rensa*10+Group*Group*15;
582+ Score := Rensa * Rensa * 10 + Group * Group * 15;
533583 end;
534584
535585 procedure TForm1.Start1Click(Sender: TObject);
@@ -806,6 +856,8 @@
806856 if Assigned(FOnScoreEvent) = true then
807857 FOnScoreEvent(Self, GameParam, Score);
808858 end;
859+ if GameParam.Rensa >= 2 then
860+ Text := Name + Format(' %d 連鎖', [GameParam.Rensa]);
809861 end;
810862
811863 function TPlayer.Drop: Boolean;
@@ -871,6 +923,8 @@
871923 begin
872924 Sleep(3);
873925 Application.ProcessMessages;
926+ if State <> Down then
927+ break;
874928 end;
875929 end;
876930 Shoot:
@@ -947,6 +1001,13 @@
9471001 end;
9481002 end;
9491003
1004+procedure TPlayer.SetText(const Value: string);
1005+begin
1006+ FText := Value;
1007+ if Assigned(FOnTextMessage) = true then
1008+ FOnTextMessage(Self);
1009+end;
1010+
9501011 procedure TPlayer.Start(const Resume: Boolean);
9511012 begin
9521013 OjamaClean;
@@ -959,7 +1020,10 @@
9591020 Item.Assign(Temp);
9601021 Item.Visible := true;
9611022 if Check(Item) = false then
962- State := TState.Stop
1023+ begin
1024+ State := TState.Stop;
1025+ Text := Name + 'Game Over';
1026+ end
9631027 else
9641028 begin
9651029 if Com = true then
--- rensa.dproj (revision 2)
+++ rensa.dproj (revision 3)
@@ -5,7 +5,7 @@
55 <FrameworkType>VCL</FrameworkType>
66 <MainSource>rensa.dpr</MainSource>
77 <Base>True</Base>
8- <Config Condition="'$(Config)'==''">Release</Config>
8+ <Config Condition="'$(Config)'==''">Debug</Config>
99 <Platform Condition="'$(Platform)'==''">Win32</Platform>
1010 <TargetedPlatforms>3</TargetedPlatforms>
1111 <AppType>Application</AppType>
Show on old repository browser