2012-03-01 4 views
2

정확하게 프로젝트를 설계하는 방법을 모른다. 그것은 내 컴퓨터 과학 부서에서 첫 해입니다. 나는 상속, 다형성, 추상 클래스, 인터페이스 등과 같은 자바에 관한 많은 정보를 배우고있다. 나는이 강의에 대해 정말로 궁금해하며 잘 배웁니다. 사실 저는이 강의에서 어떤 점도 놓치지 않았습니다. 그러나 어느 누구도 프로젝트를 만드는 방법을 가르쳐주지 못합니다. 학교 끝에서 적절한 Java 프로젝트를 설계해야합니다.자바로 프로젝트 설계하기

저는 저와 3 명의 급우가 새로운 게임을 만들기로했습니다. 그것은 단지 하나의 볼로 플레이되며 볼은 2 가지 색상이 가능합니다. 또한 두 선수는이 공의 색깔이 같은 색입니다. 공이 한 플레이어의 색에 있으면이 플레이어는 공을 움직여 다른 플레이어의 목표에 점수를 매길 수 있습니다. 이것들은 우리의 아이디어의 기본 논리이며 우리는이 게임을위한 새로운 시설과 옵션을 추가 할 수 있습니다. 우리는이 프로젝트를 성취하고자합니다. 그러나 ... 우리가 강의에서 듣고 배우기는하지만,이 프로젝트를 단계적으로 디자인하는 것은 정말로 혼란 스럽습니다. 방금 프로젝트의 논리를 보여 주려고했습니다. 그 동안 우리는 여전히 GUI에 대해 배우고 있지만 GUI의 시작 단계에 있습니다. 그래서 저는 이런 종류의 프로젝트를 디자인하고 만들기 위해 우리가 따라야 할 방법이 어떤 것인지 이해하고 싶습니다. 트릭과 바로 가기에 대해 알고 클래스 계층, 추상적 클래스, 수퍼 클래스, 재정의 등등에 대한 지식을 최대한 활용하고 싶습니다. (이 용어에 대해 모든 것을 알고 있지만 프로젝트를 디자인하는 데 사용하는 방법을 모르겠습니다.). 이들에 대한 정보를 조금이라도 표시 할 수 있다면, 너무 행복해서 내 ​​견해를 바꿀 수있을 것입니다. 그리고 그것은 우리의 진보를 용이하게 할 것입니다. 고맙습니다!

답변

3

Java Pong Game을보고 싶을 수도 있습니다. 매우 간단하며 공부할 수있는 몇 가지 소스 코드가 포함되어 있습니다.

보다 일반적인 조언 :

  • 당신은 게임에서 무슨 일이 일어나고 있는지 표시 할 수있는 방법이 필요합니다.아마도 아주 간단한 게임에서 화면을 표시하는 가장 쉬운 방법은 JPanel을 사용하고 paintComponent() 메서드를 재정 의하여 게임 화면을 올바르게 그리는 것입니다 (예 : 오른쪽 x, y 위치에 플레이어를 그립니다)
  • 다음과 같은 일을 수행해야 게임 루프 :
    • 플레이어에서 모든 입력을 읽어
    • 인 JPanel에 게임의 개체의 위치
    • 전화 다시 그리기() 업데이트 화면이 다시 그려 가도록 (듯이)
    • 예를 들어 잠시 기다립니다. Thread.sleep를 (30)는 30 밀리 초
    • 게임 루프의 시작으로 다시
    • 루프를 위해 잠을
  • 내가로부터 (등 프레임, 패널) 사용자 인터페이스를 정의하는 클래스를 분리하는 것이 좋습니다 게임 로직 (선수, 공 등)을 정의하는 클래스. 이상적으로는 게임 로직 클래스가 표시되거나 상호 작용하는 방식과 관련된 코드를 포함해서는 안됩니다.

게임의 경우 간단하게 많은 클래스가 필요하지 않습니다. 나는 다음과 같이 추천 할 것이다 :

  • App - 게임을 시작하는 메인 (...) 기능을 포함한다. 최소한 JFrame을 생성하고 그 안에 GamePanel 하나를 추가해야하지만, 원한다면 다른 UI 요소를 생성 할 수 있습니다. 이 클래스에서도 게임 루프를 구현하도록 선택할 수 있습니다.이 경우 기본 메서드는 모든 설정이 완료되면이를 호출해야합니다. (JPanel의 확장)
  • 의 GamePanel은 - 두 선수의 위치와 공
  • 플레이어를 포함하여 게임의 전체 상태를 나타내는 클래스 - 또한 아마도 마우스 움직임은
  • 게임 감지, 화면 그리기 로직을 ​​포함 - 당신의 대답을 X, Y 좌표와 DX, DY의 속도로,
+0

설명 답변에 감사드립니다. – El3ctr0n1c4

0

GUI는 게임을 만드는 데 실제로 적합하지 않습니다. GUI (Graphical User Intreface, Java에서의 스윙)는 단추 및 기타 텍스트/이미지 콘텐츠의 집합으로, 게임을 만들 수있는 것과 반대입니다. OpenGL과 같은 3D 렌더링 엔진 (Java, 프레임 워크 또는 저수준 라이브러리를 통해).

여기에는 선택 사항이 있습니다. 예를 들어 콘솔 프로그램과 같은 간단한 프로젝트를 결정할 수도 있지만 GUI를 통해 실행됩니다 (예 : GUI 프로그램을 사용하여 파일 이동).

또는 OpenGL 또는 유사 (Java 용 JOGL) 학습을하고 해당 게임을 만들 수 있습니다! (JavaFX도 작동 할 수 있지만 그다지 알지는 못합니다)

디자인에 대해 알려드립니다.

일반적으로 모든 프레임 등을 출력하는 기본 "루핑"클래스가 있어야합니다. 기본 "루핑"클래스는 다른 모든 구성 요소가 렌더링 입자, 시간 카운터 등을 가져올 수있는 인터페이스를 상속해야합니다.

다음에는 다른 물리 객체를위한 하나의 구성 요소가 필요합니다 ("물리"인터페이스를 구현하고 기본 클래스의 "실제 객체 참조"로 추가하는 것을 잊지 마십시오. 그래서 그들을위한 물리학은 각각의 프레임으로 계산됩니다!), 하나는 배경을위한 것이고 다른 하나는 사용자 입력을위한 것입니다.

각각 특정 작업을 수행 할 여러 다른 작업을 추가 할 수도 있습니다.

+0

덕분에 공을 표현하기 위해 작은 클래스,하지만 - 작은 클래스는 X, Y 좌표로,

  • 볼을 플레이어를 대표하는 내가 실제로 필요한 것이 아니 었습니다. 나는 디자인과 관련된 것들을 원한다. – El3ctr0n1c4

  • +0

    디자인에 대한 정보를 포함하도록 업데이트되었습니다. 물론 여기에 글을 쓸 때 은 꼭해야 할 일은 아닙니다. 자신이 사용하게 될 아키텍처의 예를 제공하고자합니다. 이것은 관리자 (주)의 예입니다 - 구성 요소 (입력 및 객체) * 디자인 –