2014-02-26 2 views
0

게임용 리더 보드에 알고리즘을 구현하는 중입니다.하지만 이제는 막혔습니다.리더 보드 만들기?

  • 2 명이 즐길 수있는 게임입니다.
  • 리더 보드는 상위 5 명의 플레이어를 표시합니다.
  • 악보는 외부 .txt 파일에 참조로 저장됩니다.

또한 리더 보드 또는 패자의 승자 점수 만 고려해야 할지를 결정할 수 없다고 덧붙일 수 있습니다.

예 : 플레이어 1은 줄리엣입니다. 플레이어 2는 로미오입니다. 경기가 끝나면 줄리엣의 점수는 로미오의 점수보다 큽니다.

줄리엣 점수 또는 리더십 점수 만 평가해야합니까? 현재 내 알고리즘은 승자의 점수 만 고려합니다.

현재로서는 JLabel만을 사용하여 점수를 표시 할 생각이지만, 가장 효율적인 방법은 아닌지 잘 모르겠습니다. 나는 JTable을 고려하고있다. 사용자가 메뉴에 새 일치/반환을 시작

1)/게임 종료 :

그래서 여기 내 현재의 알고리즘의 새로운 : (새 게임 (점수가 남아 있지만 보드가 리셋 나는 4 옵션을 제공) 경기, 메뉴, 종료 (모든 재설정))

public class Game 
{ 
    //This class also holds the code for the operation of the game 

    if (event.getSource() == newmatch)//or menu or exit 
    { 
     if (p1score != 0 || p2score != 0) 
     { 
      Leaderboard x; 

      if (p1score > p2score) 
      { 
       x = new Leaderboard (player1name, p1score); 
      } 
      else 
      { 
       x = new Leaderboard (player2name, p2score); 
      } 
     } 

     else 
     { 
      //some code 
      //This check is whether the game ends up in a draw/or both the users' scores   are == 0 
     } 
    } 
} 

2) 이름을 & 점수 Leaderboard 클래스 저장합니다.

public class Leaderboard { 
    //This class is where I originally planned to write the code that will perform the evaluation of the scores 

    String playerid; 
    int playerscore; 

     public Leaderboard(String name, int score) 
     { 
      playerid = name; 
      playerscore = score; 
     } 

} 

3) 다음 인트 p는 매우 확신 할 수 없지만 점수에 대해서는 ArrayList을 작성하는 것입니다. 플레이어의 이름에 관한 부분이 누락되었습니다. 잘 접근 할 수 있을지 잘 모르니까요. 그 이후의 문제는 내가 의미하는 바를 얻으면 점수를 선수의 이름과 일치시키는 것입니다.

예를 들면 득점이 같은

안나 = 1

파멜라 = 5

개비 = 3

분류 : 5, 3, 1 파멜라은 높은 점수를 가지고, 그러나 그녀의 점수와 함께 그녀의 이름을 어떻게 표시 할 수 있습니까?

4) 나는 점수의 ArrayList이 비어 있는지 확인하는 체커를 가지고 있으며, 그렇다면 자동으로 플레이어의 이름과 점수를 표시합니다 (첫 번째 플레이어 쌍의 경우).

if (board.isEmpty()) 
{ 
    label1.setText(winnername); 
    scorelabel1.setText(winnerscore); 
} 

else 
{ 
    // 
} 

이 내 머리에서 무슨 버즈의 전체 많이 그리고 지금은 내가 진행하는 방법을 알고하지 않습니다

그것은이 같은입니다.

이것은 분명히 초보자의 질문이며 아마도 '큰'대답이 필요하지만 간단히 몇 가지 힌트/제안을 요청할뿐입니다.

+0

먼저, Player 클래스를 만들고, String 이름과 int 점수 및 기타 주요 플레이어 정보를 만듭니다. 'Comparable '인터페이스를 구현하고 점수를 비교하는'compareTo (Player other)'메소드를 제공하십시오. –

+0

@HovercraftFullOfEels 그래, 감사하겠다 – user3026693

+0

'.txt' 파일 대신에'java.util.Preferences'도 고려해야합니다. – trashgod

답변

2

모든 플레이어의 모든 점수를 텍스트 파일에 저장하는 것은 좋지 않습니다. 언제든지 텍스트 파일에는 상위 5 명의 플레이어와 점수 만 포함되어 있어야합니다.

LeaderBoard를 현재 LeaderBoard로 지정하고 이미 상위 5 개 점수를 포함하고 있습니다. 새 점수를 추가해야하는 경우이 방법을 사용할 수 있습니다.

min = minimum scorer in the leaderBoard 
if(player1 > min){ 
    remove min from leaderBoard 
    add player1 to the leaderBoard 
} 
min = minimum scorer in the leaderBoard 
if(player2 > min){ 
    remove min from leaderBoard 
    add player2 to the leaderBoard 
} 

이렇게하면 언제든지 리더 보드에 상위 5 명의 득점자가 표시됩니다. 또한 두 선수의 점수도 포함됩니다.

+1

'java.util.SortedMap 'java.util.Preferences'가 지원하는 곳에서 작동합니다. – trashgod

+0

@trashgod 왜 대답을 게시 하시겠습니까? – MCCCS

+0

@MCCCS : 어디서 붙어 있는지 명확하지 않습니다. 이 질문을 인용하여 질문하십시오. 자세한 내용은 [ask]를 참조하십시오. – trashgod