diff options
| author | Aidan Ross <aross02@fairport.org> | 2023-05-28 21:05:30 -0400 | 
|---|---|---|
| committer | Aidan Ross <aross02@fairport.org> | 2023-05-28 21:05:30 -0400 | 
| commit | 92f0e69cc938a058805e41780cb8a1bc7e6abda1 (patch) | |
| tree | 1efe8b46e4db7d4bc9a4d112f310ffe3f0d79768 | |
| parent | 9d07f0eb68e7779e8868b18a51bee5f8eb23b31e (diff) | |
| download | NPEhero-92f0e69cc938a058805e41780cb8a1bc7e6abda1.tar.gz NPEhero-92f0e69cc938a058805e41780cb8a1bc7e6abda1.tar.bz2 NPEhero-92f0e69cc938a058805e41780cb8a1bc7e6abda1.zip | |
Removed unnecesary files in the gameplay class, as well as merged gameplay.score with main.scoreController such that score and combo are now displayed properly on the screen
| -rw-r--r-- | src/gameplay/Driver.java | 54 | ||||
| -rw-r--r-- | src/gameplay/Level.java | 106 | ||||
| -rw-r--r-- | src/gameplay/NoteField.java | 25 | ||||
| -rw-r--r-- | src/gameplay/Score.java | 52 | ||||
| -rw-r--r-- | src/gameplay/SongPlayer.java | 8 | ||||
| -rw-r--r-- | src/gameplay/newSongPlayer.java | 289 | ||||
| -rw-r--r-- | src/main/ScoreController.java | 61 | 
7 files changed, 60 insertions, 535 deletions
| diff --git a/src/gameplay/Driver.java b/src/gameplay/Driver.java deleted file mode 100644 index df11c31..0000000 --- a/src/gameplay/Driver.java +++ /dev/null @@ -1,54 +0,0 @@ -/*Name:	 - *Date: - *Period: - *Teacher: - *Description: - */ -package gameplay; - -import javafx.application.*; -import javafx.geometry.Side; -import javafx.scene.Scene; -import javafx.scene.image.Image; -import javafx.scene.layout.Background; -import javafx.scene.layout.BackgroundImage; -import javafx.scene.layout.BackgroundPosition; -import javafx.scene.layout.BackgroundRepeat; -import javafx.scene.layout.BackgroundSize; -import javafx.scene.layout.Pane; -import javafx.stage.Stage; - -public class Driver extends Application -{ - -    static Pane primaryPane = new Pane(); - -    public static void main(String[] args) -    { -        launch(args); - -    } -	@Override -	public void start(Stage primaryStage) throws Exception { -		Scene primaryScene = new Scene(primaryPane, 800, 600); -        primaryScene.getStylesheets().add("gui/style.css"); -        primaryStage.setScene(primaryScene); -        newSongPlayer player = new newSongPlayer(); -        primaryStage.setTitle("TEST"); -        primaryPane.getChildren().add(player); -        setBackground("assets/water.png");   -        primaryStage.show(); -        player.init(); -	} -	 -	  public static void setBackground(String url) -      { -          primaryPane.setBackground(new Background( -              new BackgroundImage( -                      new Image(url), -                      BackgroundRepeat.REPEAT, BackgroundRepeat.NO_REPEAT, -                      new BackgroundPosition(Side.LEFT, 0, true, Side.BOTTOM, 0, true), -                      new BackgroundSize(BackgroundSize.AUTO, BackgroundSize.AUTO, true, true, false, true) -              ))); -      } -} diff --git a/src/gameplay/Level.java b/src/gameplay/Level.java deleted file mode 100644 index 1d5ff1b..0000000 --- a/src/gameplay/Level.java +++ /dev/null @@ -1,106 +0,0 @@ -package gameplay; - -import javafx.application.Application; -import javafx.event.ActionEvent; -import javafx.event.EventHandler; -import javafx.geometry.Insets; -import javafx.scene.Scene; -import javafx.scene.control.Button; -import javafx.scene.effect.BlurType; -import javafx.scene.effect.DropShadow; -import javafx.scene.layout.AnchorPane; -import javafx.scene.layout.Background; -import javafx.scene.layout.BackgroundFill; -import javafx.scene.layout.BorderPane; -import javafx.scene.layout.CornerRadii; -import javafx.scene.layout.GridPane; -import javafx.scene.layout.Pane; -import javafx.scene.layout.StackPane; -import javafx.scene.paint.Color; -import javafx.scene.shape.Rectangle; -import javafx.scene.text.Font; -import javafx.scene.text.FontWeight; -import javafx.scene.text.Text; -import javafx.stage.Stage; -  -// will eventually extend pane -public class Level extends Pane { -    -  -    public Level() { - -        BorderPane background = new BorderPane(); -        Scene game = new Scene(background, 800, 600); -        GridPane blockGrid = new GridPane(); -        blockGrid.setBackground(new Background(new BackgroundFill(Color.BLACK, CornerRadii.EMPTY, Insets.EMPTY))); -        background.setCenter(blockGrid); -         -        blockGrid.maxWidthProperty().bind(game.heightProperty().multiply(0.53)); -        blockGrid.maxHeightProperty().bind(game.heightProperty()); -        System.out.println(game.heightProperty()); -         -        //blockGrid.setMaxHeight(700); -        //blockGrid.setMaxWidth(500); -        //blockGrid.setScaleX(1); -        //blockGrid.setScaleY(1); -        //blockGrid.scaleXProperty().bind(game.heightProperty().divide(1000)); -        //blockGrid.scaleYProperty().bind(game.heightProperty().divide(1000)); -        //blockGrid.hgapProperty().bind(blockGrid.heightProperty().divide(11)); -        //blockGrid.vgapProperty().bind(blockGrid.widthProperty().divide(21)); -        blockGrid.setVgap(10); -        blockGrid.setHgap(25); - -        int blocksize = 50; -        //AnchorPane b11 = new AnchorPane(); -        //b11.getChildren().add(new Block(Color.ORANGE, b11, 10)); -        Block b1 = new Block(Color.RED, blocksize, blocksize, 10); -        //b1.heightProperty().bind(blockGrid.heightProperty().divide((blockGrid.getColumnCount()*2)+1)); -        //b1.widthProperty().bind(blockGrid.widthProperty().divide((blockGrid.getRowCount()*2)+1)); - -        Block b2 = new Block(Color.BLUE, blocksize, blocksize, 10); -        //b2.heightProperty().bind(blockGrid.heightProperty().divide(21)); -        //b2.widthProperty().bind(blockGrid.widthProperty().divide(11)); - -        Block b3 = new Block(Color.GREEN, blocksize, blocksize, 10); -        //b3.heightProperty().bind(blockGrid.heightProperty().divide(21)); -        //b3.widthProperty().bind(blockGrid.widthProperty().divide(11)); - -        Block b4 = new Block(Color.YELLOW, blocksize, blocksize, 10); -        //b4.heightProperty().bind(blockGrid.heightProperty().divide(21)); -        //b4.widthProperty().bind(blockGrid.widthProperty().divide(11)); - -        Pane test = new Pane(); - -        Block b5 = new Block(Color.ORANGE, blocksize, blocksize, 10); -        DropShadow dropShadow = new DropShadow(); -        dropShadow.setRadius(200.0); -        dropShadow.setColor(Color.ORANGE); -        dropShadow.setBlurType(BlurType.GAUSSIAN); -        test.getChildren().add(b5); -        test.setEffect(dropShadow); - -        - -        blockGrid.add(b1, 0, 0); -        blockGrid.add(b2, 1, 0); -        blockGrid.add(b3, 0, 1); -        blockGrid.add(b4, 1, 1); -        blockGrid.add(test, 1, 2); - -        Button btn = new Button(); -        btn.setText("Test"); -        btn.setOnAction(new EventHandler<ActionEvent>()  -        { -            @Override -            public void handle(ActionEvent event)  -            { -                System.out.println("test"); -            } -        }); - -        background.setLeft(btn); - -        -         -    } -}
\ No newline at end of file diff --git a/src/gameplay/NoteField.java b/src/gameplay/NoteField.java deleted file mode 100644 index a954a2c..0000000 --- a/src/gameplay/NoteField.java +++ /dev/null @@ -1,25 +0,0 @@ -/*Name:	Guitar Hero Project - *Description: Contains the information for a single note on the field - */ -package gameplay; - -import javafx.animation.TranslateTransition; - -public class NoteField -{ -    private Block note; -    private TranslateTransition anim; - -    public NoteField(Block newNote, TranslateTransition newAnim) { -        note = newNote; -        anim = newAnim; -    } - -    public Block getNote() { -        return note; -    } - -    public TranslateTransition getAnim() { -        return anim; -    } -} diff --git a/src/gameplay/Score.java b/src/gameplay/Score.java deleted file mode 100644 index fa8ddfe..0000000 --- a/src/gameplay/Score.java +++ /dev/null @@ -1,52 +0,0 @@ -/*Name:	Guitar Hero Project - *Description: Handles all the scoring for playing songs - */ -package gameplay; - -import javafx.beans.property.IntegerProperty; - -public class Score -{ -    private int combo=0; -    private int comboMultiplier=1; -    private int score=0; -     -    public void perfect() { -        score += 300*comboMultiplier; -        System.out.println("Perfect!"); -    } -     -    public void good() { -        score += 100*comboMultiplier; -        System.out.println("Good"); -    } -     -    public void miss() { -        combo = 0; -        comboMultiplier = 1; -        System.out.println("Miss"); -    } -    public void combo() { -        combo++; -         -        if (combo == 2) { -            comboMultiplier = 2; -        } -         -        if (combo == 4) { -            comboMultiplier = 4; -        } -         -        if (combo == 8) { -            comboMultiplier = 8; -        } -    } -     -    public int getScore() { -        return score; -    } -     -    public int getCombo() { -        return combo; -    } -} diff --git a/src/gameplay/SongPlayer.java b/src/gameplay/SongPlayer.java index 10caf46..91221de 100644 --- a/src/gameplay/SongPlayer.java +++ b/src/gameplay/SongPlayer.java @@ -41,8 +41,7 @@ public class SongPlayer extends Pane {  	Timer timer;  	final int TIME = 1500; // delay for notes falling down the screen -	Score scoreCounter = new Score(); -	StringProperty scoreString = new SimpleStringProperty(); +	main.ScoreController scoreCounter = new ScoreController();  	Rectangle goalPerfect = new Rectangle();  	HBox buttonBox = new HBox(); @@ -103,7 +102,7 @@ public class SongPlayer extends Pane {  	public SongPlayer(main.Level lvl, Difficulty d, Pane p, ScoreController cntrl) {  		bpm = d.bpm;  		timer = new Timer(60); - +		scoreCounter = cntrl;  		try {  			loadSong(d.notes); @@ -283,14 +282,12 @@ public class SongPlayer extends Pane {  			if (distance < super.getHeight() / 16) {  				ft.setFromValue(Color.WHITE);  				ft.play(); -				scoreCounter.combo();  				scoreCounter.perfect();  				return 2;  			}  			if (distance < super.getHeight() / 5) {  				ft.setFromValue(Color.CYAN);  				ft.play(); -				scoreCounter.combo();  				scoreCounter.good();  				return 1;  			} @@ -301,4 +298,5 @@ public class SongPlayer extends Pane {  		}  		return -1;  	} +  }
\ No newline at end of file diff --git a/src/gameplay/newSongPlayer.java b/src/gameplay/newSongPlayer.java deleted file mode 100644 index 5bb4e9f..0000000 --- a/src/gameplay/newSongPlayer.java +++ /dev/null @@ -1,289 +0,0 @@ -package gameplay; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.Queue; - -import javafx.geometry.Pos; -import javafx.scene.input.KeyCode; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Pane; -import javafx.scene.layout.StackPane; -import javafx.scene.layout.VBox; -import javafx.scene.paint.Color; -import javafx.scene.shape.Rectangle; -import javafx.animation.*; -import javafx.util.*; -import main.Difficulty; -import main.ScoreController; - -public class newSongPlayer extends Pane { -	final int BPM = 80; //TEMPORARY BPM, this will be eventually read in from the metadata of the song - -	Timer timer = new Timer(BPM); -	final int TIME = 1500; // delay for notes falling down the screen - -	Score scoreCounter = new Score(); - -	Rectangle goalPerfect = new Rectangle(); -	HBox buttonBox = new HBox(); -	VBox polish = new VBox(); -	VBox place = new VBox(); - -	TButton dButton = new TButton(Color.RED, 50, 50, 5); -	Queue<NoteInfo> dSends = new LinkedList<NoteInfo>(); // Queue that dictates when to send the notes -	ArrayList<Block> dLane = new ArrayList<Block>(); // Array list containing all the notes currently on the field - -	TButton fButton = new TButton(Color.BLUE, 50, 50, 5); -	Queue<NoteInfo> fSends = new LinkedList<NoteInfo>(); -	ArrayList<Block> fLane = new ArrayList<Block>(); - -	TButton sButton = new TButton(Color.GREEN, 50, 50, 5); -	Queue<NoteInfo> spaceSends = new LinkedList<NoteInfo>(); -	ArrayList<Block> spaceLane = new ArrayList<Block>(); - -	TButton jButton = new TButton(Color.PURPLE, 50, 50, 5); -	Queue<NoteInfo> jSends = new LinkedList<NoteInfo>(); -	ArrayList<Block> jLane = new ArrayList<Block>(); - -	TButton kButton = new TButton(Color.YELLOW, 50, 50, 5); -	Queue<NoteInfo> kSends = new LinkedList<NoteInfo>(); -	ArrayList<Block> kLane = new ArrayList<Block>(); - -	/** -	 * Establishes what the chart for the song is going to look like -	 */ -	public void loadSong() { -		dSends.add(new NoteInfo(4.000)); -		dSends.add(new NoteInfo(4.333)); -		dSends.add(new NoteInfo(4.666)); -		fSends.add(new NoteInfo(5.000)); -		kSends.add(new NoteInfo(5.500)); -		spaceSends.add(new NoteInfo(6.000)); -		jSends.add(new NoteInfo(6.000)); -		jSends.add(new NoteInfo(6.250)); -		dSends.add(new NoteInfo(6.500)); -		jSends.add(new NoteInfo(6.750)); -		spaceSends.add(new NoteInfo(7.000)); -		fSends.add(new NoteInfo(7.500)); -		jSends.add(new NoteInfo(7.750)); -		spaceSends.add(new NoteInfo(8.000)); -		fSends.add(new NoteInfo(8.500)); -		jSends.add(new NoteInfo(8.500)); -		dSends.add(new NoteInfo(9.000)); -		spaceSends.add(new NoteInfo(9.000)); -		kSends.add(new NoteInfo(9.000)); -		spaceSends.add(new NoteInfo(9.500)); - -		kSends.add(new NoteInfo(10.000)); -		dSends.add(new NoteInfo(10.000)); -		kSends.add(new NoteInfo(10.333)); -		fSends.add(new NoteInfo(10.333)); -		kSends.add(new NoteInfo(10.666)); -		spaceSends.add(new NoteInfo(10.666)); -		dSends.add(new NoteInfo(11.000)); -		spaceSends.add(new NoteInfo(11.000)); -		dSends.add(new NoteInfo(11.333)); - -		jSends.add(new NoteInfo(11.333)); -		dSends.add(new NoteInfo(11.666)); -		kSends.add(new NoteInfo(11.666)); -		spaceSends.add(new NoteInfo(12.000)); -	} - -	public newSongPlayer(main.Level lvl, Difficulty d, Pane p, ScoreController cntrl) { -	} - -	public newSongPlayer() { -	} - -	public void init() { -		loadSong(); - -		Rectangle field = new Rectangle(50, 50, new Color(0, 0, 0, 0.7)); -		field.heightProperty().bind(this.getScene().getWindow().heightProperty()); -		field.widthProperty().bind(this.getScene().getWindow().widthProperty().divide(2.7).add(50)); - -		goalPerfect.heightProperty().bind(this.getScene().getWindow().heightProperty().divide(32)); -		goalPerfect.heightProperty().bind(this.getScene().getWindow().widthProperty()); - -		genButton(dButton); -		genButton(fButton); -		genButton(sButton); -		genButton(jButton); -		genButton(kButton); - -		this.getScene().setOnKeyPressed(e -> { -			if (e.getCode() == KeyCode.D) { -				checkNote(dLane, dButton); -			} -			if (e.getCode() == KeyCode.F) { -				checkNote(fLane, fButton); -			} -			if (e.getCode() == KeyCode.SPACE) { -				checkNote(spaceLane, sButton); -			} -			if (e.getCode() == KeyCode.J) { -				checkNote(jLane, jButton); -			} -			if (e.getCode() == KeyCode.K) { -				checkNote(kLane, kButton); -			} -			System.out.println("Score: " + scoreCounter.getScore() + "\nCombo: " + scoreCounter.getCombo() + "\n"); -		}); - -		buttonBox.setStyle("-fx-padding: 0;" + "-fx-border-style: solid inside;" -				+ "-fx-border-width: 0;" + "-fx-border-insets: 20;" -				+ "-fx-background-color: black;" + "-fx-opacity: 0.67;"); -		buttonBox.setAlignment(Pos.CENTER); -		buttonBox.getChildren().addAll(dButton, fButton, sButton, jButton, kButton); -		buttonBox.setSpacing(10); - -		polish.getChildren().addAll(field); -		polish.setAlignment(Pos.BASELINE_CENTER); - -		place.prefWidthProperty().bind(this.getScene().widthProperty()); -		place.prefHeightProperty().bind(this.getScene().heightProperty()); -		place.getChildren().addAll(buttonBox); -		place.setAlignment(Pos.BOTTOM_CENTER); -		place.setSpacing(10); - -		StackPane root = new StackPane(); -		root.getChildren().addAll(polish, place); - -		goalPerfect.setY(dButton.getY()); -		super.getChildren().addAll(root, goalPerfect); - -		gameLoop.start(); -	} - -	/** -	 * Checks if a note should be sent at the current time, and sends the note if it -	 * needs to be -	 *  -	 * @param sends the queue to check -	 * @param lane  the lane to send the note to -	 * @param pos   the x pos of the note to be sent -	 * @param c     the color of the sent note -	 */ -	public void sendNote(Queue<NoteInfo> sends, ArrayList<Block> lane, double pos, Color c) { -		if (sends.peek() != null && timer.time() > sends.peek().getTime()) { -			TranslateTransition anim = new TranslateTransition(Duration.millis(TIME)); - -			lane.add(new Block(c, 50, 50, 5)); -			int index = lane.size() - 1; -			sends.remove(); -			lane.get(lane.size() - 1).heightProperty().bind(this.getScene().getWindow().widthProperty().divide(16)); -			lane.get(lane.size() - 1).widthProperty().bind(this.getScene().getWindow().widthProperty().divide(16)); -			lane.get(lane.size() - 1).arcHeightProperty().bind(this.getScene().getWindow().widthProperty().divide(50)); -			lane.get(lane.size() - 1).arcWidthProperty().bind(this.getScene().getWindow().widthProperty().divide(50)); -			lane.get(lane.size() - 1).setX(pos); -			lane.get(index).setY(-lane.get(index).getHeight()); -			anim.setByY(this.getScene().getHeight() + lane.get(index).getHeight()); -			anim.setCycleCount(1); -			anim.setAutoReverse(false); -			anim.setNode(lane.get(lane.size() - 1)); -			anim.play(); - -			anim.setOnFinished(e -> { -				if (super.getChildren().removeAll(anim.getNode())){ -					scoreCounter.miss(); -					System.out.println(); -				} -			}); -			super.getChildren().add(lane.get(lane.size() - 1)); -		} -	} - -	/** -	 * Sets up the given button -	 *  -	 * @param button -	 */ -	public void genButton(TButton button) { -		button.heightProperty().bind(this.getScene().getWindow().widthProperty().divide(16)); -		button.widthProperty().bind(this.getScene().getWindow().widthProperty().divide(16)); -		button.arcHeightProperty().bind(this.getScene().getWindow().widthProperty().divide(50)); -		button.arcWidthProperty().bind(this.getScene().getWindow().widthProperty().divide(50)); -		button.strokeWidthProperty().bind(this.getScene().getWindow().widthProperty().divide(210)); -	} - -	/** -	 * The background test that is run on every frame of the game -	 */ -	AnimationTimer gameLoop = new AnimationTimer() { - -		@Override -		public void handle(long arg0) { -			sendNote(dSends, dLane, dButton.getLayoutX(), Color.RED); -			sendNote(fSends, fLane, fButton.getLayoutX(), Color.BLUE); -			sendNote(spaceSends, spaceLane, sButton.getLayoutX(), Color.GREEN); -			sendNote(jSends, jLane, jButton.getLayoutX(), Color.PURPLE); -			sendNote(kSends, kLane, kButton.getLayoutX(), Color.YELLOW); -		} -	}; - -	/** -	 * returns the pos in the lane array of the closest note to the goal -	 *  -	 * @param searchLane -	 * @return the position of the note -	 */ -	private int getClosestNote(ArrayList<Block> searchLane) { -		int pos = 0; - -		for (int i = 0; i < searchLane.size(); i++) { -			if (distanceToGoal(searchLane.get(i)) < distanceToGoal(searchLane.get(pos))) { -				pos = i; -			} -		} -		return pos; -	} - -	/** -	 * Returns the distance to the goal of the given note -	 *  -	 * @param note -	 * @return -	 */ -	private double distanceToGoal(Block note) { -		return Math.abs((this.getScene().getHeight() - note.getTranslateY()) - dButton.getY()); -	} - -	/** -	 * When the player hits the key, checks the quality of the hit -	 * @param lane the lane checking for a hit -	 * @param button the button checking for a hit -	 * @return 2 for a perfect hit, 1 for a good hit, 0 for a miss, and -1 if there are no notes to hit -	 */ -	private int checkNote(ArrayList<Block> lane, TButton button) { -		double distance = distanceToGoal(lane.get(getClosestNote(lane))); -		if (lane.size() > 0 && distance < this.getScene().getHeight() / 3) { - -			FillTransition ft = new FillTransition(Duration.millis(500), button); -			ft.setToValue(button.getColor()); - -			super.getChildren().removeAll(lane.get(getClosestNote(lane))); -			lane.remove(lane.get(getClosestNote(lane))); -			if (distance < this.getScene().getHeight() / 18) { -				ft.setFromValue(Color.WHITE); -				ft.play(); -				scoreCounter.combo(); -				scoreCounter.perfect(); -				return 2; -			} -			if (distance < this.getScene().getHeight() / 6) { -				ft.setFromValue(Color.CYAN); -				ft.play(); -				scoreCounter.combo(); -				scoreCounter.good(); -				return 1; -			} -			ft.setFromValue(Color.RED); -			ft.play(); -			scoreCounter.miss(); -			return 0; -		} -		return -1; -	} -}
\ No newline at end of file diff --git a/src/main/ScoreController.java b/src/main/ScoreController.java index a33c873..52907ad 100644 --- a/src/main/ScoreController.java +++ b/src/main/ScoreController.java @@ -5,12 +5,65 @@ import javafx.beans.property.StringProperty;  public class ScoreController{ -    int score = 0; -    int combo = 0; +    private int score = 0; +    private int combo = 0; +    private int comboMultiplier=1;      public StringProperty scoreProperty = new SimpleStringProperty("0");      public StringProperty comboProperty = new SimpleStringProperty("0");      /** +     * Called when the user performs a perfect hit +     */ +    public void perfect() { +        combo(); +        score += 300*comboMultiplier; +        scoreProperty.setValue(score+""); +        comboProperty.setValue(combo +""); +        System.out.println("Perfect!"); +    } + +    /** +     * called when the user performs an okay hit +     */ +    public void good() { +        combo(); +        score += 100*comboMultiplier; +        scoreProperty.setValue(score+""); +        comboProperty.setValue(combo+""); +        System.out.println("Good"); +    } + +    /** +     * Called when the user misses a note +     */ +    public void miss() { +        combo = 0; +        comboMultiplier = 1; +        scoreProperty.setValue(score+""); +        comboProperty.setValue(combo+""); +        System.out.println("Miss"); +    } + +    /* +     * Increments the combo by one +     */ +    private void combo() { +        combo++; +         +        if (combo == 2) { +            comboMultiplier = 2; +        } +         +        if (combo == 4) { +            comboMultiplier = 4; +        } +         +        if (combo == 8) { +            comboMultiplier = 8; +        } +    } + +    /**       * @return current score       */      public int getScore() @@ -27,7 +80,7 @@ public class ScoreController{      }      /** -     * @param newScore: the score to be set +     * @param newScore: the score to be set, only used in debug       */      public void setScore(int newScore)      { @@ -36,7 +89,7 @@ public class ScoreController{      }      /** -     * @param newCombo: the combo to be set +     * @param newCombo: the combo to be set, only used in debug       */      public void setCombo(int newCombo)      { | 
