473,659 Members | 2,626 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Java Stones Game

1 New Member
I am trying to write a game where there is 13 stones and you play against the computer to make sure that you don't take the last stone. You or the computer (depending on the turn) is allowed to take 1, 2, or 3 stones during their turn.

I am kind of lost at the moment. I have several methods and I want to send several things between them. One is who is playing and the other is how many stones there are left. I am also not sure if I am just writing it correctly, for in the main method I put:
Expand|Select|Wrap|Line Numbers
  1. if (goesFirst == HUMAN)
  2.             {    
  3.                 DoComputerTurn(left);
  4.             }    
  5.             else 
  6.             { 
  7.                 DoHumanTurn(left);
  8.             }
  9.  
  10.  
However, I do not believe that the left is suppose to be in there.
Expand|Select|Wrap|Line Numbers
  1. import java.util.Scanner;
  2. import java.util.Random;
  3. public class Stones 
  4. {
  5.     static int HUMAN = 0;
  6.     static int COMPUTER = 1;
  7.     static int STONES =13; 
  8.     static Scanner keyboard = new Scanner(System.in);
  9.     static int choice = 0;
  10.     static int left = 0;
  11.     static Random generator = new Random ();
  12.  
  13.     public static void main (String[]args)
  14.     {
  15.         ShowInstructions();
  16.         String prompt = "Would you like to play 13 Stones (1 for yes, 2 for no)?";
  17.         while (Again(prompt))
  18.         {
  19.  
  20.             int goesFirst = GetCoinToss ();
  21.             PlayGame (goesFirst);
  22.             SwitchPlayer (goesFirst);
  23.             if (goesFirst == HUMAN)
  24.             {    
  25.                 DoComputerTurn(left);
  26.             }    
  27.             else 
  28.             { 
  29.                 DoHumanTurn(left);
  30.             }
  31.  
  32.  
  33.  
  34.  
  35.  
  36.         }
  37.  
  38.     }
  39.  
  40.     public static void ShowInstructions ()
  41.     {
  42.         System.out.println ("Welcome to the 13 Stones game. \nI hope you are ready to play against me. \nThere is 13 stones in front of you. The first player is to remove either 1, 2, or 3 stones. \nThen the next player will remove either 1, 2, or 3 stones. \nThe person to pick up the last stone losses. \nGood luck!");
  43.  
  44.     }
  45.  
  46.     public static boolean Again (String prompt)
  47.     {
  48.         System.out.println (prompt);
  49.         choice = keyboard.nextInt();
  50.         return (choice == 1);
  51.  
  52.  
  53.  
  54.  
  55.  
  56.     }
  57.     public static int GetCoinToss()
  58.     {
  59.  
  60.         final int heads = 0;
  61.         final int tails = 1;
  62.         System.out.println ("Call the coin toss...");
  63.         String enter = new String (keyboard.nextLine());
  64.         String call = new String (keyboard.nextLine ());
  65.         int toss = generator.nextInt(2);
  66.         if (((call.equalsIgnoreCase("Heads")) && (toss == heads)) || ((call.equalsIgnoreCase("Tails")) && (toss == tails)))        
  67.         {
  68.             System.out.println ("You got lucky. So I guess you go first. Choose the number of stones you want.");
  69.             return HUMAN;
  70.  
  71.         }
  72.         else 
  73.         {
  74.             System.out.println ("Ha! You lost the coin toss! I go first.");
  75.             return COMPUTER;
  76.         }
  77.  
  78.     }    
  79.  
  80.     public static int PlayGame(int whoseTurn)
  81.     {
  82.         if (whoseTurn == COMPUTER)
  83.         { 
  84.             int compTakes = generator.nextInt(3) +1 ;
  85.             int left = STONES - compTakes;
  86.             System.out.println ("I took " + compTakes + " stones. There is " + left + " stones left. Your turn.");
  87.             return COMPUTER;
  88.  
  89.         }
  90.         else 
  91.         { 
  92.             int humanTakes = keyboard.nextInt();
  93.             while ((humanTakes> 3) || (humanTakes<0))
  94.             {
  95.                 System.out.println ("Trying to cheat, eh? Well, you can't! Try again.");
  96.                 humanTakes = keyboard.nextInt ();
  97.             }
  98.             left  = STONES - humanTakes;
  99.             System.out.println ("You took " + humanTakes + " stones. There is " + left + " stones left. My turn!");
  100.             return HUMAN;
  101.         }
  102.  
  103.     }
  104.  
  105.     public static int SwitchPlayer (int whoseTurn)
  106.     {
  107.         if ( whoseTurn == COMPUTER)
  108.         { 
  109.             whoseTurn = HUMAN; 
  110.         }
  111.         else 
  112.         {    
  113.             whoseTurn = COMPUTER;
  114.         }
  115.         return whoseTurn;
  116.  
  117.     }
  118.     public static int DoHumanTurn (int STONES)
  119.     {
  120.         int stonesPicked = 0;
  121.         System.out.println ("There is " +  STONES + " stones left. Please enter the amount of stones you would like to take.");
  122.         stonesPicked = keyboard.nextInt();
  123.         while ((stonesPicked < 1) || (stonesPicked > 0))
  124.         {
  125.             System.out.println ("So you think you can cheat, eh? Well you can't! Enter the number you want to take again.");
  126.             stonesPicked = keyboard.nextInt();
  127.  
  128.         }
  129.         int stonesRemaining = stonesPicked;
  130.  
  131.         return stonesRemaining;
  132.  
  133.  
  134.     }
  135.     public static int DoComputerTurn (int STONES)
  136.     {
  137.         int compTakes = generator.nextInt(3) +1 ;
  138.         int left = STONES - compTakes;
  139.         System.out.println ("I took " + compTakes + " stones. There is " + left + " stones left. Your turn.");
  140.     }
  141.  
  142.     }
  143.  
  144.  
  145.  
  146.  
