dwlakes

City Guessing Game

Jan 25th, 2022 (edited)
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 13.76 KB | None | 0 0
  1. package CityGuessingGameFixed;
  2.  
  3. import java.io.File;
  4.  
  5. //Author:David Lakes
  6. //Title: City Guessing Game
  7. //Last update: Jan 21,2020
  8. //Purpose: You guess the city and get hints
  9.  
  10. import java.io.FileInputStream;
  11. import java.io.IOException;
  12. import java.io.InputStream;
  13. import java.util.ArrayList;
  14. import java.util.Collections;
  15. import java.util.ListIterator;
  16. import java.util.Random;
  17.  
  18. import javax.sound.sampled.AudioSystem;
  19. import javax.sound.sampled.Clip;
  20. import javax.sound.sampled.LineUnavailableException;
  21. import javax.sound.sampled.UnsupportedAudioFileException;
  22.  
  23. import javafx.application.Application;
  24. import javafx.beans.value.ChangeListener;
  25. import javafx.beans.value.ObservableValue;
  26. import javafx.event.EventHandler;
  27. import javafx.geometry.Insets;
  28. import javafx.scene.Scene;
  29. import javafx.scene.control.Button;
  30. import javafx.scene.control.Label;
  31. import javafx.scene.control.RadioButton;
  32. import javafx.scene.control.Toggle;
  33. import javafx.scene.control.ToggleGroup;
  34. import javafx.scene.image.Image;
  35. import javafx.scene.image.ImageView;
  36. import javafx.scene.input.MouseEvent;
  37. import javafx.scene.layout.GridPane;
  38. import javafx.stage.Stage;
  39.  
  40. public class MainClass extends Application {
  41.    
  42.     Label hint1 = new Label("Hint 1");
  43.     Label hint2 = new Label("Hint 2");
  44.    
  45. public void start(Stage primaryStage) throws IOException {
  46.        
  47.         //Creates Tokyo object
  48.         City tokyo = new City ("Tokyo", "Asia", null, null,"Japanese");
  49.         InputStream tokyoStream = new FileInputStream("Tokyo.png");
  50.         Image tokyoImage = new Image(tokyoStream,9000, 5000, false, false);
  51.         tokyo.stream = tokyoStream;
  52.         tokyo.image=tokyoImage;
  53.        
  54.         //Creates Cairo object
  55.         City cairo = new City ("Cairo","Africa",null,null,"Arabic");
  56.         InputStream cairoStream = new FileInputStream("Cairo.png");
  57.         Image cairoImage = new Image(cairoStream,9000, 5000, false, false);
  58.         cairo.stream = cairoStream;
  59.         cairo.image=cairoImage;
  60.        
  61.         //Creates Berlin object
  62.         City berlin = new City ("Berlin","Europe",null,null,"German");
  63.         InputStream berlinStream = new FileInputStream("Berlin.png");
  64.         Image berlinImage = new Image(berlinStream,9000, 5000, false, false);
  65.         berlin.stream = berlinStream;
  66.         berlin.image=berlinImage;
  67.        
  68.         //Creates NYC
  69.         City NYC = new City ("New York City","North America",null,null, "English");
  70.         InputStream nycStream = new FileInputStream("NYC.png");
  71.         Image nycImage = new Image(nycStream,9000, 5000, false, false);
  72.         NYC.stream = nycStream;
  73.         NYC.image=nycImage;
  74.        
  75.         City cusco = new City("Cusco","South America",null,null,"Spanish");
  76.         InputStream cuscoStream = new FileInputStream("Cusco.png");
  77.         Image cuscoImage = new Image(cuscoStream,9000, 5000, false, false);
  78.         cusco.stream = cuscoStream;
  79.         cusco.image=cuscoImage;
  80.        
  81.         City rio = new City("Río de Janeiro","South America",null,null,"Portuguese");
  82.         InputStream rioStream = new FileInputStream("Rio.png");
  83.         Image rioImage = new Image(rioStream,9000, 5000, false, false);
  84.         rio.stream = rioStream;
  85.         rio.image=rioImage;
  86.        
  87.         City saoPaulo = new City("São Paulo","South America",null,null,"Portuguese");
  88.         InputStream saoPaulStream = new FileInputStream("Sao Paulo.png");
  89.         Image sauPauloImage = new Image(saoPaulStream,9000, 5000, false, false);
  90.         saoPaulo.stream = saoPaulStream;
  91.         saoPaulo.image=sauPauloImage;
  92.        
  93.         City lisbon = new City("Lisbon","Europe",null,null,"Portuguese");
  94.         InputStream lisbonStream = new FileInputStream("Lisbon.png");
  95.         Image lisbonImage = new Image(lisbonStream,9000, 5000, false, false);
  96.         lisbon.stream = lisbonStream;
  97.         lisbon.image=lisbonImage;
  98.        
  99.         City beijing = new City("Beijing","Asia",null,null,"Mandarin");
  100.         InputStream beijingStream = new FileInputStream("Beijing.png");
  101.         Image beijingImage = new Image(beijingStream,9000, 5000, false, false);
  102.         beijing.stream = beijingStream;
  103.         beijing.image=beijingImage;
  104.        
  105.         City shanghai = new City("Shanghai","Asia",null,null,"Shanghainese");
  106.         InputStream shanghaiStream = new FileInputStream("Shanghai.png");
  107.         Image shanghaiImage = new Image(shanghaiStream,9000, 5000, false, false);
  108.         shanghai.stream = shanghaiStream;
  109.         shanghai.image=shanghaiImage;
  110.        
  111.         City essaouira = new City("Essaouira","Africa",null,null,"Arabic");
  112.         InputStream essaouiraStream = new FileInputStream("Essaouira.png");
  113.         Image essaouiraImage = new Image(essaouiraStream,9000, 5000, false, false);
  114.         essaouira.stream = essaouiraStream;
  115.         essaouira.image=essaouiraImage;
  116.        
  117.         City nairobi = new City("Nairobi","Africa",null,null,"Swahili");
  118.         InputStream nairobiStream = new FileInputStream("Nairobi.png");
  119.         Image nairobiImage = new Image(nairobiStream,9000, 5000, false, false);
  120.         nairobi.stream = nairobiStream;
  121.         nairobi.image=nairobiImage;
  122.        
  123.         City agra = new City("Agra","Asia",null,null,"Hindi");
  124.         InputStream agraStream = new FileInputStream("Agra.png");
  125.         Image agraImage = new Image(agraStream,9000, 5000, false, false);
  126.         agra.stream = agraStream;
  127.         agra.image=agraImage;
  128.        
  129.         City paris = new City("Paris","Europe",null,null,"French");
  130.         InputStream parisStream = new FileInputStream("Paris.png");
  131.         Image parisImage = new Image(parisStream,9000, 5000, false, false);
  132.         paris.stream = parisStream;
  133.         paris.image=parisImage;
  134.        
  135.         City pyongyang = new City("Pyongyang","Asia",null,null,"Korean");
  136.         InputStream pyongyangStream = new FileInputStream("Pyongyang.png");
  137.         Image pyongyangImage = new Image(pyongyangStream,9000, 5000, false, false);
  138.         pyongyang.stream = pyongyangStream;
  139.         pyongyang.image=pyongyangImage;
  140.        
  141.         City seoul = new City("Seoul","Asia",null,null,"Korean");
  142.         InputStream seoulStream = new FileInputStream("Seoul.png");
  143.         Image seoulImage = new Image(seoulStream,9000, 5000, false, false);
  144.         seoul.stream = seoulStream;
  145.         seoul.image=seoulImage;
  146.        
  147.         City moscow = new City("Moscow","Europe",null,null,"Russian");
  148.         InputStream moscowStream = new FileInputStream("Moscow.png");
  149.         Image moscowImage = new Image(moscowStream,9000, 5000, false, false);
  150.         moscow.stream = moscowStream;
  151.         moscow.image=moscowImage;
  152.        
  153.         City stPetersburg = new City("St. Petersburg","Europe",null,null,"Russian");
  154.         InputStream stPetersburgStream = new FileInputStream("St. Petersburg.png");
  155.         Image stPetersburgImage = new Image(stPetersburgStream,9000, 5000, false, false);
  156.         stPetersburg.stream = stPetersburgStream;
  157.         stPetersburg.image=stPetersburgImage;
  158.        
  159.         City teotihuacan = new City("Teotihuacan","Latin America",null,null,"Spanish");
  160.         InputStream teotihuacanStream = new FileInputStream("Teotihuacan.png");
  161.         Image teotihuacanImage = new Image(teotihuacanStream,9000, 5000, false, false);
  162.         teotihuacan.stream = teotihuacanStream;
  163.         teotihuacan.image=teotihuacanImage;
  164.        
  165.         City havana = new City("Havana","Latin America",null,null,"Spanish");
  166.         InputStream havanaStream = new FileInputStream("Havana.png");
  167.         Image havanaImage = new Image(havanaStream,9000, 5000, false, false);
  168.         havana.stream = havanaStream;
  169.         havana.image=havanaImage;
  170.        
  171.         City barcelona = new City("Barcelona","Europe",null,null,"Spanish");
  172.         InputStream barcelonaStream = new FileInputStream("Barcelona.png");
  173.         Image barcelonaImage = new Image(barcelonaStream,9000, 5000, false, false);
  174.         barcelona.stream = barcelonaStream;
  175.         barcelona.image=barcelonaImage;
  176.        
  177.         City petra = new City("Petra","Middle East",null,null,"Arabic");
  178.         InputStream petraStream = new FileInputStream("Petra.png");
  179.         Image petraImage = new Image(petraStream,9000, 5000, false, false);
  180.         petra.stream = petraStream;
  181.         petra.image=petraImage;
  182.        
  183.        
  184.         //Adds cities to an array list
  185.       ArrayList<City> cityArray = new ArrayList<City>();
  186.       Collections.addAll(cityArray, petra, barcelona,havana,teotihuacan,stPetersburg,moscow,seoul,pyongyang,paris,agra,nairobi,
  187.             essaouira,shanghai,beijing,lisbon,saoPaulo,rio,cusco,NYC,berlin,tokyo,cairo);
  188.      
  189.      
  190.             //Shuffles the cities
  191.             Collections.shuffle(cityArray);
  192.             //Creates an iterator to go through the array of cities
  193.             ListIterator<City> iterator= cityArray.listIterator();
  194.            
  195.             //Creates an array of answers
  196.             City answers[] = {iterator.next(),iterator.next(),iterator.next(),iterator.next()};
  197.            
  198.            
  199.            
  200.             //Generates a random number based on the array of answers
  201.             Random r = new Random();
  202.             int newRandomNumber=r.nextInt(answers.length);
  203.            
  204.             //Selects a winner based off the random number and stores the info into strings
  205.               String city=answers[newRandomNumber].name;
  206.               String cityLanguage=answers[newRandomNumber].language;
  207.               String cityContinent=answers[newRandomNumber].continent;
  208.            
  209.               //Assigns answer choices from the array
  210.             String button1String = answers[0].name;
  211.             String button2String = answers[1].name;
  212.             String button3String = answers[2].name;
  213.             String button4String = answers[3].name;
  214.            
  215.              
  216.             //Creates an image view and UI
  217.            
  218.             ImageView imageView = new ImageView(answers[newRandomNumber].image);
  219.             imageView.setPreserveRatio(true);
  220.             imageView.setFitWidth(400);
  221.             imageView.setFitHeight(400);
  222.            
  223.             //import globe gif
  224.             InputStream globeStream = new FileInputStream("Globe.gif");
  225.             Image globeImage = new Image(barcelonaStream,9000, 5000, false, false);
  226.            
  227.             ImageView globe = new ImageView(globeImage);
  228.             globe.setPreserveRatio(true);
  229.             globe.setFitWidth(400);
  230.             globe.setFitHeight(400);
  231.            
  232.            
  233.             GridPane gridPane = new GridPane();
  234.             gridPane.setPadding(new Insets(1, 1, 1, 1));
  235.             gridPane.add(imageView,0,0);
  236.             gridPane.add(globe,0,0);
  237.             //Ensures answer options aren't duplicated and the correct answer gets an answer choice
  238.             {
  239.                
  240.                 //Resets hints after next button is hit
  241.                 hint1.setText("Hint 1");
  242.                 hint2.setText("Hint 2");
  243.                
  244.             //Assigns radio button there a string
  245.             RadioButton r1 = new RadioButton(button1String);
  246.             RadioButton r2 = new RadioButton(button2String);
  247.             RadioButton r3 = new RadioButton(button3String);
  248.             RadioButton r4 = new RadioButton(button4String);
  249.            
  250.             //Small test
  251.             //System.out.println(button1String + button2String + button3String + button4String);
  252.            
  253.             Button btHint = new Button("Hint");
  254.             Button btNext = new Button("Next");
  255.             Label answer = new Label("");
  256.             //Label hint1 = new Label("Hint 1");
  257.             //Label hint2 = new Label("Hint 2");
  258.            
  259.            
  260.      
  261.             // add label
  262.             gridPane.add(new Label("Which city is this?"), 0, 1);
  263.             gridPane.add(r1,0,2);
  264.             gridPane.add(r2,0,3);
  265.             gridPane.add(hint1, 1, 3);
  266.             gridPane.add(hint2, 1, 4);
  267.             gridPane.add(r3,0,4);
  268.             gridPane.add(r4,0,5);
  269.             gridPane.add(btNext,0,7);
  270.             gridPane.add(btHint,1,7);
  271.             gridPane.add(answer, 0, 6);
  272.            
  273.            
  274.            
  275.            
  276.             Scene scene1 = new Scene(gridPane, 650, 360);
  277.            
  278.            
  279.             //Takes user selection and checks to see if it's correct
  280.             ToggleGroup tg = new ToggleGroup();
  281.             r1.setToggleGroup(tg);
  282.             r2.setToggleGroup(tg);
  283.             r3.setToggleGroup(tg);
  284.             r4.setToggleGroup(tg);
  285.             tg.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
  286.                 @Override
  287.                 public void changed(ObservableValue<? extends Toggle> ov, Toggle t, Toggle t1) {
  288.  
  289.                     RadioButton chk = (RadioButton)t1.getToggleGroup().getSelectedToggle(); // Cast object to radio button
  290.                     String userAnswer = chk.getText();
  291.                     if (city == userAnswer) {
  292.                         answer.setText("Nice!");
  293.                     }else {
  294.                         answer.setText("Try again!");
  295.                     }  
  296.  
  297.                 }
  298.             });
  299.            
  300.            //Button for hints      
  301. btHint.setOnMousePressed(new EventHandler<MouseEvent>() {
  302.  
  303.   @Override
  304.   public void handle(MouseEvent event) {
  305.       count++;
  306.       //Counter determines number of hints the user used and reveals hints
  307.       if (count==1) {
  308.         hint1.setText("Most people here speak "+cityLanguage);
  309.       }else if (count ==2) {
  310.         hint2.setText("The city is in " + cityContinent);
  311.        
  312.       }
  313.   }
  314.  
  315. });
  316.            
  317.             primaryStage.setScene(scene1);
  318.             primaryStage.show();
  319.            
  320.             //Restarts game
  321.             btNext.setOnAction(e -> {
  322.                 try {
  323.                     count = 0;
  324.                     start(primaryStage);
  325.                 } catch (IOException e1) {
  326.                     // TODO Auto-generated catch block
  327.                     e1.printStackTrace();
  328.                 }
  329.             });                  
  330.  
  331. }
  332. }
  333.          
  334.  
  335. int count = 0;
  336.  
  337.  
  338.     public static void main(String[] args) {
  339.         File file = new File("AroundTheWorld.wav");
  340.         Clip song = null;
  341.         try {
  342.             song = AudioSystem.getClip();
  343.         } catch (LineUnavailableException e) {
  344.             // TODO Auto-generated catch block
  345.             e.printStackTrace();
  346.         }  
  347.         try {
  348.             song.open(AudioSystem.getAudioInputStream(file));
  349.         } catch (LineUnavailableException e) {
  350.             // TODO Auto-generated catch block
  351.             e.printStackTrace();
  352.         } catch (IOException e) {
  353.             // TODO Auto-generated catch block
  354.             e.printStackTrace();
  355.         } catch (UnsupportedAudioFileException e) {
  356.             // TODO Auto-generated catch block
  357.             e.printStackTrace();
  358.         }
  359.  
  360.         song.loop(Clip.LOOP_CONTINUOUSLY);
  361.         Application.launch(args);
  362. Application.launch(args);
  363.    
  364.     }
  365.    
  366. }
  367.  
Add Comment
Please, Sign In to add comment