��Top ��Diary (old) ��Products ��Documents ��Donation ��Link

Delphi�̂�����

2001/04/21 ����
���̂悤�Ȃ��Ƃ��l���ĉ��蒆�ł��B
  • �O���[�o���ϐ��͋ɗ͎g��Ȃ�
  • �v���O�������ɂȂ��̒萔�l(�}�W�b�N�i���o�[)�𒼐ڏ������܂Ȃ�
  • �ϐ��A�֐��Ȃǂɂ͈Ӗ��̂��閼�O��t����
  • �@�\�P�ʂœK���Ƀt�@�C���𕪂���
  • public�ȃt�B�[���h�͍��Ȃ�
������@���̑S�\�[�X�R�[�h�������܂����B

Windows�Ńv���O���������Ă݂����Ǝv���܂���
�ł��Ȃ񂩓�����A����Ȑl�ɂ�Delphi�������߂ł��B
���ɂ��AVisualC++(�Ȍ�VC),VisualBasic(�Ȍ�VB)�Ȃ񂩗L�邯�ǂǂ��������Ɩ�肠��B
C++�͍��͂����A�ǂ��ɂ����G�ɂȂ肷���ĂĂǂ��l���Ă�����p�̌���Ȃ񂩂���Ȃ��B�������A���͕��@��m���ĂĂ����K�̂������ł̐�����Ȃ񂩂����Ⴒ����Ƃ���B
VB��VB�ŁA�Ȃ񂩂₽����s���x�x�����A��̂Ȃ�ŃI�u�W�F�N�g�w���Ƃ����‚Œp����‚ł��Ȃ��̂͂Ȃ�ŁH(�Ȃ񂩁A���̃o�[�W�����ł͂ł���炵�����ǂ�)
�����VB�͊ȒP�Ƃ����Ă邯�ǁA����͍ŏ��̂��������ŁA���񂾂񐧖񑽂����ċt�ɖʓ|�������Ȃ�݂����B

����ɔ�ׂ�Delphi�͂��΂炵���AGUI�����ŃA�v���̌����ڂ͂����Ă��ł��邵�A����g�p����������ĂĊo���₷�����AWindows�łł��邱�Ƃ͂����Ă��ł���(�܂��h���C�o�͏����Ȃ��݂��������ǁA���ʂ��Ȃ��ł���)�A����ɍ�����A�v���̎��s���x��C++�̂������Ɉ��������Ȃ����A�R���p�C�������ԃR�[�h����Ă�͂���VB��葁���񂶂�Ȃ����낤���B(Basic���炫���l�́A�ŏ��͌������^�`�F�b�N�������������m��Ȃ����ǁA������Ɗ����ΑS�R���Ȃ��B�o�O�����邵�ˁB)
�܂��A�ȒP�Ɍ�����VB��VC�̂����Ƃ��ǂ�B
�lj�
���̂ւ�́A�����̑��̋L���Ƃ̗��݂ł��B�܂��A�ɘ_�Ƃ������B
���ꂼ�ꂢ����������܂����ADelphi�������ł���B


�܂������������Ƃł݂��Delphi���g���ƌ������ƂɂȂ����̂�Delphi�u�����͂��߂܂��B
�����ł́A�ȒP�ɕ��@���`�F�b�N���Ă���A�~�j�Q�[�������Ƃ���܂ōs�����Ǝv���܂��B

���   a := 10; �ϐ��ɁA�l��������B
���� if n = 0 then
  begin
    a := 1;
    b := 1;
  end
else
  a := 2;
����true��������Athen�̎��̕������s���Afalse��������else�̎��̕������s����B
else�̒��O�̕��ɂ�;���‚��Ȃ����Ƃɒ��ӁB
���� case n of
  0..2 : a := 1;
  3,4 : a := 3;
  5..10: a := 2;
else
  a := 0;
end
���̒l�ŁA���̃��X�g�ɕ��򂷂�B
���[�v�� for i:=0 to 10 do
begin
  a := a + i;
  b := b * 2;
end;
�J�E���^�̒l�������l����I�l�܂�1���‘��₵�Ȃ���A ���̎��̕������s����B
���[�v�� while not (i mod 10) do
begin
  i := i + 3;
  n := n + 1;
end;
����true�̂��������̕������s����B
���[�v�� repeat
  i := i * 2;
  a := a - 1;
  b := i * a;
until b <= 15;
until�̎��̎���true�̊�repeat����until�܂ł����s����B
�W�����v label Label1;
begin
  for i := 0 to 10 do
    for j := 0 to 120 do
      for k := 0 to 120 do
        if i * j - k = 5 then
          goto Label1;
  Label1;
end;
���x���܂Ŗ������ɔ�т܂��B��ʂ�goto���̓v���O�����̗��ꂪ������ɂ��Ȃ�̂ŁA�g��Ȃ��B���d���[�v���甲����Ƃ��ɂ́A�g���Ă��悢�����B

�����܂�Delphi�Ŏg���Ă���ObjectPascal�̕��@�̐�������͂��߂܂����A�S����������͎̂��ʂ̓s���ł‚炢���A���p�I�łȂ��Ǝv���̂�Basic��C/C++�Ȃ񂩂̌��������������������Ƃ��Ęb��i�߂܂��B(�Ȃ񂩏�ŏ��������ƂƂ�����Ɩ������Ă�悤�ȋC�����邯�ǂ܂�����ȍׂ������Ƃ͋C�ɂ��Ȃ��悤�ɁB)


�\��ύX�A�ȒP�ȃv���O�����̍쐬��ʂ��ĕ��@����������ɂ��܂��傤�B
#�����A���ꂩ��Delphi�̃o�[�W�����͈ꉞ5.0�Řb��i�߂邯�Ǒ���2.0�ȍ~�Ȃ���Ȃ��͂��B
�lj�
Delphi2.0�ł́ATImage��Transparent�v���p�e�B���Ȃ��悤�ł��B

�����ADelphi���N�����܂��B���S�̌�ɓ����J���‹����o�Ă��āA ���̂悤�ȉ�ʂɂȂ�͂��B
Form1�Ƃ������Ă���E�B���h�E���t�H�[���ƌĂ�ŁA����͂��̂܂܃\�t�g�����s�����Ƃ��̃E�B���h�E�ɂȂ�B

�܂��́A��{�̃n���[���[���h���ȁB
��̂ق��ɂ���AStandard�̒�����Button��I��Ńt�H�[���ɂ͂�‚��܂��B

�����Ŏ����ɗ΂̎O�p�`�ɂȂ��Ă�����s�{�^���������Ă݂�ƁA�{�^����1�‚‚����E�B���h�E���o�Ă���ł���B�{�^���������Ă�����������Ȃ����Ǎő剻���ŏ������ł��邵�A�I�����邱�Ƃ��ł���ł���B�R�[�h(�v���O����)��s�������ĂȂ����ǃ\�t�g��ꂽ�ł���(�܂����̖��ɂ������Ȃ�����)�B
���āA�������̃E�B���h�E��‚�����t�H�[���ɒu�����{�^�����_�u���N���b�N���Ă݂āB
procedure TForm1.Button1Click(Sender: TObject);
begin

end;
�ƕ\�����ꂽ�ł���B
������
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Hello World!');
end;
�ƕς��Ď��s���Ă݂܂���B
�{�^���������ƁAHello World!�Ə����ꂽ���b�Z�[�W�{�b�N�X���\��������ˁB

Delphi�ł́A����Ȋ����ŁA�}�E�X�Ń{�^���Ȃ񂩂̃R���|�[�l���g(���X�g�Ƃ����j���[�Ƃ����W�I�{�b�N�X�Ƃ����낢��)�������āA�����ʼn����N�������Ƃ��ɂǂ������������������ƂŐ��藧���Ă���B
�����ł�����̂́A�{�^���������ꂽ�Ƃ���ShowMessage���ĂԂ悤�ɂɂ��邱�ƁB�I�u�W�F�N�g�C���X�y�N�^��Button1:TButton�̃C�x���g�̂Ƃ�������Ă݂�ƁAOnClick�̂Ƃ����Button1Click�Ə�����Ă���͂��B�����Button1��OnClick�C�x���g���N�������Ƃ��ɁAButton1Click�葱�����ĂԂ悤���Ă�B
ShowMessage�Ƃ����̂́A�����Ă݂��Ȃ�킩�����Ǝv�����Lj����œn�����������OK�̂‚������b�Z�[�W�{�b�N�X��\������葱���B
���Ƃ͂��������APascal�ł͕�����́A�V���O���N�H�[�e�[�V�����ł�����܂��B

procedure�Ƃ����̂́A�葱���̈Ӗ���function�͊֐��Ȃ񂾂��ǁA����͂ق��̃v���O���~���O���������Ă��l�Ȃ�킩����(C��void��Ԃ��֐����葱��)�B

Delphi�ʼn������Ƃ���{�ɂȂ�̂́A�����ł�����悤�ɉ������N������(�����ł̓{�^���������ꂽ)���ɉ���������(�����ł̓��b�Z�[�W�{�b�N�X��\������)�Ƃ����l��������{�ɂȂ��Ă���B������A�C�x���g�h���u�����̃v���O�����Ƃ����B

�������ꂾ������Ȃɂ��Ȃ񂾂�������Ȃ����Ȃ��B
�܂��A�����‚�������ĂȂ�ƂȂ��킩��΂����OK�Ƃ������ƂŁA������Ƃ�����@��������Ă݂܂���B(���܂ǂ�����Ȃ�N�����Ȃ��Ƃ�����Ȃ��悤��)
�S�\�[�X��lj����܂����B

�܂��́ADelphi�̓��ӂȃ��[�U�[�C���^�[�t�F�C�X�������Ă����܂��傤�B
����Ȋ����̉�ʂɂ��悤���ȁB

�g���Ă���R���|�[�l���g�́ATButton,TLabel,TPanel�ʼn��̂悤�ɔz�u�B

���ꂼ���Name���I�u�W�F�N�g�C���X�y�N�^�ŁAGamePanel�AStartButton�ATimeLimitLabel�AScoreLabel�AScoreValueLabel�ɕς��܂��B GamePanel�́@GamePanel�@�̕���������������ACaption���ɂ��镶����������B
���ꂩ��AStartButton��Caption��Start�ɕς���B
TimeLimitLabel,ScoreLabel,ScoreValueLabel��Caption�����ꂼ��K���ɕς��Ƃ��ĂˁB

�����ŁA�o�ꂷ�������̃N���X������Ă������B
�܂��A
���j���[����t�@�C���V�K�쐬�`�V�K�쐬�`���j�b�g�Ń��j�b�g�������Mole.pas�ɖ��O��ς��ĕۑ��B
type
  TForm1 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
�ƂȂ��Ă���Ƃ���ɁA
type
  TMole = class(TObject)
  private
  protected
    FX,FY: Integer; //���O���̈ʒu
    FWidth,FHeight: Integer;//���O���̑傫��
    FDead: Boolean;
    FBirthTime: Integer; //�������ꂽ����
    FCurrentTime: Integer; //�ŏI�X�V����
    FDeathTime: Integer; //�@���ꂽ����
    procedure OnClick(Sender: TObject);
  public
    FImage: array[0..1]of TImage;//���O���̊G
    constructor Create(AOwner: TComponent;Parent: TWinControl; x,y: integer;birth: integer);
    destructor Destroy;
    procedure Update(time: Integer);
  end;

  TForm1 = class(TForm)
�ƕt��������B
Java�Ƃ�C++��m���Ă���l�Ȃ�Ȃ�ƂȂ��킩���ˁA���̃I�u�W�F�N�g�̎��•ϐ��Ƃ���FX,FY,FWidth,FHeight,FBirthTime,FCurrentTime,FDeathTime��Integer�^�A�‚܂萮���^�̕ϐ��AFDead��Boolean�^�A�‚܂�_���^�Ƃ��Đ錾���Ă���B
����ɂ��̃I�u�W�F�N�g�̃N���b�N���ꂽ�Ƃ��̃C�x���g�n���h���Ƃ��Ďg��OnClick���\�b�h�A�����ăR���X�g���N�^�ƃf�X�g���N�^�A�����Update���\�b�h��錾����B
#Delphi�ł͍ŏ���type���ĂƂ��납�牺�ŁA�^�̐錾�������āAimplementation�̉��Ŏ��̂��`����悤�ɂȂ��Ă�B

�����āA
var
  Form1: TForm1;

implementation

�ƂȂ��Ă�Ƃ�����A var
  Form1: TForm1;
  Score: Integer;

implementation

�Ə���������񂾂��ǁA�����̓O���[�o���ϐ���錾����Ƃ���œ��_�Ɏg���ϐ��𐮐��^�Ő錾���Ƃ��B(�O���[�o���ϐ��̑��l�͈�ʓI�Ƀo�O�̕�ɂɂȂ肩�˂Ȃ��̂ł���܂��悭�Ȃ��݂���������)
����ŁA���ɂ�����N���X�̎����ɓ���܂���A
�܂��R���X�g���N�^�A
constructor TMole.Create(AOwner: TComponent;Parent: TWinControl; x,y: integer;birth: integer);
var
  i: integer;
  bmp: TBitmap;
begin
  FX := x;//�ʒu
  FY := y;
  FBirthTime := birth;//��ʂɏo�Ă��鎞��
  FDead := false;//�@���ꂽ?
  bmp := TBitmap.Create;//�摜�ǂݍ��݂Ɏg���r�b�g�}�b�v�̃C���X�^���X���쐬�B
  for i := 0 to 1 do
  begin
    FImage[i] := TImage.Create(AOwner);//Owner���J�������Ƃ��Ɏ������J�������B
    bmp.LoadFromFile('Mole'+IntToStr(i)+'.bmp');//�r�b�g�}�b�v�t�@�C����ǂݍ���
    FImage[i].Picture.Assign(bmp);//�r�b�g�}�b�v����FImage�ɃR�s�[
    FImage[i].Enabled := false;//�C�x���g���󂯎��Ȃ��B
    FImage[i].Visible := false;//�����Ȃ��B
    FImage[i].Left := FX;//X���W
    FImage[i].Top := FY;//Y���W
    FImage[i].AutoSize := true;//�r�b�g�}�b�v�̑傫���ɂ��킹��B
    FImage[i].Parent := Parent;//�e�R���g���[����ݒ�B(��������Ƃ��ɂ����ݒ肵�Y���???���������B)
    FImage[i].Transparent := true;//�r�b�g�}�b�v�̔w�i�𓧖��ɂ���
  end;
  FImage[0].OnClick := OnClick;//�N���b�N���ꂽ�Ƃ��ɁAOnClick���\�b�h���Ă΂��悤�ɐݒ肵�Ƃ��B
end;
�t�H�[���f�U�C�i�Ń|���|���u���Ă����Ƃ��̕ӂ̐ݒ�͊y�Ȃ񂾂��ǁA����͎��s���ɍ쐬���Ă�̂Ō��\�ʓ|�Ɍ����邩���ˁB

���̓f�X�g���N�^�A
destructor TMole.Destroy;
var
  i: integer;
begin
  for i := 0 to 1 do
  begin
    FImage[i].Free;
  end;
end;
Free�Ƃ����̂́A�I�u�W�F�N�g��nil(C�Ƃ��Ō����Ƃ����NULL)�łȂ��Ƃ��Ƀf�X�g���N�^���Ăяo�����̂ŁA����Destroy���Ăяo���������S�B

�ŃN���b�N���ꂽ�Ƃ��̃C�x���g�n���h��
procedure TMole.OnClick(Sender: TObject);
begin
  //�@���ꂽ��A���񂶂Ⴄ�B
  if not FDead then
  begin
    FDeathTime := FCurrentTime;
    FDead := true;
    //�\������G��؂�ւ���
    FImage[0].Enabled := false;
    FImage[0].Visible := false;
    FImage[1].Enabled := true;
    FImage[1].Visible := true;
    Score := Score+100;//���_100�_
  end;
end;

���Ԃɂ��킹�ĕ\����\����؂�ւ��悤
procedure TMole.Update(time: integer);
begin
  if FDead then
  begin
  //����ł���2�b��ɔ�\���ɂ���B
    if FDeathTime + 2000 < time then
    begin
      FImage[1].Enabled := false;
      FImage[1].Visible := false;
    end;
  end
  else
  begin
    if FBirthTime < time then
    begin
      FImage[0].Enabled := true;
      FImage[0].Visible := true;
    end;
    //2�`4�b�\���������\���ɐ؂�ւ���B
    if time > FBirthTime + 2000 + Random(2000) then
    begin
      FImage[0].Enabled := false;
      FImage[0].Visible := false;
      FDead := true;
    end;
  end;
  FCurrentTime := time;
end;

����TForm1�̕ύX
�܂��͐錾����
  TForm1 = class(TForm)
    Button1: TButton;//��������
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure FormClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);//�����܂ł�Delphi�ɂ��R�[�h
  private
    { Private �錾 }
    procedure ApplicationIdle(Sender: TObject;var Done: Boolean);//��������
  public
    { Public �錾 }
    FMoles: array[0..MOLEMAX]of TMole;
    FBaseTime: integer;
    FImage1 : TImage;
    procedure StartGame;
    procedure EndGame;//�����܂ł�lj����Ă�
  end;

���Ď����́A

�Q�[���͂��߂�Ƃ��Ɋe��̏�����������
procedure TForm1.StartGame;
var
  i: integer;
begin
  for i := 0 to MOLEMAX do
  begin
    //�����ł܂����O���̃C���X�^���X�����B
    FMoles[i] := TMole.Create(Form1 ,Panel1
      ,Random(Panel1.Width-120),Random(Panel1.Height-120),random(55000));
  end;
  Score := 0;//���_��������
  Application.OnIdle := ApplicationIdle;//OnIdle�n���h���ɁAApplicationIdle�葱�������t����B
  FBaseTime := timeGetTime;//�J�n���Ԃ��L�^���Ƃ�
end;
������
Application.OnIdle := ApplicationIdle;
���Ă̂́A�A�v���P�[�V�������ɂȂƂ�(�������ׂ����b�Z�[�W���Ȃ��Ƃ�)��ApplicationIdle�葱�����ĂԂ悤�ɂ���Ƃ������ƁB
�����Delphi�̃Q�[���̃��C�����������Ƃ��Ɏg������@�̈��

����Ƃ����I�u�W�F�N�g���J������OnIdle�ł���Ă����[�v���Ƃ߂�B
procedure TForm1.EndGame;
var
  i: integer;
begin
  //������̃I�u�W�F�N�g���J��
  for i := 0 to MOLEMAX do
  begin
    FMoles[i].Destroy;
    FMoles[i] := nil;
  end;
  Application.OnIdle := nil;//���[�v���Ƃ߂�
  Button1.Enabled := true;//�Q�[���J�n���”\�ɂ���B
end;

�����Ŗ������[�v�݂����ȏ����ɂ��ă��C�����������
procedure TForm1.ApplicationIdle(Sender: TObject;
var Done: Boolean);
var
  time: integer;
  i: integer;
begin
  time := timeGetTime - FBaseTime;//�J�n����̃~���b��
  for i := 0 to MOLEMAX do
  begin
    FMoles[i].Update(time);
  end;
  //�^�C���I�[�o�[�ŃQ�[���I��
  if time > 60000 then
  begin
    ShowMessage('Score:'+IntToStr(Score));
    EndGame;
  end;
  Label3.Caption := '����'+IntToStr((60000-time)div 1000)+'�b�ł�';
  Label2.Caption := IntToStr(Score);//�����𕶎���ɕϊ�
  Done := false;//������Done��false�������邱�ƂŁA���̎葱���̏I������ɂ܂����̎葱�����Ă΂��B
end;

����t���������Ƃ��́A���_�����炷�B
procedure TForm1.FormClick(Sender: TObject);
begin
  Score := Score - 50;
end;

�{�^���������ꂽ��Q�[�����͂��߂�B
procedure TForm1.Button1Click(Sender: TObject);
begin
  StartGame;
  Button1.Enabled := false;
end;

�����ă��O���̊G���r�b�g�}�b�v�t�@�C���ŗp�ӂ���(Mole0.bmp,Mole1.bmp)
�����A�����܂ł��������s���Ă݂܂��傤�B�ǂ��A���܂������܂�����?

�����܂ŁA���Ȃɋ삯���Ő���(?)���Ă������ǁA�����͖��ɗ�����?
�킩��Ȃ����ƂƂ��A�ςȂƂ��Ƃ�������璼�ڕ����ɗ��Ă݂ĂˁB
Contact me <[email protected]>
© 2001-2006 zakki. total:total /yesterday:yesterday /today:today