100% found this document useful (1 vote)
5K views

Assassin Manager

The document describes an AssassinManager class that models an assassin killing ring game. The class contains fields to track the current killing ring, previous node, last killed node, and graveyard. Methods are provided to initialize the game with player names, check for a winner, determine if a player is still active, and allow a player to be killed by updating the appropriate nodes.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
5K views

Assassin Manager

The document describes an AssassinManager class that models an assassin killing ring game. The class contains fields to track the current killing ring, previous node, last killed node, and graveyard. Methods are provided to initialize the game with player names, check for a winner, determine if a player is still active, and allow a player to be killed by updating the appropriate nodes.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
You are on page 1/ 4

package _100304;

public class AssassinManager {


AssassinNode killingRing ;
AssassinNode curr ;
AssassinNode graveyard;
AssassinNode prev;
AssassinNode lastKilled;

//Constructor
public AssassinManager(String[] names){
if(names.length == 0){
throw new IllegalArgumentException();
}
killingRing = new AssassinNode(names[0]);
curr = killingRing;
// System.out.println("names.length" + names.length);
for(int i = 1; i < names.length; i++){
curr.next = new AssassinNode(names[i]);
// curr.killer = curr.next.name;
curr = curr.next;
}
curr.next = killingRing;
// curr.killer = killingRing.name;
curr = killingRing;
//initialize the prev
while(curr.next != killingRing){
curr = curr.next;
}
prev = curr;
curr = killingRing;

//initialize killers
while(curr.next != killingRing){
curr.killer = prev.name;
curr = curr.next;
prev = prev.next;
}
curr.killer = killingRing.name;
curr = killingRing;
}

//printKillRing
public void printKillRing(){
if(curr == null){
return;
}
while(curr.next != killingRing){
System.out.println(curr.name + " is stalking " +
curr.next.name);
curr = curr.next;
}
System.out.println(curr.name + " is stalking " +
killingRing.name);
curr = killingRing;
}
//printGraveyard()
AssassinNode graveyardCurr;
public void printGraveyard(){
graveyardCurr = graveyard;
if(graveyard == null){
return;
}
while(graveyardCurr.next != null){
System.out.println(graveyardCurr.name + " was killed by " +
graveyardCurr.killer);
graveyardCurr = graveyardCurr.next;
}
System.out.println(graveyardCurr.name + " was killed by " +
graveyardCurr.killer);
}
//killRingContains(String name)
public boolean killRingContains(String name){
while(curr.next != killingRing){
//System.out.println(curr.name.toLowerCase()+" == " +
name.toLowerCase());
if(curr.name.toLowerCase().equals(name.toLowerCase())){
curr = killingRing;
return true;
}else{
curr = curr.next;
}
}
if(curr.name.toLowerCase().equals(name.toLowerCase())){
curr = killingRing;
return true;
}
curr = killingRing;
return false;
}

//graveyardContains(String name)
public boolean graveyardContains(String name){
while(graveyardCurr.next != null){

if(graveyardCurr.name.toLowerCase().equals(name.toLowerCase())){
return true;
}
}
return false;
}

//gameOver()
public boolean gameOver(){
return (killingRing.next == killingRing);
}

//winner()
public String winner(){
if(!gameOver()){
return null;
}else{
return killingRing.name;
}
}

//kill
// public void kill(String name){
// if(!killRingContains(name)){
// throw new IllegalArgumentException();
// }
// if(gameOver()){
// throw new IllegalStateException();
// }
// //kill the 1st
// if(killingRing.name.toLowerCase().equals(name.toLowerCase())){
// curr = curr.next;
// killingRing.next = null;
// if(graveyard == null){
// graveyard = killingRing;
// graveyardCurr = graveyard;
// }else{
// graveyardCurr.next = killingRing;
// }
// prev.next = curr;
// killingRing = curr;
// return;
// }
// while(curr.next != killingRing){
// //find the matching name
// if(curr.name.toLowerCase().equals(name.toLowerCase())){
// //update graveyard list
// if(graveyard == null){
// graveyard = curr;
// graveyardCurr = graveyard;
// }else{
// graveyardCurr.next = curr;
// }
//
// prev.next = curr.next;
// curr = killingRing;
// graveyardCurr.next = null;
// System.out.println("killingRing " + killingRing.name);
// return;
// }else{
// prev = prev.next;
// curr = curr.next;
// }
// }
// //kill the last one
// if(curr.name.toLowerCase().equals(name.toLowerCase())){
// prev.next = curr.next;
// if(graveyard == null){
// graveyard = curr;
// graveyardCurr = graveyard;
// }else{
// graveyardCurr.next = curr;
// }
//
// graveyardCurr.next = null;
// curr = killingRing;
// return;
// }
// }

//update graveyard
public void graveyardUpdate(AssassinNode curr){
if(graveyard == null){
graveyard = curr;
lastKilled = curr;
}else{
lastKilled.next = curr;
lastKilled = lastKilled.next;
}
}
//killing
public void kill(String name){
//kill the 1st person in the ring
if(killingRing.name.toLowerCase().equals(name.toLowerCase())){
graveyardUpdate(killingRing);
killingRing = killingRing.next;
prev = prev.next;
curr = killingRing;
System.out.println("prev " + prev.name);
prev.next = killingRing;
lastKilled.next = null;
return;
}
//kill the middle one
curr = killingRing.next;
prev = prev.next;
System.out.print("prev name" + prev.name);
while(curr.next != killingRing){
if(curr.name.toLowerCase().equals(name.toLowerCase())){
graveyardUpdate(curr);
prev.next = curr.next;
lastKilled.next = null;
curr = killingRing;
return;
}else{
curr = curr.next;
prev = prev.next;
}
}

//kill the last one


graveyardUpdate(curr);
prev.next = killingRing;
lastKilled.next = null;
curr = killingRing;
return;
}
}

You might also like