xantarion Skrevet 13. januar 2007 Del Skrevet 13. januar 2007 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)? Lenke til kommentar
CruellaDeVille Skrevet 13. januar 2007 Del Skrevet 13. januar 2007 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
rusolvan Skrevet 18. januar 2007 Del Skrevet 18. januar 2007 (endret) 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 18. januar 2007 av rusolvan Lenke til kommentar
ZoRaC Skrevet 22. februar 2007 Del Skrevet 22. februar 2007 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
CruellaDeVille Skrevet 22. februar 2007 Del Skrevet 22. februar 2007 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
ZoRaC Skrevet 22. februar 2007 Del Skrevet 22. februar 2007 Jo, men om man legger inn en sniffer eller proxy på egen maskin, så vil man vel se hvilken URL appleten sender highscore'en til, og dermed kunne manipulere den? Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå