/** * JBoss, Home of Professional Open Source * Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual * contributors by the @authors tag. See the copyright.txt in the * distribution for a full listing of individual contributors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jboss.weld.environment.se.example.numberguess; import javax.annotation.PostConstruct; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; /** * This class contains the pure logic of the Number Guess game. On * initialization a random number will be selected. Multiple "guesses" as to * what that number might be can be made using the 'check' method. The user wins * if they can guess the selected number in the alloted amount of tries. * * @author Peter Royle */ @ApplicationScoped public class Game { public static final int MAX_NUM_GUESSES = 10; private Integer number; private int guess = 0; private int smallest = 0; @Inject @MaxNumber private int maxNumber; private int biggest; private int remainingGuesses = MAX_NUM_GUESSES; private boolean validNumberRange = true; @Inject Generator rndGenerator; public Game() { } public int getNumber() { return number; } public int getGuess() { return guess; } public void setGuess(int guess) { this.guess = guess; } public int getSmallest() { return smallest; } public int getBiggest() { return biggest; } public int getRemainingGuesses() { return remainingGuesses; } public boolean isValidNumberRange() { return validNumberRange; } public boolean isGameWon() { return guess == number; } public boolean isGameLost() { return guess != number && remainingGuesses <= 0; } public boolean check() { boolean result = false; if (checkNewNumberRangeIsValid()) { if (guess > number) { biggest = guess - 1; } if (guess < number) { smallest = guess + 1; } if (guess == number) { result = true; } remainingGuesses--; } return result; } private boolean checkNewNumberRangeIsValid() { return validNumberRange = ((guess >= smallest) && (guess <= biggest)); } @PostConstruct public void reset() { this.smallest = 0; this.guess = 0; this.remainingGuesses = 10; this.biggest = maxNumber; this.number = rndGenerator.next(); System.out.println("psst! the number is " + this.number); } }