My first game help (SOLVED)

Understanding the language, error messages, etc.

My first game help (SOLVED)

Postby naed » Thu Jun 02, 2016 1:32 pm

Hi all,

I just ordered my Gamebuino as encouragement to learn to code, so whilst waiting for it to ship I decided to try my hand at coding and running on an emulator... my first game is born :-)

simple enough game that tries to get you to test your reflexes by matching the required number

Code: Select all
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;

int RandNumber;
int number = 0;
int state;

const byte numbers[] PROGMEM = {64,32,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00000000,
B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B00000010,B00000000,
B00000000,B11100011,B11110000,B00110000,B00110000,B01111111,B10000010,B00000000,
B00000001,B11100111,B11111000,B00100000,B00010000,B01100001,B10000010,B10000000,
B00000011,B11100110,B00011000,B00100111,B10010000,B00000011,B10000011,B11000000,
B00000111,B01100110,B00011000,B00111100,B10010000,B00000111,B00000000,B10000000,
B00001110,B01100011,B11110000,B00000011,B10110000,B00001110,B00000000,B00000000,
B00001100,B01100011,B11110000,B00000010,B00100000,B00011100,B00000000,B00000000,
B00001111,B11110110,B00011000,B00000010,B00100000,B00111000,B00000000,B11110000,
B00001111,B11110110,B00011000,B00000011,B10110000,B01111111,B10000000,B10000000,
B00000000,B01100111,B11111000,B00111100,B10010000,B01111111,B10000000,B10000000,
B00000000,B01100011,B11110000,B00100111,B10010000,B00000000,B00000000,B11100000,
B00001110,B00000000,B00000000,B00100000,B00010000,B00000001,B11100000,B00010000,
B00010011,B00000000,B00000000,B00110000,B00110000,B00000000,B00100000,B00010000,
B00010101,B00000000,B10000000,B00011111,B11100000,B00000000,B01000000,B00010000,
B00010101,B00000001,B10000000,B00000000,B00000000,B00000000,B10000000,B11100000,
B00011001,B00000000,B10000000,B00000000,B00000000,B00000000,B10000000,B00000000,
B00001110,B00000000,B10000000,B00000000,B00000000,B00000000,B10000000,B00000000,
B00000000,B00000001,B11000000,B00000000,B00000000,B00000000,B00000000,B01110000,
B00000000,B00000000,B00000000,B00000000,B00000011,B11111110,B00000000,B10001000,
B00000000,B00000000,B00000000,B00111001,B11000010,B00100010,B11110111,B11010000,
B00111011,B10000000,B00000111,B01000110,B00100010,B10101010,B10001000,B10100000,
B00101110,B11111111,B11111101,B10101010,B10100010,B00100001,B10100010,B10110000,
B00100010,B10101000,B10001101,B10010010,B11100011,B10111101,B10111110,B10001000,
B00101000,B10101010,B00101100,B01011010,B10000000,B10100010,B11100011,B11111000,
B00101110,B10001011,B11101101,B01000110,B10000011,B10100000,B00000000,B00000000,
B00111011,B11111110,B00111100,B01111111,B10000010,B00100000,B00000000,B00000000,
B00000000,B00000000,B00000111,B10000000,B00000011,B11100000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
};

void setup(){
  // initialize the Gamebuino object
  gb.begin();
  RandNumber = random(10,100);
  gb.titleScreen(F(""), numbers);
  gb.popup(F("Hold A to play"), 20);
}

/*void num(){
do{
      gb.display.println(number);
          number = number + 1;    //test for number counter
      } while(number < 50);
}*/

void restart_game() {
  number = 0;
}

