Understanding the language, error messages, etc.
by 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 295 times
Last edited by
naed on Thu Jun 02, 2016 6:44 pm, edited 1 time in total.
-
naed
-
- Posts: 140
- Joined: Tue May 31, 2016 3:18 pm
by 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
by 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);
}
}
}
-
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 6 guests