User:HimpThePimp

That's right! I'm using my own talk page to pass homework stuff back and forth to myself from school to home. class Nim2 {		public static void main(String [ ] args) {		System.out.print("Welcome to Nim!\n\n\n"); EasyReader reader = new EasyReader; int turn = 0; String dummy; player p1 = new player; //creates as many human players as the user wants int numofplay =p1.inputNum("How many players?(1-30) ",1,30); int humans = p1.inputNum("How many of these are human?",												numofplay-9, numofplay); player pn[] = new player[numofplay]; System.out.print("\n"); //gives these players names and avatars for(int i = 0; i < humans; i++) {			System.out.print("What's your name player "+(i+1)+"? "); String tempstrg; tempstrg = reader.readLine; System.out.print("\nEnter a character to use as your"															+" avatar: "); char tempchar = reader.readChar; pn[i] = new player(tempstrg, tempchar); dummy = reader.readLine; System.out.print("\n"); }		for(int i = 0; i < numofplay-humans; i++) {			pn[i] = new AIplayer(i+1); }		//creates a new "columns" object, which the user sets columns j = new columns(p1); //mov will hold user inputs. After these are digested //pos will remember the position of the ">" int mov; int pos = 0; //Lets the user play until there are no more tokens while(j.Gameover==false) {			j.displaytok(pos,pn[turn%numofplay]); mov = pn[0].inputNum("", 1, 9); //If the user enters "5" it calls removetok if(mov==5) {				int oldMax = j.getmaxtok; if(j.removetok(pos)==true) {					turn++; AIplayer AI1 = new AIplayer(2); System.out.print(AI1.getNimSum(j)); if(oldMax - j.getmaxtok != 0) pos = j.fudge(pos); }			}			//moves ">" if(j.goodpos(pos + j.move(mov))==true) pos += j.move(mov); //	System.out.print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); }		turn--; System.out.print("After " + (turn+1) + " turns "						+ pn[turn%numofplay].getname						+ " lost the game!!\n\nWinner"); if(numofplay > 2) System.out.print("s"); System.out.print(": "); for(int i = 0; i < numofplay-1; i++) {			turn++; System.out.print(pn[turn%numofplay].getname + "\n       "); if(numofplay > 2) System.out.print(" "); }		System.out.print("\n"); } }

class player {	String name; char avatar; player {} player(String usename, char useavatar) {		name = usename; avatar = useavatar; }	String getname {return name;} char getavatar {return avatar;} public static int inputNum(String prompt, int min, int max) {		if (min < 0) min = 0; System.out.print(prompt); EasyReader reader = new EasyReader; String SNum = reader.readLine; int rValue; //not-a-number test try { Integer wrap = new Integer(SNum); rValue = wrap.intValue; } catch (NumberFormatException e)				{rValue = inputNum("\nNot a number.\n"								+ prompt, min, max);} //too big too small test if(rValue < min || rValue > max) rValue = inputNum("Must be greater than " + (min-1)						+ " and less than " + (max+1) + ".\n"						+ prompt, min, max); return rValue; }

public static int inputNum(String prompt, int min, int max, columns unused) {		if (min < 0) min = 0; System.out.print(prompt); EasyReader reader = new EasyReader; String SNum = reader.readLine; int rValue; //not-a-number test try { Integer wrap = new Integer(SNum); rValue = wrap.intValue; } catch (NumberFormatException e)				{rValue = inputNum("\nNot a number.\n"								+ prompt, min, max);} //too big too small test if(rValue < min || rValue > max) rValue = inputNum("Must be greater than " + (min-1)						+ " and less than " + (max+1) + ".\n"						+ prompt, min, max); return rValue; } } class AIplayer extends player {	AIplayer(int number) {		name = "Computer" + number; String temp = "" + number; avatar = temp.charAt(0); }

static int pow(int base, int exponent) {		Double result = new Double(Math.pow(base, exponent)); return result.intValue; }

int getNimSum(columns reference) {		int nimsum = 0; columns board = new columns(reference); for (int exp = 0; pow(2,exp) <= board.getmaxtok; exp++) {			int evnodd = 0; for (int col = 0; col < board.getcol; col++) {				evnodd += board.gettok(col) % pow(2,exp+1); if (board.gettok(col) % pow(2,exp+1) == 1) board.settok(col, board.gettok(col)-pow(2,exp)); }			if ((evnodd / pow(2,exp) % 2) == 1) nimsum += pow(2,exp); }		return nimsum; }

int choosePoint(columns board) {		int nimsum = getNimSum(board); int col = 0; for(int tokens = 0; tokens >= nimsum && col <= board.getcol; col++) tokens = board.gettok(col); return (board.getmaxtok - nimsum) * board.getcol + col; }

//	public static int inputNum(String hidden1, int hidden2, int hidden3, columns board) //	{ //		; //	} }

class columns {	int mycol; int[] mytok;

//creates a useless dummy class columns{} columns(columns image) {		mycol = image.getcol; mytok = image.mytok; }	int gettok(int col) {return mytok[col];} int getcol {return mycol;} void settok(int col, int tok) {mytok[col] = tok;} //asks the user to set columns(player play) {		//Sets "mycol" mycol = play.inputNum("How many columns do you want? ", 1, 20); System.out.print("\n"); //Sets "mytok" int [] toks = new int [mycol] ; for (int i = 0; i < mycol; i++) toks[i] = play.inputNum("Column "+ (i+1)						 + ": How many tokens do you want? ", 0, 50); mytok = toks; }	//returns the maximum tokens in all columns int getmaxtok {		int max = 0; for (int i = 0; i < mycol; i++) {			if (mytok[i] > max) max = mytok[i]; }		return max; }

//takes user input returns the change in position int move (int use) {		int val=0; if(use==7||use==8||use==9) val=-1*mycol; if(use==1||use==2||use==3) val=mycol; if(use==7||use==4||use==1) val--; if(use==9||use==6||use==3) val++; return val; }

//returns vertical position based on value int posv(int use) {return getmaxtok - use/mycol;}

//returns horizontal position based on value int posh(int use) {return use%mycol;}

//makes sure > is on the board boolean goodpos(int use) {		if(posh(use) >=0 && posh(use) < mycol		&& posv(use) > 0 && posv(use) <= getmaxtok) return true; else return false; }

int fudge (int pos) {		int fudgeNum = posh(pos) + (getmaxtok-mytok[posh(pos)]) * mycol; if(mytok[posh(pos)] == getmaxtok) //example: # ># - return fudgeNum; else								//example: # >- - return fudgeNum - mycol; }	//returns "true" when all tokens have been removed boolean Gameover {		for (int i = 0; i < mycol; i++) if(mytok[i] != 0) return false; return true; }

//removes tokens in a single column boolean removetok(int position) {		int col = posh(position); int tokens = posv(position)-1; if(tokens < mytok[col]) {			mytok[col] = tokens; return true; }		else return false; }

//display token set up	void displaytok(int point, player guy) {		//note that the a 3x3 board will look like /*	  0 1 2 ph		3  0 1 2 2 3 4 5		1  6 7 8  	   tok			*/ //pv and ph hold the ">"'s position int pv = posv(point); int ph = posh(point); System.out.println(guy.getname + "'s turn to move."); for (int i = getmaxtok; i > 0; i--) {				for (int j = 0; j < mycol; j++) {					if (pv==i&&ph==j) System.out.print(guy.getavatar); else System.out.print(" "); if(mytok[j] >= i)					System.out.print("# "); else System.out.print ("- "); }				System.out.print("\n"); } 	} }