Thank you.
Oct 30 '08 #1
1 4646
r035198x
13,262 MVP
Can you ask a more specific question? Does the program compile/run correctly?
If not what is the current behavior vs expected behavior?
Oct 30 '08 #2

Sign in to post your reply or Sign up for a free account.

Similar topics

21
4406
by: BlackHawke | last post by:
My name is Nick Soutter, I own a small game development company (www.aepoxgames.net) making our first game (www.andromedaonline.net) in java. I am writing because we are having a very serious problem, and I was hoping someone might have thoughts.
23
3642
by: BlackHawke | last post by:
Hello! This is my second post. Ppl really helped me with the first. I hope there are answers for this one as well I own a game company (www.aepoxgames.net) releasing the beta for our first sci-fi space game in about 2 weeks (www.andromedaonline.net) We have multiple servers, but the game engine (Game Server Program) is a Java program (don't ask why) on a windows 2003 enterprise system with dual
11
9243
by: DrUg13 | last post by:
In java, this seems so easy. You need a new object Object test = new Object() gives me exactly what I want. could someone please help me understand the different ways to do the same thing in C++. I find my self sometimes, trying Object app = Object(); Object *app = Object(); Object app = new Object();
23
3469
by: coinjo | last post by:
In "Thirteen Stones" game, two players alternately take 1, 2, or 3 stones from a pile of 13 stones until no stones are left. The last player to pick up a stone is the winner. I need to make a program that simulates the "Thirteen stones" game. My program should alternately ask the players to select how many stones they wish to remove from the pile. If the selection is valid (1, 2, or 3 stones), the selected number of stones should be...
17
2936
by: meital | last post by:
There are three kinds of stones: red,green and blue. Each cell of the array contains one stone. The array needs to be sorted so that all the red stones will come first, then the blue ones and then all the green ones. There are N stones, as the number of cells in the array. switch(i,j)- switch the stone in the i-th place with the one in the j-th place. color(i)- reveals the color of the stone in the i-th place.
20
20355
by: NeedJavaHelp | last post by:
Hello everyone, first time poster here, bear with me. RuneScape is an online multiplayer game run by Java www.runescape.com. The game itself is run on the website and when you play the game for the first time, its files store on your pc. I've never had a problem untill its makers switched to Java Se (SUN Java). Normally, when you move to a new location / area in this game it brings up these words loading-please wait... and within 2 seconds...
2
2005
by: ALi Shaikh | last post by:
I already did the game once and it works but now I need to change it to add a function that will make the computer take player 1 turn and always win. heres the original #include<iostream.h> void main() { int nums, // stones left nump, // Number of stones picked up by player player;
10
2175
by: j0k3r | last post by:
Hiya, i'm trying to create a Go (the game) simulation in PHP, the problem is how to mark dead stones. each stone has some liberties wich are the empty territories nearby, when a group of stones is completly enclosed in stones of another color, is dead. here the example of what i've done so far: http://www.k4s.ch/test/sca/test.php p= player x,y = &reset to wipe
0
8428
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
8339
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
8851
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
8535
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
7360
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
6181
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
4338
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2757
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
1739
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.