Puggeprogram
May 22nd, 2009
Et lite program som kan brukes til å pugge (f.eks. XP prinsipper og Design Smells). Bare lag filer med file ekstensjonen pugg i samme folder.
import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Pugge { public static void main(String[] args) throws IOException { Map<String, Map<String,Boolean>> wordLists = new HashMap<String, Map<String,Boolean>>(); File f = new File("."); for(String filen : f.getCanonicalFile().list()) { if(filen.endsWith(".pugg")) wordLists.put(filen, getWords(filen)); } System.out.println("Velkommen! Hva vil du pugge?\n"); int tell = 1; for(String s : wordLists.keySet()) { System.out.println(tell++ + ". " + s.substring(0, s.length()-5)); } Scanner inn = new Scanner(System.in); System.out.print("\nSkriv inn valg: "); String tema = (String) wordLists.keySet().toArray()[Integer.parseInt(inn.nextLine())-1]; String temaEase = toProperCase(tema.substring(0, tema.length()-5)); Map<String,Boolean> ord = wordLists.get(tema); System.out.println("Da skal vi pugge " + temaEase + ". Vi har " + ord.size() + " ord i listen vår!\n"); int hints = 0; int forsok = 0; long startTid = System.currentTimeMillis(); while(true) { System.out.println("Ord du har klart til nå:"); // Skriver hvilke ord du har fått til int klart = 0; for (String ordet : ord.keySet()) if(ord.get(ordet)) { System.out.println(" - " + toProperCase(ordet)); klart ++; } // Skriver ut status if(klart == ord.size()) { System.out.println("\nGrattis! Det gikk fint. \"Bare\" " + hints + " hint og " + forsok + " forsøk i løpet av " + (int)((System.currentTimeMillis() - startTid)/1000) + " sekunder."); break; } else System.out.println("\nDu har klart " + klart + " av " + ord.size() + "\n"); // input System.out.print("$ "); String linje = inn.nextLine().toLowerCase(); // Om det er en kommando if(linje.equals("/h")) { for (String ordet : ord.keySet()) { if(!ord.get(ordet)) { int start = (int)(Math.random()*(ordet.length()-1)); int stopp = (int)(Math.random()*(ordet.length()-start)) + start+1; System.out.println(ordet.substring(start, stopp)); hints++; break; } } continue; } else if(linje.equals("/q")) break; // Riktig eller galt if(ord.get(linje) != null) ord.put(linje, true); else System.out.println("Fant ikke den..."); forsok++; } } private static String toProperCase(String inputString) { StringBuilder ff = new StringBuilder(); for(String f: inputString.split(" ")) { if(ff.length()>0) ff.append(" "); ff.append(f.substring(0,1).toUpperCase()).append(f.substring(1,f.length()).toLowerCase()); } return ff.toString(); } private static HashMap<String,Boolean> getWords(String filename) throws FileNotFoundException { Scanner s = new Scanner(new File(filename)); Map<String,Boolean> ord = new HashMap<String,Boolean>(); // Leser inn ord. Et per linje while(s.hasNextLine()) { ord.put(s.nextLine().toLowerCase().trim(), false); } return (HashMap<String, Boolean>) ord; } }
Related posts:
Categories: Annet Masterrelatert, Norwegian