void loop(){
  if(gb.update()){
    gb.display.println("Number Game");  //print hello world
    gb.display.println("");
    gb.display.println("Target number");
    gb.display.println(RandNumber);     // display a random number
     


//if button A is held then increase value by 1 and display value
      if(gb.buttons.repeat(BTN_A,1)){
          number = number + 1;
      }

        gb.display.println(number); //show increasing number

// if random number is the same as this value show win
      if(RandNumber == number){
        gb.display.println("Win!!");
      }
      else if(number <= RandNumber){
        gb.display.println("Too low...");
      }
      else if(number >= RandNumber){
        gb.display.println("Too High...");
      }

      gb.display.println("Match number to win"); //show text
      gb.display.println("Press B to Restart"); //show text

// reset game code
      if (gb.buttons.pressed(BTN_B)) {  //Reset game by pressing B
        number = 0;                     //This also regenerates a random number
        RandNumber = random(10,100);
        gb.popup(F("reset"), 10);
      }
       
    if(gb.buttons.pressed(BTN_C)){    //exit to menu by pressing C
      restart_game();
      gb.titleScreen(F("Number game by NaeD"), numbers);
      RandNumber = random(10,100);
    }
  }
}


I can't figure out something that i'd like to add and was hoping to get some advice

1. how would I be able to start/stop the counter with a single button (i.e press A to start the counter then press A again to stop the counter)

I tried to add this to a while(1) function but the number only ever increases by one as the button is depressed

thanks in advance

(I've attached the HEX file of my game if anyone want to try it out)
Attachments
Numbergame.ino.zip
(13.57 KiB) Downloaded 291 times
Last edited by naed on Thu Jun 02, 2016 6:44 pm, edited 1 time in total.
User avatar
naed
 
Posts: 140
Joined: Tue May 31, 2016 3:18 pm

Re: My first game help

Postby clement » Thu Jun 02, 2016 4:00 pm

I modify code for count / stop count with a single button.

I hope this help you :)

Code: Select all
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;

int RandNumber;
int number = 0;
int state;

//add boolean value for check state
bool isActiveCounter;

const byte numbers[] PROGMEM = {64,32,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00000000,
B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B00000010,B00000000,
B00000000,B11100011,B11110000,B00110000,B00110000,B01111111,B10000010,B00000000,
B00000001,B11100111,B11111000,B00100000,B00010000,B01100001,B10000010,B10000000,
B00000011,B11100110,B00011000,B00100111,B10010000,B00000011,B10000011,B11000000,
B00000111,B01100110,B00011000,B00111100,B10010000,B00000111,B00000000,B10000000,
B00001110,B01100011,B11110000,B00000011,B10110000,B00001110,B00000000,B00000000,
B00001100,B01100011,B11110000,B00000010,B00100000,B00011100,B00000000,B00000000,
B00001111,B11110110,B00011000,B00000010,B00100000,B00111000,B00000000,B11110000,
B00001111,B11110110,B00011000,B00000011,B10110000,B01111111,B10000000,B10000000,
B00000000,B01100111,B11111000,B00111100,B10010000,B01111111,B10000000,B10000000,
B00000000,B01100011,B11110000,B00100111,B10010000,B00000000,B00000000,B11100000,
B00001110,B00000000,B00000000,B00100000,B00010000,B00000001,B11100000,B00010000,
B00010011,B00000000,B00000000,B00110000,B00110000,B00000000,B00100000,B00010000,
B00010101,B00000000,B10000000,B00011111,B11100000,B00000000,B01000000,B00010000,
B00010101,B00000001,B10000000,B00000000,B00000000,B00000000,B10000000,B11100000,
B00011001,B00000000,B10000000,B00000000,B00000000,B00000000,B10000000,B00000000,
B00001110,B00000000,B10000000,B00000000,B00000000,B00000000,B10000000,B00000000,
B00000000,B00000001,B11000000,B00000000,B00000000,B00000000,B00000000,B01110000,
B00000000,B00000000,B00000000,B00000000,B00000011,B11111110,B00000000,B10001000,
B00000000,B00000000,B00000000,B00111001,B11000010,B00100010,B11110111,B11010000,
B00111011,B10000000,B00000111,B01000110,B00100010,B10101010,B10001000,B10100000,
B00101110,B11111111,B11111101,B10101010,B10100010,B00100001,B10100010,B10110000,
B00100010,B10101000,B10001101,B10010010,B11100011,B10111101,B10111110,B10001000,
B00101000,B10101010,B00101100,B01011010,B10000000,B10100010,B11100011,B11111000,
B00101110,B10001011,B11101101,B01000110,B10000011,B10100000,B00000000,B00000000,
B00111011,B11111110,B00111100,B01111111,B10000010,B00100000,B00000000,B00000000,
B00000000,B00000000,B00000111,B10000000,B00000011,B11100000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
};

