Advertisement
Guest User

Nuke Game

a guest
Oct 25th, 2014
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 12.17 KB | None | 0 0
  1. object NuclearProgram extends App {
  2.   //Add different pop deaths for more densely pact countries.
  3.   //Add dicerolls for how much the enemy responds to your attack.
  4.   //Add army possibly.
  5.   //Add more countries.
  6.   //Add scripted events occurring on certain days.
  7.   //Possibly list nuclear armed nations at start so people have an easier time picking.
  8.     var nukes = 0
  9.     var army = 0
  10.     var e_army = 0
  11.     var enemy = ""
  12.     var ply = ""
  13.     var plyrus = false
  14.     var plyusa = false
  15.     var plyfra = false
  16.     var plyuk = false
  17.     var plychi = false
  18.     var n = 0
  19.     var nuke_state = Array("Russia","Soviet Union","United States","US","USA","France","United Kingdom","UK","Britain","China")
  20.     var e_nukes = 0
  21.     var rus_nukes = 39197
  22.     var us_nukes = 23368
  23.     var uk_nukes = 422
  24.     var fra_nukes = 360
  25.     var chi_nukes = 243
  26.     var ruspop = BigInt("277700000")
  27.     var uspop = BigInt("237000000")
  28.     var frapop = BigInt("56830000")
  29.     var ukpop = BigInt("56550000")
  30.     var chipop = BigInt("1051000000")
  31.     var plypop = BigInt("0")
  32.     var nukepop = ruspop + uspop + frapop + ukpop + chipop + plypop
  33.     var vaguepop = BigInt("4840000000")
  34.     var vaguepopend = BigInt("4840000000") - ruspop - uspop - frapop - ukpop - chipop - plypop  //3160920000
  35.     var total_deaths = BigInt("0")
  36.     var ply_deaths = BigInt("0")
  37.     var tooMany = false
  38.     var badName = false
  39.     var cont = false
  40.     var self_nuke = false
  41.     var month = 1
  42.     var year = 1985
  43.     var noNuke = false
  44.     var nukesFired = 0
  45.     var game = true
  46.    
  47.     def reset = {
  48.         nukes = 0
  49.         army = 0
  50.         e_army = 0
  51.         enemy = ""
  52.         ply = ""
  53.         plyrus = false
  54.         plyusa = false
  55.         plyfra = false
  56.         plyuk = false
  57.         plychi = false
  58.         n = 0
  59.         nuke_state = Array("Russia","Soviet Union","United States","US","USA","France","United Kingdom","UK","Britain","China")
  60.         e_nukes = 0
  61.         rus_nukes = 39197
  62.         us_nukes = 23368
  63.         uk_nukes = 422
  64.         fra_nukes = 360
  65.         chi_nukes = 243
  66.         ruspop = 277700000
  67.         uspop = 237000000
  68.         frapop = 56830000
  69.         ukpop = 56550000
  70.         chipop = 1051000000
  71.         plypop = 0
  72.         nukepop = ruspop + uspop + frapop + ukpop + chipop + plypop
  73.         vaguepop = BigInt("4840000000")
  74.         vaguepopend = BigInt("4840000000") - ruspop - uspop - frapop - ukpop - chipop - plypop  //3160920000
  75.         total_deaths = BigInt("0")
  76.         ply_deaths = BigInt("0")
  77.         tooMany = false
  78.         badName = false
  79.         cont = false
  80.         self_nuke = false
  81.         month = 1
  82.         year = 1985
  83.         noNuke = false
  84.         nukesFired = 0
  85.         game = true
  86.     }
  87.     def nations =   {
  88.         do  {
  89.             ply = readLine();
  90.             if (ply.equalsIgnoreCase("Russia") || ply.equalsIgnoreCase("Soviet Union")) {
  91.                 badName = false
  92.                 nukes = 39197
  93.                 plypop = 277700000
  94.                 ruspop = 0
  95.                 plyrus = true
  96.                 ply = "The Soviet Union"
  97.             }
  98.             else if (ply.equalsIgnoreCase("United States" ) || ply.equalsIgnoreCase("US") || ply.equalsIgnoreCase("USA"))   {
  99.                 badName = false
  100.                 nukes = 23368
  101.                 plypop = 237000000
  102.                 uspop = 0
  103.                 plyusa = true
  104.                 ply = "The United States of America"
  105.             }
  106.             else if (ply.equalsIgnoreCase("France"))    {
  107.                 badName = false
  108.                 nukes = 360  
  109.                 plypop = 56830000
  110.                 frapop = 0
  111.                 plyfra = true
  112.                 ply = "France"
  113.             }
  114.             else if (ply.equalsIgnoreCase("UK") || ply.equalsIgnoreCase("United Kingdom") || ply.equalsIgnoreCase("Britain"))   {
  115.                 badName = false
  116.                 nukes = 422  
  117.                 plypop = 56550000
  118.                 ukpop = 0
  119.                 plyuk = true
  120.                 ply = "The United Kingdom"
  121.             }
  122.             else if (ply.equalsIgnoreCase("China")) {
  123.                 badName = false          
  124.                 nukes = 243
  125.                 plypop = 1051000000
  126.                 chipop = 0
  127.                 plychi = true
  128.                 ply = "China"
  129.             }
  130.             else    {
  131.                 badName = true
  132.                 println(ply + " is not a nuclear state. Try again.")
  133.             }
  134.     } while (badName == true)
  135.     }
  136.     //This is where the army section would go if I decided to implement it.
  137.     def who_to_nuke =   {
  138.       do    {
  139.           println("Who do you want to nuke?")
  140.           enemy = readLine();
  141.           if (enemy.equalsIgnoreCase(ply))  {
  142.               println("You cannot nuke yourself. Try again.")
  143.               self_nuke = true
  144.           }
  145.           else  {self_nuke = false}
  146.       } while (self_nuke == true)
  147.     if (enemy.equalsIgnoreCase("nobody") || enemy.equalsIgnoreCase("wait")) {
  148.         noNuke = true
  149.         tooMany = false
  150.     }
  151.     else    {
  152.         tooMany = true
  153.     }  
  154.       while (tooMany == true)   {
  155.           println("You have " +nukes+ " nuclear weapons.")
  156.           println("How many nukes do you wish to launch?")
  157.           n = readInt();
  158.           enough_nukes;
  159.       }
  160.       if (noNuke == false)  {
  161.           nukes = nukes - n
  162.           nukesFired += n
  163.           println(ply + " attacked " + enemy+ " with " + n + " nuclear weapons.")
  164.      }
  165.     }
  166.    
  167.     def enough_nukes =  {
  168.       if (n > nukes)    {
  169.           println("You don't have that many nukes! Try again.")
  170.           tooMany = true
  171.       }
  172.       else  {
  173.           tooMany = false
  174.       }
  175.     }
  176.    
  177.     var r_e = false
  178.     var u_e = false
  179.     var f_e = false
  180.     var b_e = false
  181.     var c_e = false
  182.     def nuked = {
  183.         if (enemy.equalsIgnoreCase(nuke_state(0)) || enemy.equalsIgnoreCase(nuke_state(1))) { //rus
  184.             e_nukes = rus_nukes
  185.             r_e = true;u_e = false;f_e = false;b_e = false;c_e = false;noNuke = false
  186.  
  187.         }
  188.         else if (enemy.equalsIgnoreCase(nuke_state(2)) || enemy.equalsIgnoreCase(nuke_state(3)) || enemy.equalsIgnoreCase(nuke_state(4)))   { //usa
  189.             e_nukes = us_nukes
  190.             r_e = false;u_e = true;f_e = false;b_e = false;c_e = false;noNuke = false
  191.         }
  192.         else if (enemy.equalsIgnoreCase(nuke_state(5))) { //fra
  193.             e_nukes = fra_nukes
  194.             r_e = false;u_e = false;f_e = true;b_e = false;c_e = false;noNuke = false
  195.         }
  196.         else if (enemy.equalsIgnoreCase(nuke_state(6)) || enemy.equalsIgnoreCase(nuke_state(7)) || enemy.equalsIgnoreCase(nuke_state(8)))   {   //uk
  197.             e_nukes = uk_nukes
  198.             r_e = false;u_e = false;f_e = false;b_e = true;c_e = false;noNuke = false
  199.         }
  200.         else if (enemy.equalsIgnoreCase(nuke_state(9))) {   //chi
  201.             e_nukes = chi_nukes
  202.             r_e = false;u_e = false;f_e = false;b_e = false;c_e = true;noNuke = false
  203.         }
  204.         else    {
  205.           r_e = false;u_e = false;f_e = false;b_e = false;c_e = false;noNuke = false
  206.         }
  207.     }
  208.    
  209.     def response =  {
  210.       if (r_e == true || u_e == true || f_e == true || b_e == true || c_e == true)  {
  211.           if (e_nukes == 0) {
  212.               println(enemy.capitalize + " has depleted their nuclear stockpile and cannot retaliate.")
  213.               ply_deaths = 0
  214.           }
  215.           else if (n >= e_nukes)    {
  216.               println(enemy.capitalize + " has responded with " + e_nukes + " nuclear attacks.")
  217.               nukesFired += e_nukes
  218.               println()
  219.               ply_deaths = Math.abs(e_nukes * 150000)
  220.               plypop -= ply_deaths
  221.               total_deaths = Math.abs(nukes * 150000)
  222.               if (r_e == true)  {rus_nukes = 0}
  223.               else if (u_e == true) {us_nukes = 0}
  224.               else if (f_e == true) {fra_nukes = 0}
  225.               else if (b_e == true) {uk_nukes = 0}
  226.               else if (c_e == true) {chi_nukes = 0}
  227.              
  228.           }
  229.           else  {
  230.               println(enemy.capitalize + " has responded with " + n + " nuclear attacks.")
  231.               nukesFired += n
  232.               println()
  233.               e_nukes -= n
  234.               total_deaths = Math.abs(n * 150000) //15880
  235.               ply_deaths = total_deaths
  236.               plypop -= ply_deaths
  237.               if (r_e == true)  {rus_nukes = e_nukes}
  238.               else if (u_e == true) {us_nukes = e_nukes}
  239.               else if (f_e == true) {fra_nukes = e_nukes}
  240.               else if (b_e == true) {uk_nukes = e_nukes}
  241.               else if (c_e == true) {chi_nukes = e_nukes}
  242.           }
  243.       }
  244.       else  {
  245.           println(enemy.capitalize + " has no nuclear weapons and thus cannot retaliate!")
  246.           println()
  247.           ply_deaths = 0
  248.           total_deaths = n * 150000
  249.           vaguepopend -= total_deaths
  250.       }
  251.     }
  252.    
  253.     def deaths =    {
  254.         if (r_e == true)    { //rus
  255.             ruspop -= total_deaths
  256.             if (ruspop < 0) {total_deaths = 277700000; ruspop = 0}
  257.             else if (n > 28633) {total_deaths = 277700000; ruspop = 0}
  258.             println("Soviet population: " + ruspop + " Enemy casualties: " + total_deaths)
  259.         }
  260.         else if (u_e == true)   { //usa
  261.             uspop -= total_deaths
  262.             if (uspop < 0)  {total_deaths = 237000000; uspop = 0}
  263.             else if (n > 28633) {total_deaths = 237000000; uspop = 0}
  264.             println("American population: " + uspop + " Enemy casualties: " + total_deaths)
  265.         }
  266.         else if (f_e == true)   { //fra
  267.             frapop -= total_deaths
  268.             if (frapop < 0) {total_deaths = 56830000; frapop = 0}
  269.             else if (n > 28633) {total_deaths = 56830000; frapop = 0}
  270.             println("French population: " + frapop + " Enemy casualties: " + total_deaths)
  271.         }
  272.         else if (b_e == true)   {   //uk
  273.             ukpop -= total_deaths
  274.             if (ukpop < 0)  {total_deaths = 56550000; ukpop = 0}
  275.             else if (n > 28633) {total_deaths = 56550000; ukpop = 0}
  276.             println("United Kingdom population: " + ukpop + " Enemy casualties: " + total_deaths)
  277.         }
  278.         else if (c_e == true)   {   //chi
  279.             chipop -= total_deaths
  280.             if (chipop < 0) {total_deaths = 1051000000; chipop = 0}
  281.             else if (n > 28633) {total_deaths = 1051000000; chipop = 0}
  282.             println("Chinese population: " + chipop + " Enemy casualties: " + total_deaths)
  283.         }
  284.         else    {
  285.             println("Enemy population and casualties could not be determined.")
  286.             println("Theoretical casualties are up to " + total_deaths)
  287.         }
  288.         if  (plypop < 0 && plyrus == true)  {ply_deaths = 277700000; plypop = 0}
  289.         else if (plypop < 0 && plyusa == true)  {ply_deaths = 237000000; plypop = 0}
  290.         else if (plypop < 0 && plyfra == true)  {ply_deaths = 56830000; plypop = 0}
  291.         else if (plypop < 0 && plyuk == true)   {ply_deaths = 56550000; plypop = 0}
  292.         else if (plypop < 0 && plychi == true)  {ply_deaths = 1051000000; plypop = 0}
  293.         println("Your population: " + plypop + " Your casualties: " + ply_deaths)
  294.     }
  295.    
  296.     def cont_nuke = {
  297.         if (nukes == 0) {
  298.             println("No more nuclear weapons in stockpile. Operations discontinued. Press enter to continue.")
  299.             cont = false
  300.             game = false
  301.             readLine();
  302.         }
  303.         else if (plypop == 0)   {
  304.             println("Everybody in your country is dead! There is no way to launch any more nuclear weapons.")
  305.             cont = false
  306.             game = false
  307.         }
  308.         else    {
  309.             println("Continue nuclear operations? Y/N.")
  310.             var response = readLine();
  311.             if (response.equalsIgnoreCase("Y")) {cont = true;month += 1;monthcheck;}
  312.             else    {cont = false;game = false}
  313.         }
  314.     }
  315.     def monthcheck =    {
  316.         if (month > 12) {
  317.           month = 1
  318.           year += 1
  319.         }
  320.         else    {}
  321.     }
  322.     //start
  323.     def play    {
  324.         var i = 0
  325.         println("The date is 1/"+month+"/"+year+ ". The world is in the middle of a nuclear war.")
  326.         println("Enter a nuclear armed nation's name to play as.")
  327.         nations;
  328.         do  {
  329.             if (i > 0)  {
  330.                 println("The date is 1/"+month+"/"+year+".")
  331.             }
  332.             i += 1
  333.                     who_to_nuke;
  334.             if (noNuke == false)    {
  335.                 nuked;
  336.                 response;
  337.                 deaths;
  338.             }
  339.             else    {
  340.                 println("No nuclear weapons exchanged.")
  341.             }
  342.             cont_nuke;
  343.         } while (cont == true)
  344.     }
  345.     play;
  346.     var nukepopend = ruspop + uspop + frapop + ukpop + chipop + plypop
  347.     vaguepopend = vaguepopend + (ruspop + uspop + frapop + ukpop + chipop + plypop)
  348.     var world_deaths = vaguepop - vaguepopend
  349.     println("Type in a command to view statistics and other information. (Type 'help' to see a list of commands)")
  350.     var repeat = true
  351.     do  {
  352.         var stats = readLine();
  353.         if (stats.equalsIgnoreCase("help")) {
  354.             println("'help': Displays this menu.")       
  355.             println("'population': Displays statistics on the world populations.")
  356.             println("'nukes': Displays statistics on nukes fired and casualties.")
  357.             println("'replay': Re-sets all game statistics, restarts the game, and allows you to pick a new country.")
  358.             println("'terminate': Terminates the program.")
  359.         }
  360.         else if (stats.equalsIgnoreCase("population"))  {
  361.             println("           Population Statistics               ")
  362.             println("Original population of all nuclear powers: " +nukepop)
  363.             println("Current population of all nuclear powers: " +nukepopend)
  364.             println("Original population of the world: " +vaguepop)
  365.             println("Current population of the world: " +vaguepopend)
  366.         }      
  367.         else if (stats.equalsIgnoreCase("nukes"))   {
  368.             println(("         Nuclear Statistics         "))
  369.             println("There have been "+nukesFired+" nuclear weapons fired.")
  370.             println("They have resulted in "+world_deaths+" deaths.")
  371.         }
  372.         else if (stats.equalsIgnoreCase("replay"))  {
  373.           repeat = true
  374.           reset;
  375.           game = true
  376.           do    {play;} while (game == true)
  377.           println("Type in a command to view statistics and other information. (Type 'help' to see a list of commands)")
  378.         }
  379.         else if (stats.equalsIgnoreCase("terminate"))   {
  380.             repeat = false;
  381.             println("Program termianted.")
  382.         }
  383.         else    {
  384.             println("Invalid command.")
  385.         }
  386.     } while (repeat == true)
  387.     //4.84 Billion = TOTAL WORLD POP EVERY COUNTRY
  388. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement