Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package CityGuessingGameFixed;
- import java.io.File;
- //Author:David Lakes
- //Title: City Guessing Game
- //Last update: Jan 21,2020
- //Purpose: You guess the city and get hints
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.ListIterator;
- import java.util.Random;
- import javax.sound.sampled.AudioSystem;
- import javax.sound.sampled.Clip;
- import javax.sound.sampled.LineUnavailableException;
- import javax.sound.sampled.UnsupportedAudioFileException;
- import javafx.application.Application;
- import javafx.beans.value.ChangeListener;
- import javafx.beans.value.ObservableValue;
- import javafx.event.EventHandler;
- import javafx.geometry.Insets;
- import javafx.scene.Scene;
- import javafx.scene.control.Button;
- import javafx.scene.control.Label;
- import javafx.scene.control.RadioButton;
- import javafx.scene.control.Toggle;
- import javafx.scene.control.ToggleGroup;
- import javafx.scene.image.Image;
- import javafx.scene.image.ImageView;
- import javafx.scene.input.MouseEvent;
- import javafx.scene.layout.GridPane;
- import javafx.stage.Stage;
- public class MainClass extends Application {
- Label hint1 = new Label("Hint 1");
- Label hint2 = new Label("Hint 2");
- public void start(Stage primaryStage) throws IOException {
- //Creates Tokyo object
- City tokyo = new City ("Tokyo", "Asia", null, null,"Japanese");
- InputStream tokyoStream = new FileInputStream("Tokyo.png");
- Image tokyoImage = new Image(tokyoStream,9000, 5000, false, false);
- tokyo.stream = tokyoStream;
- tokyo.image=tokyoImage;
- //Creates Cairo object
- City cairo = new City ("Cairo","Africa",null,null,"Arabic");
- InputStream cairoStream = new FileInputStream("Cairo.png");
- Image cairoImage = new Image(cairoStream,9000, 5000, false, false);
- cairo.stream = cairoStream;
- cairo.image=cairoImage;
- //Creates Berlin object
- City berlin = new City ("Berlin","Europe",null,null,"German");
- InputStream berlinStream = new FileInputStream("Berlin.png");
- Image berlinImage = new Image(berlinStream,9000, 5000, false, false);
- berlin.stream = berlinStream;
- berlin.image=berlinImage;
- //Creates NYC
- City NYC = new City ("New York City","North America",null,null, "English");
- InputStream nycStream = new FileInputStream("NYC.png");
- Image nycImage = new Image(nycStream,9000, 5000, false, false);
- NYC.stream = nycStream;
- NYC.image=nycImage;
- City cusco = new City("Cusco","South America",null,null,"Spanish");
- InputStream cuscoStream = new FileInputStream("Cusco.png");
- Image cuscoImage = new Image(cuscoStream,9000, 5000, false, false);
- cusco.stream = cuscoStream;
- cusco.image=cuscoImage;
- City rio = new City("Río de Janeiro","South America",null,null,"Portuguese");
- InputStream rioStream = new FileInputStream("Rio.png");
- Image rioImage = new Image(rioStream,9000, 5000, false, false);
- rio.stream = rioStream;
- rio.image=rioImage;
- City saoPaulo = new City("São Paulo","South America",null,null,"Portuguese");
- InputStream saoPaulStream = new FileInputStream("Sao Paulo.png");
- Image sauPauloImage = new Image(saoPaulStream,9000, 5000, false, false);
- saoPaulo.stream = saoPaulStream;
- saoPaulo.image=sauPauloImage;
- City lisbon = new City("Lisbon","Europe",null,null,"Portuguese");
- InputStream lisbonStream = new FileInputStream("Lisbon.png");
- Image lisbonImage = new Image(lisbonStream,9000, 5000, false, false);
- lisbon.stream = lisbonStream;
- lisbon.image=lisbonImage;
- City beijing = new City("Beijing","Asia",null,null,"Mandarin");
- InputStream beijingStream = new FileInputStream("Beijing.png");
- Image beijingImage = new Image(beijingStream,9000, 5000, false, false);
- beijing.stream = beijingStream;
- beijing.image=beijingImage;
- City shanghai = new City("Shanghai","Asia",null,null,"Shanghainese");
- InputStream shanghaiStream = new FileInputStream("Shanghai.png");
- Image shanghaiImage = new Image(shanghaiStream,9000, 5000, false, false);
- shanghai.stream = shanghaiStream;
- shanghai.image=shanghaiImage;
- City essaouira = new City("Essaouira","Africa",null,null,"Arabic");
- InputStream essaouiraStream = new FileInputStream("Essaouira.png");
- Image essaouiraImage = new Image(essaouiraStream,9000, 5000, false, false);
- essaouira.stream = essaouiraStream;
- essaouira.image=essaouiraImage;
- City nairobi = new City("Nairobi","Africa",null,null,"Swahili");
- InputStream nairobiStream = new FileInputStream("Nairobi.png");
- Image nairobiImage = new Image(nairobiStream,9000, 5000, false, false);
- nairobi.stream = nairobiStream;
- nairobi.image=nairobiImage;
- City agra = new City("Agra","Asia",null,null,"Hindi");
- InputStream agraStream = new FileInputStream("Agra.png");
- Image agraImage = new Image(agraStream,9000, 5000, false, false);
- agra.stream = agraStream;
- agra.image=agraImage;
- City paris = new City("Paris","Europe",null,null,"French");
- InputStream parisStream = new FileInputStream("Paris.png");
- Image parisImage = new Image(parisStream,9000, 5000, false, false);
- paris.stream = parisStream;
- paris.image=parisImage;
- City pyongyang = new City("Pyongyang","Asia",null,null,"Korean");
- InputStream pyongyangStream = new FileInputStream("Pyongyang.png");
- Image pyongyangImage = new Image(pyongyangStream,9000, 5000, false, false);
- pyongyang.stream = pyongyangStream;
- pyongyang.image=pyongyangImage;
- City seoul = new City("Seoul","Asia",null,null,"Korean");
- InputStream seoulStream = new FileInputStream("Seoul.png");
- Image seoulImage = new Image(seoulStream,9000, 5000, false, false);
- seoul.stream = seoulStream;
- seoul.image=seoulImage;
- City moscow = new City("Moscow","Europe",null,null,"Russian");
- InputStream moscowStream = new FileInputStream("Moscow.png");
- Image moscowImage = new Image(moscowStream,9000, 5000, false, false);
- moscow.stream = moscowStream;
- moscow.image=moscowImage;
- City stPetersburg = new City("St. Petersburg","Europe",null,null,"Russian");
- InputStream stPetersburgStream = new FileInputStream("St. Petersburg.png");
- Image stPetersburgImage = new Image(stPetersburgStream,9000, 5000, false, false);
- stPetersburg.stream = stPetersburgStream;
- stPetersburg.image=stPetersburgImage;
- City teotihuacan = new City("Teotihuacan","Latin America",null,null,"Spanish");
- InputStream teotihuacanStream = new FileInputStream("Teotihuacan.png");
- Image teotihuacanImage = new Image(teotihuacanStream,9000, 5000, false, false);
- teotihuacan.stream = teotihuacanStream;
- teotihuacan.image=teotihuacanImage;
- City havana = new City("Havana","Latin America",null,null,"Spanish");
- InputStream havanaStream = new FileInputStream("Havana.png");
- Image havanaImage = new Image(havanaStream,9000, 5000, false, false);
- havana.stream = havanaStream;
- havana.image=havanaImage;
- City barcelona = new City("Barcelona","Europe",null,null,"Spanish");
- InputStream barcelonaStream = new FileInputStream("Barcelona.png");
- Image barcelonaImage = new Image(barcelonaStream,9000, 5000, false, false);
- barcelona.stream = barcelonaStream;
- barcelona.image=barcelonaImage;
- City petra = new City("Petra","Middle East",null,null,"Arabic");
- InputStream petraStream = new FileInputStream("Petra.png");
- Image petraImage = new Image(petraStream,9000, 5000, false, false);
- petra.stream = petraStream;
- petra.image=petraImage;
- //Adds cities to an array list
- ArrayList<City> cityArray = new ArrayList<City>();
- Collections.addAll(cityArray, petra, barcelona,havana,teotihuacan,stPetersburg,moscow,seoul,pyongyang,paris,agra,nairobi,
- essaouira,shanghai,beijing,lisbon,saoPaulo,rio,cusco,NYC,berlin,tokyo,cairo);
- //Shuffles the cities
- Collections.shuffle(cityArray);
- //Creates an iterator to go through the array of cities
- ListIterator<City> iterator= cityArray.listIterator();
- //Creates an array of answers
- City answers[] = {iterator.next(),iterator.next(),iterator.next(),iterator.next()};
- //Generates a random number based on the array of answers
- Random r = new Random();
- int newRandomNumber=r.nextInt(answers.length);
- //Selects a winner based off the random number and stores the info into strings
- String city=answers[newRandomNumber].name;
- String cityLanguage=answers[newRandomNumber].language;
- String cityContinent=answers[newRandomNumber].continent;
- //Assigns answer choices from the array
- String button1String = answers[0].name;
- String button2String = answers[1].name;
- String button3String = answers[2].name;
- String button4String = answers[3].name;
- //Creates an image view and UI
- ImageView imageView = new ImageView(answers[newRandomNumber].image);
- imageView.setPreserveRatio(true);
- imageView.setFitWidth(400);
- imageView.setFitHeight(400);
- //import globe gif
- InputStream globeStream = new FileInputStream("Globe.gif");
- Image globeImage = new Image(barcelonaStream,9000, 5000, false, false);
- ImageView globe = new ImageView(globeImage);
- globe.setPreserveRatio(true);
- globe.setFitWidth(400);
- globe.setFitHeight(400);
- GridPane gridPane = new GridPane();
- gridPane.setPadding(new Insets(1, 1, 1, 1));
- gridPane.add(imageView,0,0);
- gridPane.add(globe,0,0);
- //Ensures answer options aren't duplicated and the correct answer gets an answer choice
- {
- //Resets hints after next button is hit
- hint1.setText("Hint 1");
- hint2.setText("Hint 2");
- //Assigns radio button there a string
- RadioButton r1 = new RadioButton(button1String);
- RadioButton r2 = new RadioButton(button2String);
- RadioButton r3 = new RadioButton(button3String);
- RadioButton r4 = new RadioButton(button4String);
- //Small test
- //System.out.println(button1String + button2String + button3String + button4String);
- Button btHint = new Button("Hint");
- Button btNext = new Button("Next");
- Label answer = new Label("");
- //Label hint1 = new Label("Hint 1");
- //Label hint2 = new Label("Hint 2");
- // add label
- gridPane.add(new Label("Which city is this?"), 0, 1);
- gridPane.add(r1,0,2);
- gridPane.add(r2,0,3);
- gridPane.add(hint1, 1, 3);
- gridPane.add(hint2, 1, 4);
- gridPane.add(r3,0,4);
- gridPane.add(r4,0,5);
- gridPane.add(btNext,0,7);
- gridPane.add(btHint,1,7);
- gridPane.add(answer, 0, 6);
- Scene scene1 = new Scene(gridPane, 650, 360);
- //Takes user selection and checks to see if it's correct
- ToggleGroup tg = new ToggleGroup();
- r1.setToggleGroup(tg);
- r2.setToggleGroup(tg);
- r3.setToggleGroup(tg);
- r4.setToggleGroup(tg);
- tg.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
- @Override
- public void changed(ObservableValue<? extends Toggle> ov, Toggle t, Toggle t1) {
- RadioButton chk = (RadioButton)t1.getToggleGroup().getSelectedToggle(); // Cast object to radio button
- String userAnswer = chk.getText();
- if (city == userAnswer) {
- answer.setText("Nice!");
- }else {
- answer.setText("Try again!");
- }
- }
- });
- //Button for hints
- btHint.setOnMousePressed(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- count++;
- //Counter determines number of hints the user used and reveals hints
- if (count==1) {
- hint1.setText("Most people here speak "+cityLanguage);
- }else if (count ==2) {
- hint2.setText("The city is in " + cityContinent);
- }
- }
- });
- primaryStage.setScene(scene1);
- primaryStage.show();
- //Restarts game
- btNext.setOnAction(e -> {
- try {
- count = 0;
- start(primaryStage);
- } catch (IOException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- });
- }
- }
- int count = 0;
- public static void main(String[] args) {
- File file = new File("AroundTheWorld.wav");
- Clip song = null;
- try {
- song = AudioSystem.getClip();
- } catch (LineUnavailableException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- try {
- song.open(AudioSystem.getAudioInputStream(file));
- } catch (LineUnavailableException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (UnsupportedAudioFileException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- song.loop(Clip.LOOP_CONTINUOUSLY);
- Application.launch(args);
- Application.launch(args);
- }
- }
Add Comment
Please, Sign In to add comment