int KEY_LEFT = 0; int KEY_RIGHT = 1; int KEY_UP = 2; int KEY_DOWN = 3; int KEY_RET = 4; int KEY_BACKSPACE = 5; int KEY_SPACE = 6; int KEY_Z = 7; int KEY_MAX = 8; int GAME_INTRO = 0; int GAME_PLAY = 1; int time; int gameState = GAME_INTRO; boolean keysDown[]; CapsFont words; int worldScale = 2; Dude duder; Level lev; boolean rectOverlap(float ax1, float ay1, float ax2, float ay2, float bx1, float by1, float bx2, float by2) { return !(ax2 < bx1 || ax1 > bx2 || ay2 < by1 || ay1 > by2); } void display(PImage im, int xpos, int ypos, int scaling, boolean flip) { int fs = 1; if (flip) { pushMatrix(); scale(-1,1); fs = -1; } image(im, fs*xpos, ypos, fs*im.width*scaling,im.height*scaling); if (flip) popMatrix(); } ArrayList images = new ArrayList(); PImage managedRequestImage(String file) { PImage req = requestImage(file); images.add(req); return req; } int requestsSatisfied() { int sat = 0; for (int i = 0; i < images.size(); i++) { PImage img = (PImage)images.get(i); if (img.width != 0) sat++; } return sat; } float s_offx = 80, s_offy = 70; int s_tile_size = 16, s_s = 2; void setup() { size(525, 420); frameRate(50); keysDown = new boolean[KEY_MAX]; for (int i = 0; i < KEY_MAX; i++) { keysDown[i] = false; } words = new CapsFont("alphabet.gif"); //duder = new Dude(200,200); lev = new Level("levtest.txt", s_offx, s_offy, s_tile_size, s_s); } boolean slowMode = false; boolean retPressedLast = false; boolean spacePressedLast = false; void draw() { int reqsat = requestsSatisfied(); if (reqsat < images.size()) { background(0,128,0); fill(200,10,10); stroke(100,30,30); rect(50,200,425 * reqsat / images.size(),20); return; } if (gameState == GAME_INTRO) { background(128,0,0); fill(50,100,50); if (keysDown[KEY_SPACE] && !spacePressedLast) { println("slow mode toggled!"); slowMode = !slowMode; } spacePressedLast = keysDown[KEY_SPACE]; words.Draw(50,20,"frog prototype press z and arrows", worldScale); //duder.Draw(time,2); if (!slowMode || (keysDown[KEY_RET] && !retPressedLast) || keysDown[KEY_BACKSPACE]) lev.Update(time); lev.Draw(time); if (!slowMode || (keysDown[KEY_RET] && !retPressedLast) || keysDown[KEY_BACKSPACE]) time++; retPressedLast = keysDown[KEY_RET]; return; } // the basic layout background(128,0,0); fill(0); stroke(0); //rect(11,11,frame.width*3-2, frame.height*3-2); time++; } boolean failedPress = false; void keyPressed() { if (key == RETURN || key == ENTER) keysDown[KEY_RET] = true; if (key == BACKSPACE) keysDown[KEY_BACKSPACE] = true; if (key == ' ') keysDown[KEY_SPACE] = true; if (key == 'Z' || key == 'z') keysDown[KEY_Z] = true; if (key == CODED) // coded keys are just character movement { if (keyCode == LEFT) keysDown[KEY_LEFT] = true; if (keyCode == RIGHT) keysDown[KEY_RIGHT] = true; if (keyCode == UP) keysDown[KEY_UP] = true; if (keyCode == DOWN) keysDown[KEY_DOWN] = true; } } void keyReleased() { if (key == RETURN || key == ENTER) keysDown[KEY_RET] = false; if (key == BACKSPACE) keysDown[KEY_BACKSPACE] = false; if (key == ' ') keysDown[KEY_SPACE] = false; if (key == 'Z' || key == 'z') keysDown[KEY_Z] = false; if (key == CODED) // coded keys are just character movement { if (keyCode == LEFT) keysDown[KEY_LEFT] = false; if (keyCode == RIGHT) keysDown[KEY_RIGHT] = false; if (keyCode == UP) keysDown[KEY_UP] = false; if (keyCode == DOWN) keysDown[KEY_DOWN] = false; } }