• Steam recently changed the default privacy settings for all users. This may impact tracking. Ensure your profile has the correct settings by following the guide on our forums.

My First "Game"

KezraPlanes

Just some dood
Yeah that's my main reason for using it over '\n'.

Well I'm just only starting so with experience I'm sure I'll make choices that better my code and opting for endl just might be one of them.

I'm aware that \n is more confusing, but in my learning stages always having to type "<< endl;" can be a bother sometimes (since I code with limited time mostly).

But thanks for the constructive criticism.

Well, I translated gp1 into Java, and it appears to work fine. Only ~20 typos, new personal best. Had to lookup random and user input codes from Google though. :p. I also had it the wrong way around, where the user would be guessing the number. Maybe a diagram isn't such a bad idea after all.

Code:
import java.io.*;
import java.util.*;

//Paul Colusso, 2010
//Java implementation of the gp1 "Number Guesser"

public class gp1
{
    
    String userEntry;

    public static void main(String[] args)
    {
        int userNumber;
        int cpuNumber;
        int triesCounter = 0;
        Random numberGuess = new Random();
        
        System.out.println("Welcome to Guess My Number\n\n");
        System.out.println("Enter your guess (between 100 & 1): ");
        userNumber = getUserInput();
        
        do
        {
            cpuNumber = numberGuess.nextInt(99) + 1;
            triesCounter++;
            if (userNumber < cpuNumber)
            {
                System.out.print("Too High! ");
            } else if (userNumber > cpuNumber) {
                System.out.print("Too Low! ");
            }
        } while (userNumber != cpuNumber);
        
        System.out.println("\n\nThe CPU guessed your number " + userNumber + " in " + triesCounter + " guesses");
    }
    
    public static int getUserInput()
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String userEntry;
        
        try
        {
            userEntry = br.readLine();
        } catch (IOException ioe)
        {
            System.out.println("Error!");
            System.exit(1);
            userEntry = "Failed";
        }
        return Integer.parseInt(userEntry);
    }
}

EDIT: It probably would have compiled fine in the hands of someone more experienced, but every time I see "ld: Symbol(s) not found" I run for the hills.

My app was ported to Java :D Well, at least part of it xD
 
Finished version :w00t:

Code:
import java.io.*;
import java.util.*;

//Paul Colusso, 2010
//improved Java implementation of the gp1 "Number Guesser"

public class guessMyNumber
{
    public static void main(String[] args)
    {        
        boolean quitState = false;
        System.out.println("\f\t\tWelcome to Guess My Number\n\n");
        modeSelector();
        do
        {
            System.out.println("\nPlay Again? Enter 1 to continue...");
            if (getUserInput() == 1)
                modeSelector();
            else
                quitState = true;
        } while (quitState = true);
                
        System.out.println("\nThank you for playing");
    }
    
    public static int getUserInput()
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String userEntry;
        
        try
        {
            userEntry = br.readLine();
        } catch (IOException ioe)
        {
            System.out.println("Error!");
            System.exit(1);
            userEntry = "";
        }
        return Integer.parseInt(userEntry); //Possible exception here
    }
    
    public static void cpuNumberGuessDumb()
    {
        int userNumber;
        int cpuNumber;
        int triesCounter = 0;
        Random numberGuess = new Random();
        
        System.out.println("Enter your guess (between 100 & 1): ");
        userNumber = getUserInput();
        
        do
        {
            cpuNumber = numberGuess.nextInt(99) + 1;
            triesCounter++;
            if (cpuNumber > userNumber)
                System.out.print("Too High! ");
            if (userNumber > cpuNumber)
                System.out.print("Too Low! ");
        } while (userNumber != cpuNumber);
        
        System.out.println("\n\nThe CPU guessed your number " + userNumber + " in " + triesCounter + " guesses");
    }
    
    public static void cpuNumberGuessSmart()
    {
        int userNumber;
        int cpuNumber;
        int triesCounter = 0;
        Random numberGuess = new Random();
        int cpuKnownFloor = 1;
        int cpuKnownCeiling = 100;
        
        System.out.println("Enter your guess (between 100 & 1): ");
        userNumber = getUserInput();
        
        do
        {
            cpuNumber = numberGuess.nextInt(cpuKnownCeiling) + cpuKnownFloor;
            triesCounter++;
            if (cpuNumber > userNumber)
            {
                System.out.print("Too High! ");
                cpuKnownCeiling = cpuNumber;
            } else if (userNumber > cpuNumber) {
                System.out.print("Too Low! ");
                cpuKnownFloor = cpuNumber;
            }
        } while (userNumber != cpuNumber);
        
        System.out.println("\n\nThe CPU guessed your number " + userNumber + " in " + triesCounter + " guesses");
    }
    
    public static void userNumberGuess()
    {
        int userNumber;
        int cpuNumber;
        int triesCounter = 0;
        Random numberGuess = new Random();
        
        cpuNumber = numberGuess.nextInt(99) + 1;
        
        
        do
        {
            System.out.println("Enter your guess (between 100 & 1): ");
            userNumber = getUserInput();
            triesCounter++;
            if (userNumber > cpuNumber)
            {
                System.out.print("Too High! ");
            } else if (userNumber < cpuNumber) {
                System.out.print("Too Low! ");
            }
        } while (userNumber != cpuNumber);
        
        System.out.println("\n\nYou Got It!\nIt only took you " + triesCounter + " goes!");
    }
    
    public static void modeSelector()
    {
        System.out.println("\fPlease select a game mode.\n1.Make the computer guess my number\n2.Make the computer guess, but more intelligently\n3.Make me guess\n4.Quit\n");
        switch (getUserInput())
        {
            case 1:
                cpuNumberGuessDumb();
                break;
            case 2:
                cpuNumberGuessSmart();
                break;
            case 3:
                userNumberGuess();
                break;
            case 4:
                System.exit(0);
            default:
                System.out.println("/nPlease select a valid entry");
        }
    }
}
 

slicer4ever

Coding random shit
Code:
int myOption;
cin >> myOption;
is very susceptible to buffer input overflow, instead u shoud do:
Code:
int myOption;
char buffer[50]; //at least ensures someone has to type 50 letters until they can cause a buffer input overflow.
cin >> buffer;
myOption = atoi(buffer);

this would at least stave off a buffer input overflow from someone making a stupid mistake, and davee pointed out the other big possible overflow point.

lastly, looking at your computer source u don't actually have him narrow into the guess, here's a way i'd do it:

Code:
...
int lowGuess=0;
int hiGuess=100;
int cpuGuess=0;
do{
	cpuGuess=lowGuess+rand()%(hiGuess-lowGuess);
	tries++;
	if (cpuNumber > userNumber){
		cout << "\n\nToo High!\n\n";
		hiGuess=cpuGuess;
	else if (cpuNumber < userNumber){
		cout << "\n\nToo Low!\n\n";
		lowGuess=cpuGuess;
	}
}while(cpuGuess!=userNumber); //note that this probably flys by, i'd consider adding a timer to slow down the computer input, else it probably looks like a blur when the computer guesses.
...

it's funny that u made a hiLow game, i was sitting at work bored last week and wrote one in notepad, i wish i had a compiler, but i don't want to get fired over installing a compiler on my workplaces computers.
 

KezraPlanes

Just some dood
Thanks for all the help you guys :p

I'm taking a break from learning 'till Monday (I don't wants a burnout), so today I'm coding somehthing with what I've learnt so far, and this weekend Ill rest
 

KezraPlanes

Just some dood
I stopped for a while. I'm focusing all my skills into design and I'm getting better and better at it... I just can't share it as freely. =\
 
Top