Delphi 충돌 구체 전체 인 스 턴 스 코드 구현
6843 단어 Delphi
여기 서 저 희 는 주로 Timer 컨트롤,Panel 컨트롤,TrackBar 컨트롤,SpinEdit 컨트롤,Shape 컨트롤 과 Button 컨트롤 을 사용 하여 이 루어 집 니 다.포 인 트 는 Delphi 의 Timer 컨트롤 입 니 다.프로그램 을 실행 할 때 이 컨트롤 은 보이 지 않 고 직접 조작 할 수도 없습니다.Timer 컨트롤 은 일정 시간 마다 OnTimer()이벤트 가 자동 으로 실 행 됩 니 다.이 예 는 그것 을 이용 하여 작은 공 운동 사건 을 촉발 시 키 는 것 이다.
디자인 사고:이 프로그램 이 해결 해 야 할 주요 문 제 는 작은 공의 운동 과 운동 과정 에서 작은 공의 속도 와 크기 를 어떻게 통제 하 느 냐 하 는 것 이다.Timer 컨트롤 의 OnTimer()사건 을 이용 하여 작은 공의 운동 을 제어 합 니 다.TrackBar 컨트롤 과 SpinEdit 컨트롤 을 이용 하여 작은 공의 운동 속 도 를 조절 합 니 다.작은 공 은 Shape 컨트롤 로 생 성 됩 니 다.
1.새 프로젝트:
(1)Delphi 6.0 프로그램 을 시작 합 니 다.'파일'메뉴 의'새로 만 들 기'명령 을 선택 하고 팝 업 된 하위 메뉴 에서 Application 옵션 을 선택 하면 새 프로젝트 의 Form 1 창 이 나타 납 니 다.
(2)'파일'메뉴 의'프로젝트 별 저장'명령 을 선택 하고 Save Unit 1 As 대화 상 자 를 팝 업 합 니 다."저장"목록 상자 에서 이 창 파일 을 저장 할 디 렉 터 리 이름 을 선택 하 십시오.'파일 이름'편집 상자 에 파일 이름 을 쓰 고'Unit 1'을 쓰 고'저장'단 추 를 누 르 면 위의 옵션 을 저장 합 니 다.
(3)이전 단 계 를 실행 하면'프로젝트 다른 이름 으로 저장'대화 상자 가 팝 업 됩 니 다."저장"목록 상자 에서 이 프로젝트 를 저장 할 디 렉 터 리 이름 을 선택 하 십시오.(2)단계 와 같은 디 렉 터 리 를 선택 하 는 것 이 좋 습 니 다.'파일 이름'편집 상자 에 이 프로젝트 를 처리 하 는 소스 코드 를 저장 하 는 파일 이름 을 쓰 고,여기에'프로젝트 1'을 쓰 고'저장'단 추 를 누 르 면 위의 옵션 을 저장 합 니 다.
2.부분 매개 변수 설정:
(1)Unit 1 창 을 활성화 하고'속성'패 널 에 이 창의 Caption 속성 을'운동 하 는 구체',Color 속성 을'clMoneyGreen'으로 설정 합 니 다.
(2)'표준'페이지 의 Panel 옵션 을 선택 하고 창 에 Panel 컨트롤 을 추가 하여 적당 한 크기 와 위 치 를 조정 합 니 다.'속성'패 널 에 이 컨트롤 의 Name 속성 을'Panel 1',BevelInner 는'bvLowered',BevelOuter 는'blNone',Borderstyle 은'bsSingle',Color 속성 은'clSkyBlue'로 설정 합 니 다.
(3)"시스템"페이지 의 Timer 옵션 을 선택 하고 창 에 Timer 컨트롤 을 추가 하고 Object Inspecter 패 널 에 Interval 속성 을 1 로 설정 합 니 다.Name 속성 은"Timer 1"입 니 다.
(4)'추가'페이지 의 Shape 옵션 을 선택 하고 창 에 Panel 1 에 Shape 컨트롤 을 추가 합 니 다.'속성'패 널 에 Show Hint 속성 을'True',Hint 속성 을'운동 구체'로 설정 하고 Brush.Color 속성 을 ClLime 으로 설정 하 며 Shape 속성 을'slCircle'로 설정 합 니 다.
(5)'표준'페이지 의 Button 옵션 을 선택 하고 창 에 3 개의 Button 컨트롤 을 추가 하여 적당 한 크기 와 위 치 를 조정 합 니 다.'속성'패 널 에 Caption 속성 을'시작','정지','종료'로 설정 합 니 다.
(6)Win 32 페이지 의 TrackBar 옵션 을 선택 하고 창 에 TrackBar 컨트롤 을 추가 하여 적당 한 크기 와 위 치 를 조정 합 니 다."속성"패 널 에 적당 한 속성 을 설정 합 니 다.
(7)Samples 의 SpinEdit 옵션 을 선택 하고 창 에 SpinEdit 컨트롤 을 추가 하여 적당 한 크기 와 위 치 를 조정 합 니 다."속성"패 널 에 적당 한 속성 을 설정 합 니 다.
3.코드 분석:
(1)작은 공이 왔 다 갔다 하 는 기능 을 실현 하기 위해 전체 변 수 를 설정 해 야 합 니 다.즉,정수 I,I 의 초기 값 은 1 입 니 다.I=1 시 작은 공이 왼쪽으로 이동 하고 판 넬 의 왼쪽 벽 에 부 딪 혔 을 때 I 값 은 2 로 변 한다.이때 작은 공이 오른쪽으로 움 직 이 고 판 넬 의 오른쪽 벽 에 부 딪 혔 을 때 I 값 은 1 로 변 한다.이렇게 I 값 의 변 화 를 통 해 작은 공의 왕복 운동 을 실현 했다.이 부분 코드 는 OnTimer 이벤트 에서:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.interval:=trackbar1.position; // Timer
if i=1 then //
begin
if shape1.left>0 then
begin
shape1.left:=shape1.left-10; //
shape1.Width:=(shape1.Width+1)mod 70; //
shape1.Height:=(shape1.Height+1)mod 70; //
end
else
i:=2; //
end;
if i=2 then
begin
if shape1.left<(panel1.Width-shape1.Width-5) then
begin
shape1.left:=shape1.left+10 ; //
shape1.Width:=(shape1.Width+1)mod 70;//
shape1.Height:=(shape1.Height+1)mod 70;//
end
else
i:=1;
end;
end;
(2)'시작'과'정지'버튼 으로 작은 공의 운동 여 부 를 제어 하 는데 사실은 타이머 가 작 동 하 는 지 여 부 를 제어 하 는 것 이다.
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.interval:=trackbar1.position; // Timer
Timer1.Enabled:=true; //
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=False; //
end;
(3)TrackBar 와 SpinEdit 두 컨트롤 은 작은 공의 운동 속 도 를 제어 하고 해당 코드 는 다음 과 같다.
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
trackbar1.position:=spinEdit1.Value; //
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
spinEdit1.value:=trackbar1.Position; // Trackbar SpinEdit
end;
4.delphi 당구 의 전체 코드 는 다음 과 같 습 니 다.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, ComCtrls, StdCtrls, Spin;
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
TrackBar1: TTrackBar;
Timer1: TTimer;
Shape1: TShape;
SpinEdit1: TSpinEdit;
Button3: TButton;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i:integer;
implementation
{$R *.DFM}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.interval:=trackbar1.position; // Timer
if i=1 then //
begin
if shape1.left>0 then
begin
shape1.left:=shape1.left-10; //
shape1.Width:=(shape1.Width+1)mod 70;//
shape1.Height:=(shape1.Height+1)mod 70;//
end
else
i:=2; //
end;
if i=2 then
begin
if shape1.left<(panel1.Width-shape1.Width-5) then
begin
shape1.left:=shape1.left+10 ; //
shape1.Width:=(shape1.Width+1)mod 70; //
shape1.Height:=(shape1.Height+1)mod 70;//
end
else
i:=1;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.interval:=trackbar1.position; // Timer
Timer1.Enabled:=true; //
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=False; //
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
trackbar1.position:=spinEdit1.Value; //
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
spinEdit1.value:=trackbar1.Position; // Trackbar SpinEdit
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close; //
end;
initialization
i:=1;
end.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Delphi] TStringBuilder그리고 꼭 사용해야만 할까? 그림처럼 Heap 영역에 "Hello" 공간을 생성하고 포인팅을 한다. "Hello World" 공간을 새로 생성한 후 포인팅을 하게 된다. 결국 "Hello" 라는 String 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.