void setup(){
  // initialize the Gamebuino object
  gb.begin();
  RandNumber = random(10,100);
  gb.titleScreen(F(""), numbers);
  gb.popup(F("Hold A to play"), 20);
 
  //we dont count at start
  isActiveCounter = false;
}

/*void num(){
do{
      gb.display.println(number);
          number = number + 1;    //test for number counter
      } while(number < 50);
}*/

void restart_game() {
  number = 0;
  isActiveCounter = false;
}

void loop(){
  if(gb.update()){
    gb.display.println("Number Game");  //print hello world
    gb.display.println("");
    gb.display.println("Target number");
    gb.display.println(RandNumber);     // display a random number
     


//if button A is held then increase value by 1 and display value
      if(gb.buttons.repeat(BTN_A,1)){
          //number = number + 1;
        //we inverse value of boolean
        isActiveCounter = !isActiveCounter;
      }
    
     if(isActiveCounter == true){
      //we incremente value
      number++;
     }

        gb.display.println(number); //show increasing number

// if random number is the same as this value show win
      if(RandNumber == number){
        gb.display.println("Win!!");
      }
      else if(number <= RandNumber){
        gb.display.println("Too low...");
      }
      else if(number >= RandNumber){
        gb.display.println("Too High...");
      }

      gb.display.println("Match number to win"); //show text
      gb.display.println("Press B to Restart"); //show text

// reset game code
      if (gb.buttons.pressed(BTN_B)) {  //Reset game by pressing B
        number = 0;                     //This also regenerates a random number
      isActiveCounter = false;
        RandNumber = random(10,100);
        gb.popup(F("reset"), 10);
      }
       
    if(gb.buttons.pressed(BTN_C)){    //exit to menu by pressing C
      restart_game();
      gb.titleScreen(F("Number game by NaeD"), numbers);
      RandNumber = random(10,100);
    }
  }
}
clement
 
Posts: 161
Joined: Sat Oct 25, 2014 8:06 am

Re: My first game help

Postby naed » Thu Jun 02, 2016 6:38 pm

Clement, thanks for your quick response, it certainly helped me learn a few things and helped me add some finishing touches to my first ever game.

Your help has given me a little boost to show that I will be able to learn this (maybe the hard way, but I can do it)

Here is my finished code to help anyone who wants to also learn how to do something similar

Code: Select all
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;

int RandNumber;
int number = 0;
int state;

//add boolean value for check state
bool isActiveCounter;

