Go Down

Topic: Newbie Sketch--guess my number game (Read 1 time) previous topic - next topic

Sparkinman

Just a quick thanks to some of the code I've learned from all of you sifting through the forums.  I've had a little background in code and electronics for awhile now, but nothing is as much fun or quick as Arduino!
Figured I'd share my first sketch, a quick guess my number game played on a 20X4 LCD screen, using a pot as the input method (tried buttons but found them too tedious)..hope someone finds anything in value from it!  Any suggestions on how to clean up the code would be appreciated as well!
Code: [Select]

#include <LiquidCrystal.h>
#define BUTTON 7  // the input pin where the button is
int rndm; //our random number
int guessPin = 0; //our analog read pin for the guess
int val; //our button reader
int wronguess=0; //our variable for the number of guesses
int highscore=100; //our highscore variable
int lowscore=0; //our lowscore variable
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // initialize the library with the numbers of the interface pins

void setup() {
 
 lcd.begin(20, 4); // set up the LCD's number of columns and rows..remember rows start at 0
 pinMode(BUTTON, INPUT); //define our button as an input
  numbergen(); //call numbergen for first random number
 
}

void loop() {
 int guess = (analogRead(guessPin)/10); //here our analog pins read from 0-1023 we only need
                                        //a value of 0-100 so (1023/100)=10
if (guess > 100) guess=100; //This tells ensures it will never go over 100

  val = digitalRead(BUTTON); // read input value and store it

 lcd.setCursor(0,0); //set cursor spot on the top left
   lcd.print("  Guess My Number!  "); //give a title to the game
 
 lcd.setCursor(0, 1); //line 1 row 0
lcd.print("Number of Guesses"); //number of guesses
 lcd.setCursor(18,1); // move cursor to line 1 row 18
lcd.print(wronguess); //print the number of wrong guesses

lcd.setCursor (0,3); //line 3 row 0
lcd.print ("Best"); //print "best"
lcd.setCursor(5,3); // move cursor to line 3 row 5
lcd.print(highscore); //print the value of our highscore

lcd.setCursor (9,3); //line 3 row 9
lcd.print("Worst"); //print "worst"
lcd.setCursor(15,3); //line 3 row 15
lcd.print(lowscore); //print the value of our worst game

 lcd.setCursor(0,2); //line 2 row 0
 lcd.print ("Your Guess:"); //print "your guess"
 lcd.setCursor(12,2); //print our current guess
 
 if (guess<10){    //this if basically puts a 0 in front of single numbers so
                   // screen doesn't hold numbers when going from 2 digits to 3 digits
   lcd.print("0");
 lcd.print(guess);}
 else {
   lcd.print(guess); //if it's 10 or greater just print the number
 }
 
 if (val==HIGH) {   //if our button goes high (pressed) execute the following
 
  if (guess==rndm) { //if our guess matches the random number
    lcd.setCursor(0,0);
    lcd.print("     You got it!    "); //change the heading to a win
     if (wronguess<highscore) { //we're still in the if for winning, so update
                                 // the high score if it's better than the existing
      highscore=(wronguess+1);
    }
   
    if (wronguess>lowscore) {//we're still in the if for winning, so update
                                 // the low score if it's better than the existing
      lowscore=(wronguess+1);
    }
   
    delay (3000);
    lcd.clear(); //clear the lcd after 3 seconds
   
     
    wronguess=0; //reset our guess number
    numbergen(); //call for another random number and repeat
  }
 
  else {
    if (guess>rndm){ //if our guess is greater than the random number
   lcd.setCursor(0,0);
lcd.print("      Go LOWER      "); //print go lower
delay (1500);
  }
  if (guess<rndm){  //if our guess is lower than the random number
   lcd.setCursor(0,0);
lcd.print("      Go HIGHER     "); //print go higher
delay (1500);
  }
  wronguess=wronguess+1; //count our number of guesses
  }

}
}

void numbergen () { //our random number generator in it's simplest form
  //the numbers aren't so random using this function,
   // first number is always 7, and I forget the rest. As shown in other texts
   //uncommenting out the next line helps
   //randomSeed(analogRead(1)); //which reads the noise on an empty pin to create a "true random"
   rndm=random(100);
}


Go Up