Gå til innhold

Hvordan lager man Highscore liste?


Anbefalte innlegg

Videoannonse
Annonse
Hei.

 

Noen som vet hvordan man kan lage en highscore liste for en java applet, slik at man enkelt kan lagre/laste inn highscores?

 

Er det noen måte å gjøre dette på ved bare å bruke Java (uten bruk av php)?

 

:)

7714482[/snapback]

 

Du kan bruke et JTextArea til å printe dettte ut på, men du må ha noen form for permanent lagring, enten en tekstfil eller en database.

 

Jeg laget en highscore-tabell slik: (ikke permanent lagring, desverre - men da kan du - istedet for å laste array av brukere fra minnet laste inn fra fil)

 

Obs: lang kode

/**
* Klasse HighScore
* Klasse for å vise beste tid for brukere
* Listen sorteres setter beste tid
* @author Siv Hansen og Øistein Kristiansen
* INFO231 Våren 2006
*/
package gui;
// Importerer nødvendig biblioteker
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeSet;
import javax.swing.*;
import applet.*;
public class HighScore extends JDialog{
// Feltvariabler
// Tabellen hvor brukere er lagret
private Users players;
// Tekstområde som highscore-listen skrives ut
private JTextArea highScoreArea;
// Streng-tabell for merkelapper for ledetekster
private String[] labels = {"Spiller", "Beste tid", "Antall forsøk"};

/**
 * Konstruktør
 * @param title Tittel på vinduet
 * @param players Listen over brukere
 */
public HighScore(String title, Users players){
 super();
 // Tittel på viduet settes
 setTitle(title);
 // Størrelsen på vindu bestemmes
 setSize(500,300);
 // Panel for å legge highscore-listen på deklareres og initialiseres 
 JPanel panel = new JPanel();
 // Layout for panelet er borderLayout
 panel.setLayout(new BorderLayout());
 
 // Panel for overskriftere deklareres og initialiseres
 JPanel labelPanel = new JPanel();
 /* 
  * Overskriftspanel får GridLayout, med en rad, tre kolonner
 * og 5 px mellom rad og kolonner
 * */
 labelPanel.setLayout(new GridLayout(1,3,5,5));
 // JLabler for ledetekst deklareres og initialiseres og legges til panelet
 for(int i=0; i< labels.length; i++){
 	labelPanel.add(new JLabel(labels[i]));  
 }
 // Tekstområde for highscore-tabellen initialiseres
 highScoreArea = new JTextArea();
 // Listen over brukere deklareres
 this.players = players;
 // Hvis spillerlisten er ikke er tom fylles tekstområdet med verdier
 if(players.size()>0)
 	fillTextArea();	
 
 // Vindu får BorderLayout
 setLayout(new BorderLayout());
 // Ledetekst-panel legges til panelet
 panel.add(labelPanel, BorderLayout.NORTH);
 // Highscore-listen legges til panelet
 panel.add(highScoreArea, BorderLayout.CENTER);
 // Panelet legges til vinduet
 add(panel);
 // Standard close-operation - Hide on close
 setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
}

/**
 * Metode for å fylle tekstomårde med verdier
 */
private void fillTextArea(){
 // players, som er en TreeMap konverteres til et treeSet
 TreeSet mySet = players.sort();
 Iterator iter = mySet.iterator();
 // Løkke til å hente ut entries med verdier
 while (iter.hasNext()){	
 	// Castes til Map.Entry fra TreeSet
 	Map.Entry entry = (Map.Entry)iter.next();
 	// Castes til User
 	User user = (User)entry.getValue();
 	// Henter ut og skriver ut verdier for brukerene til highscorelisten.
 	highScoreArea.append(user.getName() + "\t\t" + StopWatch.getFormattedTime(user.getBestTime()) + "\t\t" +user.getNoOfTries()+ "\n");
 }
 // Det er ikke mulig å skrive til highscorelisten
 highScoreArea.setEditable(false);
}
}

Lenke til kommentar

Jeg lagde en svært enkel Higscore fil for en liten stund tilbake... Highscoren lagra jeg bare i en textfil slik som dette:

 

[navn] [poeng]

 

Der navn og poeng ble skilt fra hverandre med et mellomrom, dette gjør det lett å lese inn ved å f.eks lage Highscore-objekt av hver linje med et navn-atributt og et poeng-attributt og dermed lagre disse i en ArrayList. Nå blir det enkelt å lese, sjekke om ny highscore skal inn på lista, sortere og så skrive tilbake til fila når ny highscore er oppnådd..

 

tar ikke med koden her, men om du trenger hjelp til dette er det bare å spørre...

 

som CruellaDeVille også sier kan det være smart å bruke database til å lagre slike verdier... eks. xml.

Endret av rusolvan
Lenke til kommentar
  • 1 måned senere...

Jeg er ganske ny på applets, men er det slik at en applet kan få tilgang til filer på serveren direkte, eller åpne en database-tilkobling direkte, eller kjøres Applet'en direkte på klienten?

 

Skal lage spill jeg også, og ønsker en online highscoreliste, men lurer på hvordan jeg skal gjøre dette for å sikre at ingen kan "jukse" med highscoren via en URL-manipulering...? (jeg ser for meg at eneste løsning er at appleten kaller http://www.server.com/highscore.php?navn=Ola&score=100, og det er jo litt uheldig)

Lenke til kommentar
Jeg er ganske ny på applets, men er det slik at en applet kan få tilgang til filer på serveren direkte, eller åpne en database-tilkobling direkte, eller kjøres Applet'en direkte på klienten?

 

Skal lage spill jeg også, og ønsker en online highscoreliste, men lurer på hvordan jeg skal gjøre dette for å sikre at ingen kan "jukse" med highscoren via en URL-manipulering...? (jeg ser for meg at eneste løsning er at appleten kaller http://www.server.com/highscore.php?navn=Ola&score=100, og det er jo litt uheldig)

7996974[/snapback]

 

Når man lager en applet sender man ikke verdier i url, disse lagres i java virual machines minne eller noe slikt, så nei... url-manipulering kan de ikke gjøre.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...