const byte numbers[] PROGMEM = {64,32,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00000000,
B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B00000010,B00000000,
B00000000,B11100011,B11110000,B00110000,B00110000,B01111111,B10000010,B00000000,
B00000001,B11100111,B11111000,B00100000,B00010000,B01100001,B10000010,B10000000,
B00000011,B11100110,B00011000,B00100111,B10010000,B00000011,B10000011,B11000000,
B00000111,B01100110,B00011000,B00111100,B10010000,B00000111,B00000000,B10000000,
B00001110,B01100011,B11110000,B00000011,B10110000,B00001110,B00000000,B00000000,
B00001100,B01100011,B11110000,B00000010,B00100000,B00011100,B00000000,B00000000,
B00001111,B11110110,B00011000,B00000010,B00100000,B00111000,B00000000,B11110000,
B00001111,B11110110,B00011000,B00000011,B10110000,B01111111,B10000000,B10000000,
B00000000,B01100111,B11111000,B00111100,B10010000,B01111111,B10000000,B10000000,
B00000000,B01100011,B11110000,B00100111,B10010000,B00000000,B00000000,B11100000,
B00001110,B00000000,B00000000,B00100000,B00010000,B00000001,B11100000,B00010000,
B00010011,B00000000,B00000000,B00110000,B00110000,B00000000,B00100000,B00010000,
B00010101,B00000000,B10000000,B00011111,B11100000,B00000000,B01000000,B00010000,
B00010101,B00000001,B10000000,B00000000,B00000000,B00000000,B10000000,B11100000,
B00011001,B00000000,B10000000,B00000000,B00000000,B00000000,B10000000,B00000000,
B00001110,B00000000,B10000000,B00000000,B00000000,B00000000,B10000000,B00000000,
B00000000,B00000001,B11000000,B00000000,B00000000,B00000000,B00000000,B01110000,
B00000000,B00000000,B00000000,B00000000,B00000011,B11111110,B00000000,B10001000,
B00000000,B00000000,B00000000,B00111001,B11000010,B00100010,B11110111,B11010000,
B00111011,B10000000,B00000111,B01000110,B00100010,B10101010,B10001000,B10100000,
B00101110,B11111111,B11111101,B10101010,B10100010,B00100001,B10100010,B10110000,
B00100010,B10101000,B10001101,B10010010,B11100011,B10111101,B10111110,B10001000,
B00101000,B10101010,B00101100,B01011010,B10000000,B10100010,B11100011,B11111000,
B00101110,B10001011,B11101101,B01000110,B10000011,B10100000,B00000000,B00000000,
B00111011,B11111110,B00111100,B01111111,B10000010,B00100000,B00000000,B00000000,
B00000000,B00000000,B00000111,B10000000,B00000011,B11100000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
};

void setup(){
  // initialize the Gamebuino object
  gb.begin();
  RandNumber = random(10,100);
  gb.titleScreen(F(""), numbers);
  gb.popup(F("Press A to start"), 20);
 
  //we dont count at start
  isActiveCounter = false;
}

void restart_game() {
  number = 0;
  isActiveCounter = false;
}

void loop(){
  if(gb.update()){
    gb.display.println("Number Game by NaeD");  //print title
    gb.display.println("");
    gb.display.println(F("Target number is"));
    gb.display.println("");
    gb.display.cursorX = 67;
    gb.display.cursorY = 12;
    gb.display.println(RandNumber);     // display a random number
    gb.display.println("");
     


//if button A is pressed then start counter
      if(gb.buttons.pressed(BTN_A)){
          //number = number + 1;
        //we inverse value of boolean
        isActiveCounter = !isActiveCounter;
      }
     
     if(isActiveCounter == true){
      //we incremente value
      number++;
     }


        //formatting and text to show increasing number
        gb.display.println("Your number is ");
        gb.display.cursorX = 67;
        gb.display.cursorY = 24;
        gb.display.println(number); //show increasing number

// if random number is the same as this value show win
      if(RandNumber == number & gb.buttons.pressed(BTN_A)){
        gb.popup(F("You got it!"), 20);
      }
      else if(number <= RandNumber & gb.buttons.pressed(BTN_A) & number >= 10){
        gb.popup(F("Too low..."), 20);
      }
      else if(number >= RandNumber & gb.buttons.pressed(BTN_A) & number >= 10){
        gb.popup(F("Too high..."), 20);
      }

      gb.display.println(""); //show text
      gb.display.println("Match number to win"); //show text
      gb.display.println("Press B to Restart"); //show text

// reset game code
      if (gb.buttons.pressed(BTN_B)) {  //Reset game by pressing B
        number = 0;                     //This also regenerates a random number
      isActiveCounter = false;
        RandNumber = random(10,100);
        gb.popup(F("reset"), 10);
      }
       
    if(gb.buttons.pressed(BTN_C)){    //exit to menu by pressing C
      restart_game();
      gb.titleScreen(F("Number game by NaeD"), numbers);
      RandNumber = random(10,100);
    }
  }
}
User avatar
naed
 
Posts: 140
Joined: Tue May 31, 2016 3:18 pm


Return to Programming Questions

Who is online

Users browsing this forum: No registered users and 14 guests

cron