All pastes #754767 Raw Edit

Miscellany

public text v1 · immutable
#754767 ·published 2007-10-30 06:24 UTC
rendered paste body
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Random;
import java.util.Scanner;



/*
 * GeneratePuzzle.java
 *
 * Version:
 *     $Id: GeneratePuzzle.java,v 1.2 2007/04/02 01:13:37 djm5320 Exp $
 *
 * Revisions:
 *     $Log: GeneratePuzzle.java,v $
 *     Revision 1.2  2007/04/02 01:13:37  djm5320
 *     second revision
 *
 *     Revision 1.1  2007/04/01 23:41:18  djm5320
 *     inititial revision
 *
 */
/**
 * @author danielmoore
 *
 */
public class GeneratePuzzle {

	/**
	 * [Insert class description here]
	 *
	 * @author danielmoore
	 */



	private Puzzle NewPuzzle;
	private char[][] puzzle;
	private String wordlist;
	
	public GeneratePuzzle(String savename, String listname, int row, int col){
		NewPuzzle = new Puzzle(row, col);
		System.out.println("Puzzle Created");
		puzzle = NewPuzzle.getPuzzle();
		wordlist = wordlist(listname);
		System.out.println("Wordlist Created");
		System.out.println(wordlist);
		generator(wordlist);
		System.out.println("Puzzle Generated");
		write(savename);
		System.out.println("Puzzle Written");
		System.out.println("Time to smoke pot");
	}
	public GeneratePuzzle(String savename, int row, int col){	
		NewPuzzle = new Puzzle(row, col);
		puzzle = NewPuzzle.getPuzzle();
		wordlist = wordlist();
		generator(wordlist);
		write(savename);
	}
	public String wordlist(String listname){
		String list = null;
		RandomAccessFile file;
		try {
			file = new RandomAccessFile(listname, "r");
			byte[] array = new byte[(int) file.length()];
			file.read(array);
			list = new String(array);
		} catch (FileNotFoundException e) {
			
			e.printStackTrace();
		} catch (IOException e) {
			
			e.printStackTrace();
		}
		
		return list;
	}
	public String wordlist(){
		String list = "";
		Scanner sc = new Scanner(System.in);
		System.out.println("Please enter your word list:");
		while(sc.hasNext()){	
			list+=sc.next();
		}
		
		return list; 
	}

	public void generator(String wordlist){
		System.out.println("generator()");
		String word;
		Scanner sc = new Scanner(wordlist);
		while(sc.hasNext()){
			word = sc.next();
			System.out.println("word: "+ word);
			place(word);
		}
	}
	

	public void place(String string){
		System.out.println("place()");
		Random num = new Random();
		String word = string;
		int count = word.length();
		int x = num.nextInt(puzzle.length);
		int y = num.nextInt(puzzle[0].length);
		while(puzzle[x][y] !='ø'){
			x = num.nextInt(puzzle.length-1);
			y = num.nextInt(puzzle[0].length-1);
		}
		int[] dir = direction();
		int incX = dir[0];
		int incY = dir[1];
		while(check(y, x, incX, incY, word) == false){
			dir = direction();
			incY = dir[1];
			incX = dir[0];
		}
		if(check(y,x,incX, incY, word)==true){
			for(int i = 0; i < word.length(); i++){
				puzzle[x][y] = word.charAt(i);
				x = (x+incX+puzzle.length)%puzzle.length;
				y = (y+incY+puzzle[0].length)%puzzle[0].length;
				
			}
			System.out.println("placed");
		}
	}
	
		public int[] direction(){
			System.out.println("direction()");
			int[] dir = new int[2];
			Random num = new Random();
			int rand = num.nextInt(8);
			switch (rand){
			case 0:
				dir[0] = -1;
				dir[1] = 0;
				break;
			case 1:
				dir[0] = -1;
				dir[1] = 1;
				break;
			case 2:
				dir[0] = 0;
				dir[1] = 1;
				break;
			case 3:
				dir[0] = 1;
				dir[1] = 1;
				break;
			case 4:
				dir[0] = 1;
				dir[1] = 0;
				break;
			case 5:
				dir[0] = 1;
				dir[1] = -1;
				break;
			case 6:
				dir[0] = 0;
				dir[1] = -1;
				break;
			case 7:
				dir[0] = -1;
				dir[1] = -1;
				break;
			}
			return dir;
		}

	public boolean check(int col, int row, int x, int y, String z){
		System.out.println("check()");
		boolean rEturn = false;
		String word = z;
		int incCol = x;
		int incRow = y;
		int COL = col;
		int ROW = row;
		if(incCol == 0 || incRow == 0){
			if(word.length() > puzzle.length || word.length() > puzzle[0].length){
				rEturn = false;
			}
			else{
				int wordLength = word.length();
				while(puzzle[ROW][COL] == 'ø' && wordLength>0){
					ROW = (ROW+incRow+puzzle.length)%puzzle.length;
					COL = (COL+incCol+puzzle[0].length)%puzzle[0].length;
					wordLength--;
				}
				if(wordLength==0){
					rEturn = true;
				}
			}
		}
		return rEturn;
		
	}
	public String toString(){
		System.out.println("toSring()");
		Random num = new Random();
		String string = ""+puzzle.length+"\n"+puzzle[0].length+"\n";
		for(int h = 0; h < puzzle[0].length; h++){
			for(int i = 0; i < puzzle.length; i++){
				if(puzzle[i][h]=='ø'){
					puzzle[i][h] = (char) ('A'+num.nextInt(25));
				}
			}
		}

		for(int h = 0; h < puzzle[0].length; h++){
			for(int i = 0; i < puzzle.length; i++){
				string += puzzle[i][h];
			}
			string += "\n";
		}
		System.out.println(string);
		string.toUpperCase();
		return string;
	}
	public void write(String savename){
		System.out.println("write()");
		BufferedWriter writer = null;
		try {
			writer = new BufferedWriter(new FileWriter(savename+".pz"));
			writer.write(toString());
			writer.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
	public static void main(String args[]){
		if(args.length == 3){
			String savename = args[0];
			int row = Integer.parseInt(args[1]);
			int col = Integer.parseInt(args[2]);
		
			GeneratePuzzle puzzle = new GeneratePuzzle(savename, col, row);
			
		}
		else if(args.length == 4){
			String savename = args[0];
			String listname = args[3];
			int row = Integer.parseInt(args[1]);
			int col = Integer.parseInt(args[2]);
		
			GeneratePuzzle puzzle = new GeneratePuzzle(savename, listname, col, row);
		}	
		else{
			System.err.println("Usage: sage: java GeneratePuzzle puzzle-name number-rows number-columns [wordfile-name]");
		}
	}
}