110 lines
2.5 KiB
Plaintext
110 lines
2.5 KiB
Plaintext
//TODO
|
|
//- Start Screen
|
|
//- Level Editor (click with mouse spawns or deletes tiles)
|
|
// - Hotkey to slide the window right and left
|
|
// - Find a way to make menus
|
|
//- Movement berechnen mit move = gravitation - speed
|
|
// - Jump als Zahl, die langsam kleiner wird
|
|
//
|
|
// Make Colission better:
|
|
// - https://happycoding.io/tutorials/processing/collision-detection
|
|
|
|
// jumping related
|
|
float speed = 20;
|
|
float gravitation = 9.81;
|
|
float jumpheight;
|
|
boolean canjump = true;
|
|
|
|
// for moving x-axis (mostly depracted)
|
|
// But dont delete yet!!
|
|
// PVector direction = new PVector(0,0);
|
|
PVector pos = new PVector(220, 50);
|
|
int playerRadius = 25;
|
|
|
|
// float actualPos;
|
|
|
|
PVector tilesize = new PVector(100, 50);
|
|
|
|
int[][] level;
|
|
|
|
int tilesmoved = 0;
|
|
int tilespeed = 4;
|
|
|
|
// The actual game
|
|
void play() {
|
|
// calculate actual position on ground
|
|
// actualPos = height - pos.y;
|
|
|
|
|
|
// player
|
|
rectMode(CENTER);
|
|
rect(pos.x, pos.y, playerRadius, playerRadius);
|
|
|
|
moveTiles(tilespeed);
|
|
baseRect();
|
|
newJump();
|
|
collisionTest();
|
|
generate_tiles();
|
|
|
|
helper();
|
|
menuButton();
|
|
|
|
fill(0);
|
|
text(tilesmoved, 700, 50);
|
|
tilesmoved = tilesmoved + tilespeed;
|
|
fill(255);
|
|
}
|
|
|
|
|
|
void moveTiles(int tilesspeed) {
|
|
for (int i = 0; i < level.length; i++) {
|
|
level[i][0] = level[i][0] - tilesspeed;
|
|
}
|
|
}
|
|
void moveTilesBack(int tilespeed) {
|
|
for (int i = 0; i < level.length; i++) {
|
|
level[i][0] = level[i][0] + tilesmoved;
|
|
}
|
|
tilesmoved = 0;
|
|
}
|
|
|
|
// Handles Jumping
|
|
float movement;
|
|
float jumpspeed;
|
|
void newJump() {
|
|
movement = gravitation - jumpspeed;
|
|
pos.set(pos.x, pos.y + movement);
|
|
if (jumpspeed > 0) {
|
|
jumpspeed--;
|
|
}
|
|
}
|
|
|
|
// This is an absolute mess
|
|
|
|
// TODO Collision erweitern wie in https://happycoding.io/tutorials/processing/collision-detection
|
|
void collisionTest() {
|
|
// Collision with baseline
|
|
if ( pos.y > 0.850*height - playerRadius/2 ) {
|
|
pos.set(pos.x, 0.850*height - playerRadius/2);
|
|
canjump = true;
|
|
}
|
|
|
|
// Collision with all the tiles bottom site
|
|
for (int i = 0; i < level.length; i++) {
|
|
boolean xSideEdges = pos.x > level[i][0] - tilesize.x/2 && pos.x < level[i][0] + tilesize.x/2;
|
|
boolean ySideEdges = pos.y < level[i][1] + tilesize.y/2 && pos.y > level[i][1] - tilesize.y/2;
|
|
|
|
if (level[i][4] == 0) {
|
|
// Bottom
|
|
if ( (xSideEdges) && (ySideEdges)) {
|
|
pos.set(pos.x, level[i][1] + tilesize.y/2);
|
|
}
|
|
// Top
|
|
if ( (xSideEdges) && (pos.y < level[i][1] + tilesize.y/2 && pos.y > level[i][1] - tilesize.y/2 - playerRadius)) {
|
|
pos.set(pos.x, level[i][1] - tilesize.y/2 - 15);
|
|
canjump = true;
|
|
}
|
|
}
|
|
}
|
|
}
|