Skip to content

Instantly share code, notes, and snippets.

@RobertShippey
Created February 21, 2012 21:14
Show Gist options
  • Save RobertShippey/1878992 to your computer and use it in GitHub Desktop.
Save RobertShippey/1878992 to your computer and use it in GitHub Desktop.
Pacman - Will
#include "stdafx.h"
#include "gwin.h"
class Pacman {
public:
int x;
int y;
int Scale;
// direction
int dx;
int dy;
int d;
Pacman();
void draw(GWindow &);
void move();
void aimLeft();
void aimUp();
void aimDown();
void aimRight();
void screen();
int ox, oy;
private:
int speed;
GSprite pac;
//GSprite pacD;
GImage image[4][3];
//four directions, three phases
/*GImage image;
GImage image2;
GImage image3;
GImage imageD1;
GImage imageD2;
GImage imageD3;*/
};
int main() {
GWindow Gwin;
Gwin.showDebugOverlay(false);
bool quitting =false;//flag to exit game loop when specific key pressed
Pacman myPacman;// Clear the Gwin window???
while (!quitting) {
// check for any user inputs
if (Keyboard.isPressed(GwinKeyNames::CURSOR_RIGHT)) {
myPacman.aimRight();
}
if (Keyboard.isPressed(GwinKeyNames::CURSOR_DOWN)) {
myPacman.aimDown();
}
if (Keyboard.isPressed(GwinKeyNames::CURSOR_UP)) {
myPacman.aimUp();
}
if (Keyboard.isPressed(GwinKeyNames::CURSOR_LEFT)) {
myPacman.aimLeft();
}
if (Keyboard.isPressed(GwinKeyNames::SPACE)) {
quitting =true;
}
if (Keyboard.isPressed(GwinKeyNames::ESCAPE)) {
quitting=true;
}
// Update state of game (nothing much here yet)
myPacman.move();
//Display current state of game
Gwin.clear(BLACK);
myPacman.draw(Gwin);
myPacman.screen();
Gsleep(20);
Gwin.refresh();
Gwin.setPenColour(WHITE);
Gwin.writeInt(400,50,myPacman.x);
Gwin.writeInt(400,70,myPacman.y);
Gwin.writeText(100,300,"Test");
}
Gwin.clear(CYAN);
Gwin.setPenColour(RED);
Gwin.writeText(100,100, "bye bye");
Gwin.refresh();
Gsleep(1000);
return 0;
}
Pacman::Pacman() {
d=1;
//set up sprite for animation
GError err = image[0][0].loadImage(GPath("pacman/pictures/pacmanR1.bmp").transform());
image[0][1].loadImage(GPath("pacman/pictures/pacmanR2.bmp").transform());
image[0][2].loadImage(GPath("pacman/pictures/pacmanR3.bmp").transform());
//etc... Loading all the images.
/*imageD1.loadImage(GPath("pacman/pictures/pacmanD1.bmp").transform());
imageD2.loadImage(GPath("pacman/pictures/pacmanD2.bmp").transform());
imageD3.loadImage(GPath("pacman/pictures/pacmanD3.bmp").transform());*/
/*imageL1.loadImage(GPath("pacman/pictures/pacmanR1.bmp").transform());
imageL2.loadImage(GPath("pacman/pictures/pacmanR2.bmp").transform());
imageL3.loadImage(GPath("pacman/pictures/pacmanR3.bmp").transform());
imageU1.loadImage(GPath("pacman/pictures/pacmanR1.bmp").transform());
imageU2.loadImage(GPath("pacman/pictures/pacmanR2.bmp").transform());
imageU3.loadImage(GPath("pacman/pictures/pacmanR3.bmp").transform());*/
pac.attachImage(&image[d][0]);
pac.attachImage(&image[d][1]);
pac.attachImage(&image[d][2]);
pac.attachImage(&image[d][1]);
pac.attachImage(&image[d][0]);
/*pacD.attachImage(&imageD1);
pacD.attachImage(&imageD2);
pacD.attachImage(&imageD3);
pacD.attachImage(&imageD2);
pacD.attachImage(&imageD1);*/
pac.setAnimationFrameTime(16);
//set geometry
x=y=0;
dx=1;
dy=0;
speed = 2;// change back to 2 afterwards
Scale = 100;
}
void Pacman::screen() {
if (pac.x>630)
{x=5;}
if (pac.x<5)
{x=630;}
if (pac.y>480)
{y=5;}
if (pac.y<0)
{y=479;}
}
void Pacman::draw(GWindow &g) {
pac.x = x;
pac.y = y;
pac.update();
pac.render();
//if (Keyboard.isPressed(GwinKeyNames::CURSOR_DOWN))
//{
///*pacD.clearImageList();*/
//pacD.x = x;
//pacD.y = y;
//pac.update();
//pac.render();
//}
//g.drawImageScaled(x,y,Scale,Scale,???);
}
void Pacman::move() {
x += dx;
y += dy;
}
void Pacman::aimRight() {
dx = speed;
dy = 0;
pac.clearImageList();
pac.attachImage(&image[1][0]);
pac.attachImage(&image[1][1]);
pac.attachImage(&image[1][2]);
pac.attachImage(&image[1][1]);
pac.attachImage(&image[1][0]);
}
void Pacman::aimLeft() {
dx = -speed;
dy = 0;
pac.clearImageList();
pac.attachImage(&image[3][0]);
pac.attachImage(&image[3][1]);
pac.attachImage(&image[3][2]);
pac.attachImage(&image[3][1]);
pac.attachImage(&image[3][0]);
}
void Pacman::aimUp() {
dx = 0;
dy = -speed;
pac.clearImageList();
pac.attachImage(&image[0][0]);
pac.attachImage(&image[0][1]);
pac.attachImage(&image[0][2]);
pac.attachImage(&image[0][1]);
pac.attachImage(&image[0][0]);
}
void Pacman::aimDown() {
dx = 0;
dy = speed;
pac.clearImageList();
pac.attachImage(&image[2][0]);
pac.attachImage(&image[2][1]);
pac.attachImage(&image[2][2]);
pac.attachImage(&image[2][1]);
pac.attachImage(&image[2][0]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment