============
== 핀 투 ==
============
언어:델파이
버전: 0.02
작성자: tony (
[email protected])
날짜: 2002.01.13
소개
============
제가 지금까지 본 직소 퍼즐은 대부분 정사각형 타일로 이루어져 있고, 그 중 상당수는 두 타일의 위치를 바꿔야만 움직일 수 있어서 실제 직소 퍼즐과는 느낌이 너무 달라서 매우 불편했습니다.
얼마 전 "삼국지 조자룡 전설"에 포함된 직소 퍼즐을 보았는데, 타일의 모서리가 불규칙하고(오목하고 볼록한 모서리가 있음) 창에 있는 타일을 드래그할 수 있다는 생각이 들었습니다. ... 비슷한 소프트웨어를 직접 만들어 보자는 아이디어가 떠올랐습니다. (그러다가 bjig32라는 외국 직소 퍼즐을 봤습니다. 아주 좋았습니다. 이 프로그램을 개발하기 전에 봤더라면 제가 직접 개발할 생각은 하지 않았을 것입니다. 제 생각으로는 개발할 방법이 없기 때문입니다. 퍼즐 게임만큼 좋습니다.)
내가 어떻게 구현하나요?
==================
게임의 전체 시스템에는 내가 디자인한 TtuObj와 TtuMng라는 두 가지 클래스가 포함되어 있습니다.
TtuObj - 잘린 후의 작은 그림 조각인 타일을 나타냅니다. 타일은 불규칙한 경계를 가지며 마우스 끌기 이벤트에 반응하여 위치한 컨테이너 내에서 이동할 수 있습니다. 이 클래스를 TObject에서 상속하도록 설계한 다음 생성자에서 각각 TPanel과 TImage를 생성합니다. TControl에서 상속되지 않거나 TPanel에서 직접 상속되지 않는 이유는 vcl을 사용하여 컨트롤을 작성하는 데 익숙하지 않기 때문입니다. 가능하다면 다시 작성하세요. TImage에는 핸들이 없고 모양을 변경할 수 없기 때문에 TPanel을 사용하여 불규칙한 가장자리 모양을 생성하고(그렇다고 생각합니다) TImage는 이미지를 표시하고 마우스 이벤트를 제공하는 데 사용됩니다. 또한 각 TtuObj는 주변의 TtuObj 포인터와 연결 설정 여부도 기록합니다. 이를 통해 두 타일이 서로 가까이 있을 때 연결되었는지 여부를 확인하고 타일 뒤의 타일을 이동할 수 있는 기능을 제공합니다. 연결된 타일을 이동할 수 있습니다.
TTuMng - 직소 퍼즐 게임의 관리자입니다. 전체 그림을 개별 타일로 나누어 중앙에서 관리하고 모든 타일이 연결되었는지(즉, 게임이 종료되었는지) 확인하는 역할을 담당합니다.
알려진 버그
==========
아직은 전체 시스템의 효율성이 매우 낮고, 특히 타일을 이동할 때 플리커 현상이 매우 심합니다. 그런 다음 타일 자체의 PAINT 이벤트가 트리거됩니다. 즉, 모든 타일이 한 번 다시 그려집니다. 불규칙한 가장자리 컨트롤을 다시 그리는 것은 본질적으로 비효율적이므로 이렇게 깜박입니다. . AImage의 WM_PAINT 메시지 처리 기능을 TtuObj에서 직접 처리해 보았는데(즉, 타일을 드래그할 때 다시 그리기가 허용되지 않음), 타일을 이동한 후 지나간 자리마다 잔상이 남는 것을 발견했습니다. 삼국지 조자룡의 퍼즐 게임은 DirectX로 작성했는데 깜박임이 전혀 없었습니다. 앞으로는 DirectX로 작성해 보도록 하겠습니다.
당신이 참여하여 개선할 수 있기를 바랍니다!!!!!!