/* built with Studio Sketchpad:
* https://sketchpad.cc
*
* observe the evolution of this sketch:
* https://studio.sketchpad.cc/sp/pad/view/ro.qdJriqoZLfP86flvFR64O-Lig3UYZBOLTZ1iJ0xytf-oph1cK0760iDhGB0i/rev.51373
*
* authors:
*
* Sebi
*
*
*
*
*
* TrobiiX
* Sebastian Rieger
*
* Sebi
* Mensch neben mir
*
* license (unless otherwise specified):
* creative commons attribution-share alike 3.0 license.
* https://creativecommons.org/licenses/by-sa/3.0/
*/
class erze {
//häufigkeit
int kohleanzahl = 5000;
int bauxitanzahl = 1000;
int goldanzahl = 500;
int emeraldanzahl = 1000;
//minimale tiefe unter der kartenhoehe
int kohletiefe = 10;
int bauxittiefe = 600;
int goldtiefe = 2000;
int emeraldtiefe = 4000;
int maxtiefe = 5700;
//items im inventar
int kohleinv = 0;
int bauxitinv = 0;
int goldinv = 0;
int emeraldinv = 0;
//Kohle
//Bauxit
//Gold
//Emerald
int[] xkohle = new int[kohleanzahl];
int[] xbauxit = new int[bauxitanzahl];
int[] xgold = new int[goldanzahl];
int[] xemerald = new int[emeraldanzahl];
int[] ykohle = new int[kohleanzahl];
int[] ybauxit = new int[bauxitanzahl];
int[] ygold = new int[goldanzahl];
int[] yemerald = new int[emeraldanzahl];
int ik = 0;
int ib = 0;
int ig = 0;
int ie = 0;
String kurzinfo = "";
int kurzinfozeit = 1000;
erze() {
}
void display() {
//x und y Koordinaten
for(;ik<xkohle.length;ik++){
xkohle[ik] = random(karte.b.chunksize*karte.b.x.length/xkohle.length*ik,karte.b.chunksize*karte.b.x.length/xkohle.length*(ik+1));
ykohle[ik] = random(hoehenausgabe(xkohle[ik])-kohletiefe,hoehenausgabe(xkohle[ik])-maxtiefe);
}
for(;ib<xbauxit.length;ib++){
xbauxit[ib] = random(karte.b.chunksize*karte.b.x.length/xbauxit.length*ib,karte.b.chunksize*karte.b.x.length/xbauxit.length*(ib+1));
ybauxit[ib] = random(hoehenausgabe(xbauxit[ib])-bauxittiefe,hoehenausgabe(xbauxit[ib])-maxtiefe);
}
for(;ig<xgold.length;ig++){
xgold[ig] = random(karte.b.chunksize*karte.b.x.length/xgold.length*ig,karte.b.chunksize*karte.b.x.length/xgold.length*(ig+1));
ygold[ig] = random(hoehenausgabe(xgold[ig])-goldtiefe,hoehenausgabe(xgold[ig])-maxtiefe);
}
for(;ie<xemerald.length;ie++){
xemerald[ie] = random(karte.b.chunksize*karte.b.x.length/xemerald.length*ie,karte.b.chunksize*karte.b.x.length/xemerald.length*(ie+1));
yemerald[ie] = random(hoehenausgabe(xemerald[ie])-emeraldtiefe,hoehenausgabe(xemerald[ie])-maxtiefe);
}
//erze zeichnen
for(int uk = 0;uk< xkohle.length; uk++){
if( (xkohle[uk]+karte.b.kart) > (-karte.b.renderdistance) && (xkohle[uk]+karte.b.kart) < (width+karte.b.renderdistance) ){
fill(0);
oretexture (xkohle[uk]+karte.b.kart,height-ykohle[uk]+karte.b.karty,0,0,0);
if (Math.abs(xkohle[uk]+25-karte.b.kart2)<80&&Math.abs(ykohle[uk]-karte.b.hoehe-karte.b.jump-100)<70) {
kohleinv = kohleinv + 1;
kurzinfo = "collected 1 coal ore";
kurzinfozeit = 0;
xkohle[uk] = -1000;
}
}
}
for(int ub = 0;ub< xbauxit.length; ub++){
if( (xbauxit[ub]+karte.b.kart) > (-karte.b.renderdistance) && (xbauxit[ub]+karte.b.kart) < (width+karte.b.renderdistance) ){
oretexture (xbauxit[ub]+karte.b.kart,height-ybauxit[ub]+karte.b.karty,180,180,180);
if (Math.abs(xbauxit[ub]+25-karte.b.kart2)<80&&Math.abs(ybauxit[ub]-karte.b.hoehe-karte.b.jump-100)<70) {
bauxitinv = bauxitinv + 1;
xbauxit[ub] = -1000;
kurzinfo = "collected 1 bauxit ore";
kurzinfozeit = 0
}
}
}
for(int ug = 0;ug< xgold.length; ug++){
if( (xgold[ug]+karte.b.kart) > (-karte.b.renderdistance) && (xgold[ug]+karte.b.kart) < (width+karte.b.renderdistance) ){
oretexture (xgold[ug]+karte.b.kart,height-ygold[ug]+karte.b.karty,255,255,0);
if (Math.abs(xgold[ug]+25-karte.b.kart2)<80&&Math.abs(ygold[ug]-karte.b.hoehe-karte.b.jump-100)<70) {
goldinv = goldinv + 1;
xgold[ug] = -1000;
kurzinfo = "collected 1 gold";
kurzinfozeit = 0;
}
}
}
for(int ue = 0;ue< xemerald.length; ue++){
if( (xemerald[ue]+karte.b.kart) > (-karte.b.renderdistance) && (xemerald[ue]+karte.b.kart) < (width+karte.b.renderdistance) ){
emeraldtexture(xemerald[ue]+karte.b.kart,height-yemerald[ue]+karte.b.karty);
if (Math.abs(xemerald[ue]+25-karte.b.kart2)<80&&Math.abs(yemerald[ue]-karte.b.hoehe-karte.b.jump-100)<70) {
emeraldinv = emeraldinv + 1;
xemerald[ue] = -1000;
kurzinfo = "collected 1 emerald ore";
kurzinfozeit = 0;
}
}
}
if(kurzinfozeit<60){
kurzinfozeit++;
fill(255,0,255);
text(kurzinfo,spieler.p.x+50,spieler.p.y-kurzinfozeit);
}
}
}
//void weltgenerieren () { }
void window(){
fill(255);
stroke(100);
strokeWeight(10);
rect(100,50,width-200,height-100, 15);
// textAlign(LEFT,CENTER);
// textSize(25);
strokeWeight(1);
fill(0,160,0);
if(660 < mouseX && mouseX < 700 && 50 < mouseY && mouseY < 90){
if (mousePressed && (mouseButton == LEFT)) {
}
fill(255,0,0);
}else{
fill(155,0,0);
}
stroke(255,0,0);
ellipse(680,70,20,20);
strokeWeight(2);
stroke(0);
line(675,65,685,75);
line(675,75,685,65);
strokeWeight(0);
noStroke();
strokeWeight(1);
stroke(0);
textAlign(LEFT);
resetgrapic();
}
int closewindow(){
boolean h = false;
if(660 < mouseX && mouseX < 700 && 50 < mouseY && mouseY < 90){
if (mousePressed && (mouseButton == LEFT)) {
h = true;
}
}
return h;
}
void resetgrapic(){
fill(0);
strokeWeight(1);
noStroke();
stroke(0);
textAlign(LEFT);
// textAlign(LEFT,CENTER);
textSize(25);
//imageMode(CORNER);
}
int bewegungsmelder(int x,int y,int radius) {
int t = 0;
if( (abs(hoehenausgabe(x)+y-height) )< radius*2){
if(abs(karte.b.kart2-x)<(radius*1) ){
t = 1;
}
for(int z = 0; z< mob.z.xPos.length; z++){
if(abs(x-mob.z.xPos[z])<radius*1.5){
t = 2;
}
}
for(int i = 0;i<mob.mensch1.xPos.length;i++){
if(abs(x-mob.mensch1.xPos[i])<radius*1.5){
t = 3.1;
}
}
for(int i = 0;i<mob.mensch2.xPos.length;i++){
if(abs(x-mob.mensch2.xPos[i])<radius*1.5){
t = 3.2;
}
}
for(int i = 0;i<mob.mensch3.xPos.length;i++){
if(abs(x-mob.mensch3.xPos[i])<radius*1.5){
t = 3.3;
}
}
for(int i = 0;i<mob.mensch4.xPos.length;i++){
if(abs(x-mob.mensch4.xPos[i])<radius*1.5){
t = 3.4;
}
}
}
return t;
}
void damage(int x,int y,int radius,int damage){
if( (abs(hoehenausgabe(x)+y-height)) < radius*2){
if(abs(karte.b.kart2-x)<(radius*1) ){ //-spieler.p.x
mob.z.health = mob.z.health -damage;
}
for(int z = 0; z< mob.z.xPos.length; z++){
if(abs(x-mob.z.xPos[z])<radius*1.5){
mob.z.health = mob.z.health + 30;
karte.l.Geld = karte.l.Geld + 5;
mob.z.zombiehealth [z] = mob.z.zombiehealth [z] -damage;
}
}
for(int i = 0;i<mob.mensch1.xPos.length;i++){
if(abs(x-mob.mensch1.xPos[i])<radius*1.5){
mob.mensch1.health[i] = mob.mensch1.health[i] - damage;
}
}
for(int i = 0;i<mob.mensch2.xPos.length;i++){
if(abs(x-mob.mensch2.xPos[i])<radius*1.5){
mob.mensch2.health[i] = mob.mensch2.health[i] - damage;
}
}
for(int i = 0;i<mob.mensch3.xPos.length;i++){
if(abs(x-mob.mensch3.xPos[i])<radius*1.5){
mob.mensch3.health[i] = mob.mensch3.health[i] - damage;
}
}
for(int i = 0;i<mob.mensch4.xPos.length;i++){
if(abs(x-mob.mensch4.xPos[i])<radius*1.5){
mob.mensch4.health[i] = mob.mensch4.health[i] - damage;
}
}
}
}
void alleitemsaus(){
spieler.aktiv = true;
karte.w.miningdrill = false;
karte.w.shotgun = false;
karte.w.mine = false;
karte.w.raktenwerfer = false;
karte.w.bombe = false;
karte.w.pinsel = false;
}
void karteanpassen(int hoehe,int start,int laenge){
for(int i = round(start/karte.b.chunksize);i<( (start+laenge)/karte.b.chunksize);i++){
if(karte.b.x[i]>(hoehe+1) ){
karte.b.x[i] = karte.b.x[i]-1;
}
if(karte.b.x[i]<(hoehe-1) ){
karte.b.x[i] = karte.b.x[i]+1;
}
if(i< ( (start+laenge/2)/karte.b.chunksize) ){
int weite = (i-start/karte.b.chunksize)/(laenge/2/karte.b.chunksize);
int tiefe =
(1-cos(1.5*PI+weite*PI/2))
*karte.b.x[round( (start-laenge/2)/karte.b.chunksize)-1]
+(cos(1.5*PI+weite*PI/2))
*hoehe;
if( (karte.b.x[i-(laenge/2)/karte.b.chunksize])< (tiefe-1) ){
karte.b.x[i-(laenge/2)/karte.b.chunksize] = karte.b.x[i-(laenge/2)/karte.b.chunksize] + 1;
}
if( (karte.b.x[i-(laenge/2)/karte.b.chunksize])> (tiefe+1) ){
karte.b.x[i-(laenge/2)/karte.b.chunksize] = karte.b.x[i-(laenge/2)/karte.b.chunksize] - 1;
}
}else{
int weite2 = (i-(start+(laenge/2))/karte.b.chunksize)/(laenge/2/karte.b.chunksize);
int tiefe2 =
cos(1.5*PI+weite2*PI/2)
*karte.b.x[round((start+laenge+laenge/2)/karte.b.chunksize)+1]
+(1-cos(1.5*PI+weite2*PI/2))
*hoehe;
if( (karte.b.x[i+(laenge/2)/karte.b.chunksize])< (tiefe2-1) ){
karte.b.x[i+(laenge/2)/karte.b.chunksize] = karte.b.x[i+(laenge/2)/karte.b.chunksize] + 1;
}
if( (karte.b.x[i+(laenge/2)/karte.b.chunksize])> (tiefe2+1) ){
karte.b.x[i+(laenge/2)/karte.b.chunksize] = karte.b.x[i+(laenge/2)/karte.b.chunksize] - 1;
}
}
}
}
void explosion(int xexplosion, int yexplosion, int explosionsradius){
int extiefe = explosionsradius;
// +200-abs(-height-yexplosion+hoehenausgabe(xexplosion));
if (extiefe < 1){
extiefe = 0;}
for(int i = -explosionsradius/karte.b.chunksize;i<explosionsradius/karte.b.chunksize;i++){
karte.b.x[ round((xexplosion)/karte.b.chunksize+i) ] = extiefe*sin(PI*(1-(i-explosionsradius/karte.b.chunksize)/(2*(explosionsradius/karte.b.chunksize))))
+karte.b.x[ round(( xexplosion)/karte.b.chunksize+i) ] ;
}
damage(xexplosion,yexplosion,explosionsradius*3,100);
g.ee.zeit = 0;
g.ee.x = xexplosion; + karte.b.kart
g.ee.y = yexplosion; + karte.b.karty
g.ee.radius = explosionsradius;
}
PImage webImg;
PImage webImg2;
PImage webImg3;
PImage webImg4;
PImage webImg5;
PImage webImg6;
PImage webImg7;
PImage webImg8;
PImage webImg9;
PImage webImg10;
player spieler = new player(0,400,300,"schwarz",40);
entity mob = new entity();
map karte = new map("gelb",100);
textfeld tf = new textfeld("gelb",20);
inventory inv = new inventory();
gameengine g = new gameengine();
class gameengine {
bluteffekt eb;
explosionseffekt ee;
tastenbelegung t;
boolean aktiv = true;
gameengine() {
ee = new explosionseffekt();
eb = new bluteffekt();
t = new tastenbelegung();
}
void zeichne() {
eb.display();
ee.display();
t.display();
}
}
class bluteffekt {
int x;
int y;
bluteffekt(){
}
void display() {
fill(0,255,0);
}
}
class explosionseffekt {
int anzahl = 100;
int[] yPos = new int[anzahl];
int[] xPos = new int[anzahl];
int[] xSpeed = new int[anzahl];
int[] ySpeed = new int[anzahl];
int[] rotation = new int[anzahl];
int[] winkel = new int[anzahl];
int[] laenge = new int[anzahl];
int[] breite = new int[anzahl];
int[] r = new int[anzahl];
int[] g = new int[anzahl];
int[] b = new int[anzahl];
int x= 400;
int maxspeed = 30;
int y=50;
int zeit = 200;
int radius = 300;
explosionseffekt (){
}
void display() {
for(int u = 0; u < anzahl; u++){
fill(r[u],g[u],b[u]);
xPos[u] = xPos[u] + xSpeed[u];
yPos[u] = yPos[u] + ySpeed[u];
pushMatrix();
translate(xPos[u]+ karte.b.kart,yPos[u]+ karte.b.karty);
rotate(winkel[u]);
rect(-0.5*breite[u],-0.5*laenge[u],breite[u],laenge[u]);
popMatrix();
if(yPos[u]>(-hoehenausgabe(xPos[u])+karte.b.karty+height) ){
ySpeed[u] = 0;
xSpeed[u] = 0;
}else{
ySpeed[u] = ySpeed[u] +zeit/10;
winkel[u] = winkel[u] + rotation[u];
}
}
if(zeit<radius){
if(zeit == 0){
for(int j = 0;j<anzahl;j++){
xPos[j] = x;
yPos[j] = y;
maxspeed = radius/20;
xSpeed [j] = random(-maxspeed,maxspeed);
ySpeed [j] = random(-maxspeed,maxspeed);
rotation[j] = random(-0.3,0.3);
laenge[j] = random(3,20);
breite[j] = random(3,20);
winkel[j] = 0;
r[j] = random(0,255);
g[j] = random(0,255);
b[j] = random(0,255);
}
}
zeit = zeit+5;
stroke(255-255*zeit/radius,255-255*zeit/radius,0);
noFill();
strokeWeight( 30*(1-zeit/radius) );
ellipse(x+ karte.b.kart,y+ karte.b.karty,zeit*3,zeit*3);
noStroke();
fill(255-255*zeit/radius,0,0);
ellipse(x+ karte.b.kart,y+ karte.b.karty,zeit,zeit); //+height-100
// for(int i = 0;i<100;i++){
// stroke(random(0,255-255*zeit/radius),random(0,255-255*zeit/radius),random(0,255-255*zeit/radius) );
// strokeWeight(random(1,4));
// pushMatrix();
// translate(x,y);
// rotate(zeit);
// point(random(-zeit,zeit),random(-zeit,zeit));
// popMatrix();
// }
}else{
// zeit = 0;
}
resetgrapic();
}
}
class tastenbelegung {
tastenbelegung(){
}
void display() {
}
}
void setup () {
smooth();
String url = "http://fs5.directupload.net/images/170413/2pgppchs.png";
//String url = "http://www.carworld-24.de/CMS/media/Hersteller_Fotos/Volkswagen/Volkswagen_Tiguan_Neuwagen.jpeg";
String url2 = "http://fs5.directupload.net/images/170413/z4yu29q5.png";
//String url2 = "http://news.meinauto.de/seat-ateca-2016-ausen-vorne.JPG";
String url3 = "http://www.netanimations.net/tumblr_m9ul5vnUCo1qaw2kw.gif";
String url4 = "https://lmgb7w.bn1301.livefilestore.com/y4mpXgzK0x0_TaivzYrGrq-A-XJngQf_GS7MPgrj05T6j6y5xa8gfO8p6tEmWk72nhjgLFnmZHNdoNxCESj9T0TH7i5MZG6vfU_yw9IlpY_dS3ro67Z0NxHrEK1fHz-pjGlF4AYck6ctODOmZ1hpvfZaxc-gu6V4zZVZgkDyLx1O37QkqbbBSZbzIVuvVt-80S6CarEK8bhkqIn8ViN76b1kw/ezgif.com-rotate%20%281%29.gif?psid=1";
String url5 = "https://yrfqna.bn1301.livefilestore.com/y4mX0x3VgN7Cv2ALZXDfaNM1MMJXnlAFidNrTEw99Jq6lNwGcNln3wb3HLrHhIKgEhcIXqQOz7oP0JHdaDp-VT_O4ce7UDmnz8RqwJMg-Rtbcr8JQDuy_FViYka98jfGDRYDAMB-3C2BiO2ONIdO0hOKTHLBso7-5AI2eyVeLMf1-363f4ycK05VFVZyJwxUmyn7LHELqopbIwTt_jLxADLxw/bild.jpg?psid=1";
String url6 = "https://2dq0jg.bn1301.livefilestore.com/y4m2ULgG6-HasDoVzV_oR3Tb8N37XaNiUtg3kz5D1E5w_-C4LvI7EJSuurZCIuvFV80IvRmPPtI2RyezWWT9zDJNHjXjWyprt8o5gmL8xjJLzPGvgMfScO5LtJ_WvF3wQf40HBQHiLmocwR00FHUllJXUIbmZAYu3WhfkuV6S0gKwRPic3BnpB3jQNgpH1ZXAi91buWdOg_q34lVeSCJKHblg/jetpack.png?psid=1";
String url7 = "http://fs5.directupload.net/images/170421/j5qaurw4.png";
String url8 = "http://fs5.directupload.net/images/170420/vwfuq44d.png"; //Bazooka
String url9 = "http://fs5.directupload.net/images/170420/3c8woy2b.png"; //Rakete
webImg = loadImage(url, "png");
webImg2 = loadImage(url2, "png");
webImg3 = loadImage(url3, "gif");
webImg4 = loadImage(url4, "gif");
webImg5 = loadImage(url5, "jpg");
webImg6 = loadImage(url6, "png");
webImg7 = loadImage(url7, "jpg");
webImg8 = loadImage(url8, "png");
webImg9 = loadImage(url9, "png");
webImg10 = loadImage("http://view.stern.de/de/picture/1085563/wolken-wolkenstimmung-robbyb-weltuntergangsstimmung-kleine-weltuntergang-940.jpg");
size(800,500);
f = createFont("Arial",16,true);
textFont(f,25);
textAlign(LEFT);
}
class entity {
npc mensch1;
npc mensch2;
npc mensch3;
npc mensch4;
landschaft see;
landschaft stadt;
zug zug1;
auto a;
jetpack j;
zombie z;
boolean aktiv= false;
entity() {
z = new zombie();
j = new jetpack();
a = new auto();
zug1 = new zug();
mensch1 = new npc();
mensch2 = new npc();
mensch3 = new npc();
mensch4 = new npc();
see = new landschaft();
stadt = new landschaft();
}
void zeichne() {
zug1.display();
z.display();
j.display();
a.display();
see.display(1,"http://wl32www670.webland.ch/images/Baum_200x205-3.gif",200,200);
stadt.display(1,"http://www.877getlimo.net/sitebuilder/images/ChicagoSkyline.gif",800,400);
mensch1.display("sponge",50,"http://vignette4.wikia.nocookie.net/epic-rap-battles-of-cartoons/images/c/cb/SpongeBob.png/revision/latest?cb=20131030015532");
mensch2.display("patrik",50,"http://vignette1.wikia.nocookie.net/fictionalcharacters/images/c/cf/Patrick.png/revision/latest?cb=20131121012334");
mensch3.display("soldat",50,"http://images.esellerpro.com/2466/500.500@I/416/52/eb-4009.png");
mensch4.display("feuerwehrmann",50,"http://www.feuerwehreisbergen.de/sites/default/files/dateianhaenge/137/feurewehrmannschwerehupfbekleidung.png");
}
}
class landschaft {
int maxanzahl = 100;
int u = 0;
int u2 = 0;
int[] xPos = new int[maxanzahl];
int[] yPos = new int[maxanzahl];
int[] xP = new int[maxanzahl];
int[] yP = new int[maxanzahl];
int bild;
landschaft() {
}
void display(int anzahl,String link,int a,int b) {
if(u2<1){
bild = loadImage(link);
u2++;
}
for(;u<anzahl;u++){
xPos[u] = zufallsx();
}
for(int i = 0;i<anzahl;i++){
yPos[i] = hoehenausgabe(xPos[i]);
karteanpassen(yPos[i],xPos[i]-(a/2),a);
// karteanpassen(100,karte.b.x.length*10,10000);
xP[i] = xPos[i]+karte.b.kart;
yP[i] = karte.b.karty-yPos[i]+height;
imageMode(CENTER);
image(bild,xP[i],yP[i]-b/2,a,b);
imageMode(CORNER);
}
}
}
class zug {
int wartezeit = 4;
int beschleunigung = 1;
int entschleunigung = 3;
int hoehstgeschwindigkeit = 80;
int anzahl = 13;
int zustand;
int tastenanzahl;
int haltezeit;
int geschwindigkeit;
boolean eingestiegen = false;
boolean rechts = true;
int station = 1;
int xzug;
int yzug;
int xz;
int yz;
int[] xPos = new int[anzahl];
int[] yPos = new int[anzahl];
int[] xP = new int[anzahl];
int[] yP = new int[anzahl];
int u = 0;
int images;
int images2;
zug() {
images = loadImage("http://www.lokifahrer.ch/images/Lokgrafik/2103.gif");
images2 = loadImage("https://www.shareicon.net/data/2016/07/07/792299_transportation_512x512.png");
}
void display() {
for(;u<anzahl;u++){
xPos[u] = random(
karte.b.renderdistance/4+
(karte.b.chunksize*karte.b.x.length-karte.b.renderdistance/2)
/xPos.length*(u),
karte.b.renderdistance/4+
(karte.b.chunksize*karte.b.x.length-karte.b.renderdistance/2)
/xPos.length*(u+1) );
xzug = xPos[0];
}
for(int i = 0;i<anzahl;i++){
yPos[i] = hoehenausgabe(xPos[i]);
xP[i] = xPos[i]+karte.b.kart;
yP[i] = karte.b.karty-yPos[i]+height;
imageMode(CENTER);
image(images2,xP[i],yP[i]-100,600,200);
karteanpassen(yPos[i],xPos[i]-300,600);
}
yzug = hoehenausgabe(xzug);
xz = xzug+karte.b.kart;
yz = karte.b.karty-yzug+height;
image(images,xz,yz,2400,400);
imageMode(CORNER);
xzug = xzug + geschwindigkeit*(2*rechts-1);
switch(zustand){
case 0://halten
if( abs(karte.b.kart2-xzug)<1200 ){
if(eingestiegen == false){
info("Press Arrow key down to enter train");
}
if(tastenanzahl == 1){
if(eingestiegen == false){
eingestiegen = true;
karte.w.nowalk = true;
}else{
eingestiegen = false;
karte.w.nowalk = false;
}
}
}
if(second()-haltezeit>wartezeit){
zustand = 1;
haltezeit = 0;
}
break;
case 1://beschleunigung
if(geschwindigkeit < hoehstgeschwindigkeit){
geschwindigkeit = geschwindigkeit+beschleunigung;
}else{
zustand = 2;
}
break;
case 2://rollen
if( ( (xPos[station]-xzug)*(2*rechts-1) )< (hoehstgeschwindigkeit/entschleunigung) ){
station = station+(2*rechts-1);
zustand = 3;
}
break;
case 3://bremsen
if(geschwindigkeit>0){
geschwindigkeit = geschwindigkeit -entschleunigung;
}else{
if( (xzug+100)>(xPos[xPos.length-1]) ){
rechts = false;
station = xPos.length-2;
}
if( (xzug-100)<xPos[0]){
rechts = true;
station = 1;
}
geschwindigkeit = 0;
zustand = 0;
haltezeit = second();
}
break;
}
if(eingestiegen == true){
if(rechts){
if(spieler.p.x < (3*width/4)){
spieler.p.x = spieler.p.x + geschwindigkeit*(2*rechts-1);
}else{
karte.b.kart = karte.b.kart -geschwindigkeit*(2*rechts-1);
}
}else{
if(spieler.p.x > (width/4)) {
spieler.p.x = spieler.p.x + geschwindigkeit*(2*rechts-1);
} else {
karte.b.kart = karte.b.kart -geschwindigkeit*(2*rechts-1);
}
}
karte.b.kart2 = karte.b.kart2 +geschwindigkeit*(2*rechts-1); //+(xzug-karte.b.kart2)/100;
}
if (keyPressed==true && keyCode == DOWN) {
tastenanzahl++;
}else{
tastenanzahl = 0;
}
}
}
class npc {
int maxanzahl = 401;
int walkspeed = 6;
int minaktionszeit = 20;
int maxaktionszeit = 70;
int[] xPos = new int[maxanzahl];
int[] yPos = new int[maxanzahl];
int[] xP = new int[maxanzahl];
int[] yP = new int[maxanzahl];
int[] aktionszeit = new int[maxanzahl];
int[] jump = new int[maxanzahl];
int[] langeweilezeit = new int[maxanzahl];
int[] zustand = new int[maxanzahl];
int[] health = new int[maxanzahl];
// int[] images = new int[2];
int images;
int u = 0;
int u2 = 0;
npc() {
}
void display(String name,int anzahl,String link) {
if(u2<1){
u2=u2+1;
images = loadImage(link);
}else{
for(;u<anzahl;u++){
xPos[u] = zufallsx();
health[u] = 100;
}
for(int i = 0;i<anzahl;i++){
yPos[i] = hoehenausgabe(xPos[i]);
xP[i] = xPos[i]+karte.b.kart;
yP[i] = karte.b.karty-yPos[i]+height-jump[i];
if(health[i]>0){
image(images, xP[i],yP[i],100,-160);
}
langeweilezeit[i]++;
switch(zustand[i]){
case 0:
if(langeweilezeit[i]<aktionszeit[i]){
}else{
zustand[i] = floor(random(0,4));
langeweilezeit[i] = 0;
aktionszeit[i] = random(minaktionszeit,maxaktionszeit);
}
break;
case 1: //links gehen
if(langeweilezeit[i]<aktionszeit[i]){
xPos[i] = xPos[i]-walkspeed;
}else{
zustand[i] = 0;
langeweilezeit[i] = 0;
aktionszeit[i] = 2*random(minaktionszeit,maxaktionszeit);
}
break;
case 2: //rechts gehen
if(langeweilezeit[i]<aktionszeit[i]){
xPos[i] = xPos[i]+walkspeed;
}else{
zustand[i] = 0;
langeweilezeit[i] = 0;
aktionszeit[i] = 2*random(minaktionszeit,maxaktionszeit);
}
break;
case 3: //springen
if(jump[i]>=0){
jump[i] = (langeweilezeit[i]-langeweilezeit[i]*langeweilezeit[i]/20)*20;
}else{
jump[i] = 0;
zustand[i] = 0;
langeweilezeit[i] = 0;
aktionszeit[i] = 2*random(minaktionszeit,maxaktionszeit);
}
break;
}
}
}
}
}
class kasten {
int hoehe = 45;
int breite = 45;
int tastenanzahl = 0;
boolean geoeffnet;
kasten() {
}
void display() {
if (keyPressed == true && key == '1') {
alleitemsaus();
karte.w.raktenwerfer = true;
}
if (keyPressed == true && key == '2') {
alleitemsaus();
karte.w.shotgun = true;
}
if (keyPressed == true && key == '3') {
alleitemsaus();
karte.w.mine = true;
}
if (keyPressed == true && key == '4') {
alleitemsaus();
karte.w.bombe = true;
}
if (keyPressed == true && key == '5') {
alleitemsaus();
karte.w.miningdrill = true;
spieler.aktiv = false;
}
if (keyPressed == true && key == '6') {
alleitemsaus();
karte.w.pinsel = true;
}
if(tastenanzahl == 1 ) {
if (geoeffnet == false){
geoeffnet = true;
} else {
geoeffnet = false
}
}
if (keyPressed == true) {
if(key == 'e') {
tastenanzahl = tastenanzahl + 1;
}
}else{
tastenanzahl = 0;
}
if(geoeffnet) {
fill(255);
rect(400-(hoehe*5),400,hoehe,breite); //links
rect(400-(hoehe*4),400,hoehe,breite); //links
rect(400-(hoehe*3),400,hoehe,breite); //links
rect(400-(hoehe*2),400,hoehe,breite); //links
rect(400-hoehe,400,hoehe,breite); //links
rect(400,400,hoehe,breite); //mitte
rect(400+hoehe,400,hoehe,breite); //rechts
rect(400+(hoehe*2),400,hoehe,breite); //rechts
rect(400+(hoehe*3),400,hoehe,breite); //rechts
rect(400+(hoehe*4),400,hoehe,breite); //rechts
// rect(400+(hoehe*5),400,hoehe,breite); //rechts
//Zeile 2
rect(400-(hoehe*7),400+hoehe+3,hoehe,breite); //links 2
rect(400-(hoehe*5),400+hoehe+3,hoehe,breite); //links
rect(400-(hoehe*4),400+hoehe+3,hoehe,breite); //links
rect(400-(hoehe*3),400+hoehe+3,hoehe,breite); //links
rect(400-(hoehe*2),400+hoehe+3,hoehe,breite); //links
rect(400-hoehe,400+hoehe+3,hoehe,breite); //links
rect(400,400+hoehe+3,hoehe,breite); //mitte
rect(400+hoehe,400+hoehe+3,hoehe,breite); //rechts
rect(400+(hoehe*2),400+hoehe+3,hoehe,breite); //rechts
rect(400+(hoehe*3),400+hoehe+3,hoehe,breite); //rechts
rect(400+(hoehe*4),400+hoehe+3,hoehe,breite); //rechts
// rect(400+(hoehe*5),400+hoehe+3,hoehe,breite); //rechts
rect(400+(hoehe*6),400+hoehe+3,hoehe,breite); //rechts 2
fill(0,80,255);
textSize(17);
// textAlign(RIGHT,BOTTOM);
textAlign(RIGHT, BOTTOM);
// text("137",400-(hoehe*4),hoehe+3);
textSize(25);
textAlign(LEFT,BOTTOM);
//hier bitte auch mit MouseX und MouseY programmieren
}
}
}
class map {
boden b;
waffe w;
sonne s;
erze e;
rakete r;
menu m;
laden l;
boolean aktiv = true;
map(String cs,int cr) {
b = new boden();
w = new waffe();
s = new sonne(cs,cr);
e = new erze();
r = new rakete();
m = new menu();
l = new laden();
}
void zeichne() {
b.display();
w.display();
s.display();
e.display();
r.display();
l.display();
m.display();
}
}
class boden {
int renderdistance = 500; //8000
int maxhoehe = 800;
int minhoehe = 150;
int mapsize = 10000;
int chunksize = 20;
int steilheit = 1.8;
int jump;
int jumptime;
boolean springen;
int karty;
int hoehe;
int walkspeed = 150*chunksize/100;
int walkspeed2;
int chunky1;
int chunky2;
int chunkx;
int alpha;
int[] x = new int[mapsize]; //*100/chunksize
int u = 2;
int kart = -x.length*chunksize/2;
int kart2 = spieler.p.x- kart+chunksize;
boden() {
}
void display() {
for ( ;u<x.length; u++) {
x [0] = 200;
x [1] = 200;
x[u] = Math.abs(
x[u-1] // wie die letzt höhe
+ (x[u-1] - x[u-2]) //wie die letzte steigung
/( (2+Math.abs
(steilheit*6-Math.abs(x[u-1] - x[u-2]))
-(steilheit*6-Math.abs(x[u-1] - x[u-2]))
)/2)
+random(-steilheit-(Math.abs(maxhoehe-x[u-1])-(maxhoehe-x[u-1]))/2
,steilheit+
(Math.abs(x[u-1]-minhoehe)-(x[u-1]-minhoehe))/2)/chunksize*25);
}
noStroke ();
for (int i = (Math.floor(kart2/chunksize)-renderdistance/chunksize); i < (Math.floor(kart2/chunksize)+renderdistance/chunksize); i++) {
stroke(0,205,0);
strokeWeight(33);
noFill();
curve(
chunksize*i-1*chunksize+kart,height-x[i+0]+karty,
chunksize*i+0*chunksize+kart,height-x[i+1]+karty,
chunksize*i+1*chunksize+kart,height-x[i+2]+karty,
chunksize*i+2*chunksize+kart,height-x[i+3]+karty);
noStroke();
strokeWeight(1);
fill(139,69,19); //Braun
stroke(139,69,19);
quad(chunksize*i-chunksize+kart,height+karty,
chunksize*i+kart+1,height+karty,
chunksize*i+kart+1,height-x[i+1]+karty,
chunksize*i-chunksize+kart,height-x[i+0]+karty); //Erde
stroke(0);
//gestein
fill(100,100,100);
image(webImg5,0,500+karty);
if((karty-x[i+0])<0){
}
}
if(karte.b.kart2<renderdistance){
karte.b.kart = karte.b.kart -x.length*chunksize+2*renderdistance;
karte.b.kart2 = karte.b.kart2 +x.length*chunksize-2*renderdistance;
}
if(karte.b.kart2>x.length*chunksize-renderdistance){
karte.b.kart = karte.b.kart +x.length*chunksize-2*renderdistance;
karte.b.kart2 = karte.b.kart2 -x.length*chunksize+2*renderdistance;
}
}
}
class rakete {
boolean launched = false;
int rockettexture;
int raketenzustand = 0;
int xrakete;
int yrakete;
int winkel;
int raketenspeed = 13;
int altekart;
int altekart2;
int altehoehe;
int hoehenabweichung;
int yspielerabweichung;
int altespielerpx;
int starttime;
int m;
int raketentreibstoff;
int norocketboosttime;
int xexplosion;
int yexplosion;
int explosionsradius = 100;
rakete() {
rockettexture = loadImage("http://vignette4.wikia.nocookie.net/fallout/images/c/c3/FNV_ICBM_rocket.png/revision/latest?cb=20140408142037");
}
void display() {
if(launched){
// rect(100,100,200,200);
switch(raketenzustand){
case 0: //Initialisierung
karte.w.nowalk = true;
mob.a.nodrive = true;
xrakete = spieler.p.x;
yrakete = spieler.p.y;
starttime = starttime + (millis()-m);
m = millis();
fill(255,0,0);
textSize(100-(starttime%1000)/15);
text(ceil(starttime/1000),350,250);
resetgrapic();
if(starttime>3000){
altekart = karte.b.kart;
altekart2 = karte.b.kart2;
xrakete = spieler.p.x;
yrakete = spieler.p.y;
altehoehe = karte.b.hoehe;
altespielerpx = spieler.p.x;
raketentreibstoff = 100;
raketenzustand = 1;
}
break;
case 1: //Flug
raketentreibstoff = raketentreibstoff - 0.4;
fill(100,255,100);
rect(20,460,raketentreibstoff,20);
if(raketentreibstoff < 1){
raketentreibstoff = 0;
norocketboosttime++;
}else{
norocketboosttime = 0;
}
yspielerabweichung = yspielerabweichung - raketenspeed*sin(winkel-PI/2)-norocketboosttime;
karte.b.jump = yspielerabweichung-karte.b.hoehe + altehoehe;
if( ((abs(winkel)) % (2*PI)) > (PI) ){
if(xrakete > width/4) {
// xrakete = xrakete + raketenspeed*cos(winkel-PI/2);
} else {
karte.b.kart = karte.b.kart - raketenspeed*cos(winkel-PI/2);
spieler.p.x = spieler.p.x - raketenspeed*cos(winkel-PI/2);
}
}else {
if(xrakete < 3*width/4) {
// xrakete = xrakete + raketenspeed*cos(winkel-PI/2);
} else {
karte.b.kart = karte.b.kart - raketenspeed*cos(winkel-PI/2);
spieler.p.x = spieler.p.x - raketenspeed*cos(winkel-PI/2);
}
}
if((yspielerabweichung+altehoehe+100)< (hoehenausgabe(-karte.b.kart+xrakete)) ){
// raketenzustand = 2;
}
xexplosion = xrakete-karte.b.kart;
yexplosion = yspielerabweichung+altehoehe+100;
break;
case 2: //explosion
winkel = 0;
fill(256-raketenexplosionszeit*3,0,0);
ellipse(xrakete,yrakete,raketenexplosionszeit,raketenexplosionszeit);
raketenexplosionszeit = raketenexplosionszeit +7;
if(raketenexplosionszeit> 100){
explosion(xrakete-karte.b.kart,yrakete+karte.b.karty,explosionsradius);
spieler.p.x = altespielerpx;
karte.b.kart = altekart;
karte.b.kart2 = altekart2;
yrakete = 0;
xrakete = 0;
yspielerabweichung = 0;
karte.b.jump = 0;
fill(255,0,0);
raketenexplosionszeit = 0;
nowalk = false;
mob.a.nodrive = false;
karte.b.springen = true;
raketenzustand = 0;
}
break;
}
if (keyPressed==true && keyCode == RIGHT) {
winkel = winkel +0.13;
}
if (keyPressed==true && keyCode == LEFT) {
winkel = winkel -0.13;
}
}else{
m = millis();
}
pushMatrix();
translate(xrakete, yrakete+36);
rotate(winkel);
image(rockettexture,-45,-125,90,250);
popMatrix();
}
}
class menu {
boolean geoeffneth = false;
boolean geoeffnets = false;
boolean geoeffneta = false;
boolean music = true;
boolean sound = true;
int tmusic;
int tsound;
int tastenanzahl = 0;
boolean geoeffnet = true;
boolean noinfo = true;
boolean loadmap;
int u = 2;
int ikart = 10000;
int ik = 10000;
int ib = 10000;
int ig = 10000;
int ie = 10000;
int igame = 10000;
int[] gamedata = new int [16];
menu() {
}
void display() {
gamedata[0] = karte.l.Geld;
gamedata[1] = mob.z.health;
gamedata[2] = mob.j.fuel;
gamedata[3] = karte.b.kart2;
gamedata[4] = karte.e.kohleinv;
gamedata[5] = karte.e.bauxitinv;
gamedata[6] = karte.e.goldinv;
gamedata[7] = karte.e.emeraldinv;
gamedata[8] = karte.l.xwaffenladen;
gamedata[9] = karte.l.xraketenladen;
gamedata[10] = karte.l.xerzladen;
gamedata[11] = karte.l.xitemladen;
gamedata[12] = karte.b.kart;
if(tastenanzahl == 1 ) {
if (geoeffnet == false){
geoeffnet = true;
inv.aktiv = false;
mob.aktiv= false;
spieler.aktiv = false;
} else {
geoeffnet = false;
noinfo = false;
karte.w.nowalk = false;
karte.w.noitem = false;
mob.a.nodrive = false;
inv.aktiv = true;
spieler.aktiv = true;
mob.aktiv= true;
}
}
if (keyPressed == true) {
if(key == 'm') {
tastenanzahl = tastenanzahl + 1;
}
}else{
tastenanzahl = 0;
}
if(geoeffnet) {
image(webImg7, 0, 0);
karte.w.nowalk =true;
karte.w.noitem = true;
mob.a.nodrive = true;
noinfo = true;
textSize(50);
textAlign(LEFT,TOP);
fill(255,00,100);
if(100 < mouseX && mouseX < 400 && 35 < mouseY && mouseY < 115){
fill(255,100,0);
if (mousePressed && (mouseButton == LEFT)) {
karte.b.kart = -karte.b.x.length*karte.b.chunksize/2;
karte.b.kart2 = spieler.p.x- karte.b.kart+karte.b.chunksize;
karte.b.u = 2;
karte.e.ik = 0;
karte.e.ib = 0;
karte.e.ig = 0;
karte.e.ie = 0;
karte.l.xwaffenladen = zufallsx();
karte.l.xraketenladen = zufallsx();
karte.l.xerzladen = zufallsx();
karte.l.xitemladen = zufallsx();
karte.e.kohleinv = 0;
karte.e.bauxitinv = 0;
karte.e.goldinv = 0;
karte.e.emeraldinv = 0;
mob.z.health = 200;
karte.l.Geld = 10;
mob.j.fuel = 0;
mob.mensch1.u = 0;
mob.mensch2.u = 0;
mob.mensch3.u = 0;
mob.mensch4.u = 0;
mob.zug1.u = 0;
mob.see.u = 0;
mob.stadt.u = 0;
mob.see.u2 = 0;
mob.stadt.u2 = 0;
karte.b.springen = true;
geoeffnet = false;
noinfo = false;
karte.w.nowalk = false;
mob.a.nodrive = false;
karte.w.noitem = false;
inv.aktiv = true;
spieler.aktiv = true;
mob.aktiv= true;
}
}
text("New World",100,50);
fill(255,00,100);
if(100 < mouseX && mouseX < 400 && 135 < mouseY && mouseY < 215){
fill(255,100,0);
if (mousePressed && (mouseButton == LEFT)) {
karte.b.springen = true;
ikart = 0;
igame = 0;
ik = 0;
ib = 0;
ig = 0;
ie = 0;
loadmap = true;
geoeffnet = false;
noinfo = false;
karte.w.nowalk = false;
mob.a.nodrive = false;
karte.w.noitem = false;
inv.aktiv = true;
spieler.aktiv = true;
mob.aktiv= true;
}
}
text("Load Game",100,150);
fill(255,00,100);
if(100 < mouseX && mouseX < 400 && 235 < mouseY && mouseY < 315){
fill(255,100,0);
if (mousePressed && (mouseButton == LEFT)) {
saveStrings("kartendata.txt",karte.b.x);
saveStrings("gamedat.txt",gamedata);
saveStrings("datakohlex.txt",karte.e.xkohle);
saveStrings("databauxitx.txt",karte.e.xbauxit);
saveStrings("datagoldx.txt",karte.e.xgold);
saveStrings("dataemeraldx.txt",karte.e.xemerald);
saveStrings("datakohley.txt",karte.e.ykohle);
saveStrings("databauxity.txt",karte.e.ybauxit);
saveStrings("datagoldy.txt",karte.e.ygold);
saveStrings("dataemeraldy.txt",karte.e.yemerald);
}
}
text("Save Game",100,250);
fill(255,00,100);
if(100 < mouseX && mouseX < 400 && 335 < mouseY && mouseY < 415){
fill(255,100,0);
if (mousePressed && (mouseButton == LEFT)) {
fill(0);
rect(0,0,width,height);
System.exit();
}
}
text("Exit",100,350);
textSize(25);
fill(255,255,0);
if(100 < mouseX && mouseX < 200 && 445 < mouseY && mouseY < 485){
fill(200,200,100);
if (mousePressed && (mouseButton == LEFT)) {
geoeffnets = true;
}
}
textAlign(LEFT,TOP);
text("Settings",100,450);
if(geoeffnets == true){
window();
if(closewindow() == true){
geoeffnets = false;
}
}
//archievements
fill(255,255,0);
if(250 < mouseX && mouseX < 400 && 445 < mouseY && mouseY < 485){
fill(200,200,100);
if (mousePressed && (mouseButton == LEFT)) {
geoeffneta = true;
}
}
textAlign(LEFT,TOP);
text("Archievements",250,450);
if(geoeffneta == true){
window();
if(closewindow() == true){
geoeffneta = false;
}
}
//help
fill(255,255,0);
if(500 < mouseX && mouseX < 570 && 445 < mouseY && mouseY < 485){
fill(200,200,100);
if (mousePressed && (mouseButton == LEFT)) {
geoeffneth = true;
}
}
textAlign(LEFT,TOP);
text("Help",500,450);
if(geoeffneth == true){
window();
if(closewindow() == true){
geoeffneth = false;
}
}
//credits
if(650 < mouseX && mouseX < 730 && 445 < mouseY && mouseY < 485){
fill(200,200,100);
if (mousePressed && (mouseButton == LEFT)) {
fill(random(100,255),random(100,255),random(100,255));
text("Tobias v. d. Reith and Sebastian R.",400,400,650,450);
}
fill(200,200,100);
}else{
fill(255,255,0);
}
textAlign(LEFT,TOP);
text("Credits",650,450);
//musik
if(music){
fill(0,255,0);
}else{
fill(255,0,0);
}
if(600 < mouseX && mouseX < 670 && 0 < mouseY && mouseY < 35){
if(music){
fill(120,255,120);
}else{
fill(255,120,120);
}
if (mousePressed && (mouseButton == LEFT)) {
tmusic++;
}else{
tmusic = 0;
}
}
if(tmusic == 1){
if(music){
music= false;
}else{
music= true;
}
}
textAlign(LEFT,TOP);
text("Musik",600,0);
//Sound
if(sound){
fill(0,255,0);
}else{
fill(255,0,0);
}
if(700 < mouseX && mouseX < 780 && 0 < mouseY && mouseY < 35){
if(sound){
fill(120,255,120);
}else{
fill(255,120,120);
}
if (mousePressed && (mouseButton == LEFT)) {
tsound++;
}else{
tsound = 0;
}
}
if(tsound == 1){
if(sound){
sound = false;
}else{
sound = true;
}
}
textAlign(LEFT,TOP);
text("Sound",700,0);
textSize(70);
fill(100,255,0);
// text("Stickman Evolved",450,150,500,800);
textAlign(TOP);
textSize(25);
}
if(loadmap == true){
String[] datal = loadStrings("kartendata.txt");
String[] datag = loadStrings("gamedat.txt");
String[] datakx = loadStrings("datakohlex.txt");
String[] databx = loadStrings("databauxitx.txt");
String[] datagx = loadStrings("datagoldx.txt");
String[] dataex = loadStrings("dataemeraldx.txt");
String[] dataky = loadStrings("datakohley.txt");
String[] databy = loadStrings("databauxity.txt");
String[] datagy = loadStrings("datagoldy.txt");
String[] dataey = loadStrings("dataemeraldy.txt");
for (; ikart < datal.length; ikart++){
karte.b.x[ikart] = datal[ikart]/1;
}
for (; igame < 1; igame++){
// karte.b.kart = datag [12];
//karte.b.kart2 = datag[3];
karte.l.Geld = datag[0];
mob.z.health = datag[1];
mob.j.fuel = datag[2];
karte.e.kohleinv = datag[4];
karte.e.bauxitinv = datag[5];
karte.e.goldinv = datag[6];
karte.e.emeraldinv = datag[7];
karte.l.xwaffenladen = datag[8];
karte.l.xraketenladen = datag[9];
karte.l.xerzladen = datag[10];
karte.l.xitemladen = datag[11];
}
for (; ik < datakx.length; ik++){
karte.e.xkohle [ik] = datakx[ik]/1;
karte.e.ykohle [ik] = dataky[ik]/1;
}
for (; ib < databx.length; ib++){
karte.e.xbauxit [ib] = databx[ib]/1;
karte.e.ybauxit [ib] = databy[ib]/1;
}
for (; ig < datagx.length; ig++){
karte.e.xgold [ig] = datagx[ig]/1;
karte.e.ygold [ig] = datagy[ig]/1;
}
for (; ie < dataex.length; ie++){
karte.e.xemerald [ie] = dataex[ie]/1;
karte.e.yemerald [ie] = dataey[ie]/1;
}
// ellipse(datal[i]/5,100,10,10);
if(ikart >= datal.length
&& ik >= datakx.length
&& ib >= databx.length
&& ig >= datagx.length
&& ie >= dataex.length
&& igame >= 1
){
loadmap = false;
}
}
}
}
class laden {
//waffenladen
int xwaffenladen;
int ywaffenladen;
//raketenladen
int xraketenladen;
int yraketenladen;
//erzladen
int xerzladen;
int yerzladen;
//itemladen
int xitemladen;
int yitemladen;
int i = 0;
boolean geoeffnetw;
int tastenanzahlw;
boolean geoeffnetr;
int tastenanzahlr;
boolean geoeffnete;
int tastenanzahle;
boolean geoeffneti;
int tastenanzahli;
int kohlewert = 10;
int bauxitwert = 20;
int goldwert = 50;
int emeraldwert = 100;
int Geld= 10;
int tastenanzahl;
laden() {
// weltgenerieren ();
}
void display() {
for(;i<1;i++){
karte.l.xwaffenladen = zufallsx();
karte.l.xraketenladen = zufallsx();
karte.l.xerzladen = zufallsx();
karte.l.xitemladen = zufallsx();
}
ywaffenladen = hoehenausgabe(xwaffenladen);
yraketenladen = hoehenausgabe(xraketenladen);
yerzladen = hoehenausgabe(xerzladen);
yitemladen = hoehenausgabe(xitemladen);
//waffenladen
fill(0);
text("Weapon shop",xwaffenladen+karte.b.kart-75,height-ywaffenladen+karte.b.karty-110);
fill(0,255,255);
rect(xwaffenladen+karte.b.kart-100,height-ywaffenladen+karte.b.karty-100,200,100);
// ellipse(xPos+karte.b.kart,height-yPos+karte.b.karty,200,200);
//raketenladen
fill(0);
text("Rocket base",xraketenladen+karte.b.kart-75,height-yraketenladen+karte.b.karty-110);
fill(255,0,0);
rect(xraketenladen+karte.b.kart-100,height-yraketenladen+karte.b.karty-100,200,100);
//erzladen
fill(0);
text("Ore refinery",xerzladen+karte.b.kart-75,height-yerzladen+karte.b.karty-110);
fill(255,0,255);
rect(xerzladen+karte.b.kart-100,height-yerzladen+karte.b.karty-100,200,100);
//itemladen
fill(0);
text("Junk shop",xitemladen+karte.b.kart-75,height-yitemladen+karte.b.karty-110);
fill(255,255,0);
rect(xitemladen+karte.b.kart-100,height-yitemladen+karte.b.karty-100,200,100);
//waffenladen
if(tastenanzahlw == 1 ) {
if (geoeffnetw == false){
geoeffnetw = true;
}else{
geoeffnetw = false;
}
}
if (Math.abs(xwaffenladen+25-karte.b.kart2)<180&&Math.abs(ywaffenladen-karte.b.hoehe-karte.b.jump-100)<170) {
info("Press arrow key down to enter Weapon shop");
if (keyPressed == true) {
if(keyCode== DOWN) {
tastenanzahlw = tastenanzahlw + 1;
}
}else{
tastenanzahlw = 0;
}
}
if( geoeffnetw ){
window();
if(closewindow() == true){
geoeffnetw = false;
}
}
//raketenladen
if(tastenanzahlr == 1 ) {
if (geoeffnetr == false){
geoeffnetr = true;
}else{
geoeffnetr = false;
}
}
if (Math.abs(xraketenladen+25-karte.b.kart2)<180&&Math.abs(yraketenladen-karte.b.hoehe-karte.b.jump-100)<170) {
info("Press arrow key down to enter the rocket base");
if (keyPressed == true) {
if(keyCode== DOWN) {
tastenanzahlr = tastenanzahlr + 1;
}
}else{
tastenanzahlr = 0;
}
}
if( geoeffnetr ){
window();
if(closewindow() == true){
geoeffnetr = false;
}
fill(255,00,00);
rect(550-5,400-5,150,50);
textSize(50);
if(mouseX >545 && mouseX < 695 && mouseY > 395 && mouseY < 445){
fill(80);
if (mousePressed && (mouseButton == LEFT)) {
geoeffnetr = false;
}
}else{
fill(0);
}
text("launch",550-5,400-5+50);
karte.r.launched = true;
}
//erzladen
if(tastenanzahle == 1 ) {
if (geoeffnete == false){
geoeffnete = true;
}else{
geoeffnete = false;
}
}
if (Math.abs(xerzladen+25-karte.b.kart2)<180&&Math.abs(yerzladen-karte.b.hoehe-karte.b.jump-100)<170) {
info("Press arrow key down to enter the ore refinery");
if (keyPressed == true) {
if(keyCode== DOWN) {
tastenanzahle = tastenanzahle + 1;
}
}else{
tastenanzahle = 0;
}
}
if( geoeffnete ){
window();
if(closewindow() == true){
geoeffnete = false;
}
textAlign(LEFT,CENTER);
textSize(25);
strokeWeight(1);
fill(0,160,0);
text("Coal ore",190,75,130,50);
text("Bauxit ore",190,150,130,50);
text("Gold ore",190,225,130,50);
text("Emerald",190,300,130,50);
text(karte.e.kohleinv,340,75,60,50);
text(karte.e.bauxitinv,340,150,60,50);
text(karte.e.goldinv,340,225,60,50);
text(karte.e.emeraldinv,340,300,60,50);
text("x",420,75,20,50);
text("x",420,150,20,50);
text("x",420,225,20,50);
text("x",420,300,20,50);
text("= $"+kohlewert*karte.e.kohleinv,555,75,120,50);
text("= $"+bauxitwert*karte.e.bauxitinv,555,150,120,50);
text("= $"+goldwert*karte.e.goldinv,555,225,120,50);
text("= $"+emeraldwert*karte.e.emeraldinv,555,300,120,50);
text("$"+kohlewert,460,75,75,50);
text("$"+bauxitwert,460,150,75,50);
text("$"+goldwert,460,225,75,50);
text("$"+emeraldwert,460,300,75,50);
strokeWeight(3);
stroke(0,160,0);
line(560,375,670,375);
strokeWeight(0);
noStroke();
textAlign(RIGHT,CENTER);
text("$"+round(emeraldwert*karte.e.emeraldinv+goldwert*karte.e.goldinv+bauxitwert*karte.e.bauxitinv+kohlewert*karte.e.kohleinv),460,375,220,50);
textAlign(CENTER,CENTER);
if(310 < mouseX && mouseX < 480 && 375 < mouseY && mouseY < 425){
if (mousePressed && (mouseButton == LEFT)) {
Geld = Geld +round(emeraldwert*karte.e.emeraldinv+goldwert*karte.e.goldinv+bauxitwert*karte.e.bauxitinv+kohlewert*karte.e.kohleinv);
karte.e.kohleinv = 0;
karte.e.bauxitinv = 0;
karte.e.goldinv = 0;
karte.e.emeraldinv = 0;
}
fill(0);
} else {
fill(0,random(120,200),0);
}
text("[SELL ALL]",300,375,200,50);
//Kohle
oretexture (120,75,0,0,0);
//Bauxit
oretexture (120,150,180,180,180);
//Gold
oretexture (120,225,255,255,0);
//Emerald
emeraldtexture(125,300);
}
//itemladen
if(tastenanzahli == 1 ) {
if (geoeffneti == false){
geoeffneti = true;
}else{
geoeffneti = false;
}
}
if (Math.abs(xitemladen+25-karte.b.kart2)<180&&Math.abs(yitemladen-karte.b.hoehe-karte.b.jump-100)<170) {
info("Press arrow key down to enter the Junk shop");
if (keyPressed == true) {
if(keyCode== DOWN) {
tastenanzahli = tastenanzahli + 1;
}
}else{
tastenanzahli = 0;
}
}
if( geoeffneti ){
window();
if(closewindow() == true){
geoeffneti = false;
}
}
if( geoeffnetw == true || geoeffnete == true || geoeffnete == true || geoeffneti == true){
tastenanzahl = 0;
karte.w.nowalk =true;
karte.w.noitem = true;
mob.a.nodrive = true;
}else{
tastenanzahl++;
}
if(tastenanzahl == 1) {
karte.w.nowalk =false;
karte.w.noitem = false;
mob.a.nodrive = false;
}
}
}
class textfeld {
boolean aktiv = true;
int score;
int radius; //coin
String ziel = "";
farbe f;
textfeld(String cs,int mr) {
erzielt();
f = new farbe(cs);
radius = mr;
return ziel;
}
String erzielt() {
ziel = "";
for (int i = 0; i<1;i++) {
}
return ziel;
}
void display() {
ziel = karte.l.Geld;
//height-100-karte.b.jump-karte.b.hoehe;
if(karte.m.noinfo == false){
fill(255);
rect(3,3,170 , 50, 7); //feld
fill(f.rot,f.gruen,f.blau);
ellipse(18,26,radius,radius);
}
}
}
class waffe {
boolean noitem = false;
boolean nowalk;
boolean rechts;
boolean miningdrill = false;
boolean shotgun = false;
boolean mine = false;
boolean raktenwerfer = true;
boolean bombe = false;
boolean pinsel = false;
int leertastenanzahl;
int shotgunammo = 10;
int shotgunbullettime=800;
int shotgunbulletspeed = 20;
int shotgunbulletspeed2;
int xPs;
int yPs;
int xPoss;
int yPoss;
int shotguntexture;
int minenzeit;
int mineninv = 7;
int minennummer;
int maxminenanzahl = 3;
int xPm;
int yPm;
int[] xPosm = new int[maxminenanzahl];
int[] yPosm = new int[maxminenanzahl];
int winkel;
boolean raketeausrichten;
boolean raketesteuern;
int raketentastenanzahl;
int raketenzustand = 0;
int raketenspeed = 13;
int altekart;
int altekart2;
int altehoehe;
int hoehenabweichung;
int xrakete;
int yrakete;
int yspielerabweichung;
int altespielerpx;
int raketentreibstoff;
int raketennachladung = 20;
int norocketboosttime;
int raketenexplosionszeit;
int xexplosion;
int yexplosion;
int explosionsradius = 100;
int pinseli;
int pinselstriche = 1000;
int[] pinselstrichx = new int[pinselstriche];
int[] pinselstrichy = new int[pinselstriche];
int[] pinselr = new int[pinselstriche];
int[] pinselg = new int[pinselstriche];
int[] pinselb = new int[pinselstriche];
int[] pinsels = new int[pinselstriche];
int pr= 50;
int pg= 50;
int pb= 50;
int ps = 50;
int bombtexture;
int remotetexture;
int landminetexture;
int drilltexture;
int bombenzustand;
int bombeninv = 7;
int xPosb;
int yPosb;
int xPb;
int yPb;
int drillfuel = 100;
int drillradius = 200;
int drillspeed = 1;
int drillfuelconsumtion = 0.02;
int m;
waffe() {
shotguntexture = loadImage("http://pre07.deviantart.net/6ac5/th/pre/f/2015/087/8/0/shotgun_by_francotieppo-d5d99eg.png");
bombtexture = loadImage("https://vignette2.wikia.nocookie.net/fallout/images/1/1e/C-4plasticexplosive.png/revision/latest?cb=20110209083859");
remotetexture = loadImage("https://www.bittel.bg/web/img/201409/1575/3054/0/remote-control-nippon-eck-7031-r.png");
landminetexture = loadImage("http://vignette3.wikia.nocookie.net/fallout/images/c/c4/FragMine.png/revision/latest?cb=20110209084434");
drilltexture = loadImage("http://www.mecalac.com/medias/1478507293_mecalac-as-210e-3-4-png.png");
// http://www.holeproducts.com/userfiles/fck/image/products/drill_bits_and_accessories/image5.png");
}
void display() {
if (keyPressed==true && keyCode==LEFT) {
rechts = false;
}
if (keyPressed==true && keyCode==RIGHT) {
rechts = true;
}
fill(117,117,117);
// rect (bulletposx-10,bulletposy-4,10,8)
// ellipse(bulletposx,bulletposy,20,8);
if (keyPressed==true && key == ' ') {
leertastenanzahl++;
}else{
leertastenanzahl = 0;
}
if (noitem == false){
if(bombe){
switch(bombenzustand){
case 0:
if(bombeninv>0){
image(bombtexture,spieler.p.x-30,spieler.p.y+30,60,40);
// ellipse(200,200,200,200);
if(leertastenanzahl == 1){
bombeninv--;
xPosb = karte.b.kart2;
yPosb = height-hoehenausgabe(xPosb);
bombenzustand = 1;
}
}
break;
case 1:
image(remotetexture,spieler.p.x-10,spieler.p.y+30,60,40);
if(leertastenanzahl == 1){
explosion(xPosb,yPosb,200);
xPosb = -1000;
bombenzustand = 0;
}
break;
}
}
xPb =xPosb + karte.b.kart;
yPb =yPosb + karte.b.karty;
image(bombtexture,xPb-30,yPb-20,60,40);
if(mine){
if(mineninv>0){
// fill(0,120,0);
// ellipse(spieler.p.x,spieler.p.y+60,50,15);
// fill(255,0,0);
// ellipse(spieler.p.x-20,spieler.p.y-5+60,50,15);
image(landminetexture,spieler.p.x-30,spieler.p.y+30,60,40);
if (leertastenanzahl == 1) {
xPosm[minennummer] = karte.b.kart2;
yPosm[minennummer] = height-karte.b.hoehe;
minennummer++;
mineninv--;
minenzeit = 0;
}
}
}
minenzeit++;
for(int mi = 0; mi < (minennummer) ;mi++){
xPm = xPosm[mi]+karte.b.kart;
yPm = yPosm[mi]+karte.b.karty;
// fill(0,120,0);
// ellipse(xPm,yPm,50,15);
// fill(255,0,0);
// ellipse(xPm,yPm-5,50,15);
image(landminetexture,xPm-40,yPm-30,60,40);
if(minenzeit>30){
if( ( bewegungsmelder(xPosm[mi],yPosm[mi],20) ) > 0 ){
explosion(xPosm[mi],yPosm[mi],100);
xPosm[mi] = -1000;
minenzeit = 0;
}
}
}
if(pinsel){
if (mousePressed && (mouseButton == LEFT)) {
pinseli++;
pinselstrichx[pinseli] = mouseX-karte.b.kart;
pinselstrichy[pinseli] = mouseY-karte.b.karty;
pinsels[pinseli] = ps/2+1;
pinselr[pinseli] = 255*pr/100;
pinselg[pinseli] = 255*pg/100;
pinselb[pinseli] = 255*pb/100;
}
for(int ai = 0; ai<100; ai++){
stroke(100,100,100);
line(680+ai,100,680+ai,100+ai/3);
stroke(255*ai/100,0,0);
line(680+ai,140,680+ai,170);
stroke(0,255*ai/100,0);
line(680+ai,180,680+ai,210);
stroke(0,0,255*ai/100);
line(680+ai,220,680+ai,250);
}
if (mousePressed && (mouseButton == LEFT)) {
if(680<mouseX && mouseX < 780){
if(100 < mouseY && mouseY < 133){
ps = mouseX - 680;
}
if(140 < mouseY && mouseY < 170){
pr = mouseX - 680;
}
if(180 < mouseY && mouseY < 210){
pg = mouseX - 680;
}
if(220 < mouseY && mouseY < 250){
pb = mouseX - 680;
}
}
}
fill(255*pr/100,255*pg/100,255*pb/100);
ellipse(mouseX,mouseY,ps/2+1,ps/2+1);
fill(0);
rect(680+ps,100-2,4,8+ps/3);
fill(255-255*pr/100);
rect(680+pr,140-2,4,34);
fill(255-255*pg/100);
rect(680+pg,180-2,4,34);
fill(255-255*pb/100);
rect(680+pb,220-2,4,34);
}
for(int pi = 0;pi<(pinseli-3);pi++){
fill(pinselr[pi],pinselg[pi],pinselb[pi]);
stroke(pinselr[pi],pinselg[pi],pinselb[pi]);
strokeWeight(pinsels[pi]);
// line(pinselstrichx[pi]+karte.b.kart,pinselstrichy[pi]+karte.b.karty, pinselstrichx[pi+1]+karte.b.kart,pinselstrichy[pi+1]+karte.b.karty );
curve(pinselstrichx[pi]+karte.b.kart,pinselstrichy[pi]+karte.b.karty,
pinselstrichx[pi+1]+karte.b.kart,pinselstrichy[pi+1]+karte.b.karty,
pinselstrichx[pi+2]+karte.b.kart,pinselstrichy[pi+2]+karte.b.karty,
pinselstrichx[pi+3]+karte.b.kart,pinselstrichy[pi+3]+karte.b.karty );
noStroke();
stroke(0);
strokeWeight(1);
// ellipse( pinselstrichx[pi]+karte.b.kart,pinselstrichy[pi]+karte.b.karty,pinsels[pi],pinsels[pi] );
}
if(miningdrill){
if(rechts == true){
image(drilltexture,spieler.p.x-95,spieler.p.y-55,300,200);
}else{
pushMatrix();
scale(-1,1);
image(drilltexture,-200-(spieler.p.x-95),spieler.p.y-55,300,200);
popMatrix();
}
fill(100,255,100);
rect(20,460,drillfuel,20);
if (keyPressed==true && key == ' ') {
if(drillfuel>0){
drillfuel=drillfuel-drillfuelconsumtion*(millis()-m)/1000;
m = millis();
// for(int i = -Math.abs(width/karte.b.chunksize)*10; i< Math.abs(width/karte.b.chunksize)*10;i++) {
//karte.b.x[i+Math.floor(karte.b.kart2/karte.b.chunksize)] =
// karte.b.x[i+Math.floor(karte.b.kart2/karte.b.chunksize)]
// -Math.abs(90/(Math.abs(i)+35));
// }
for(int i = -drillradius/karte.b.chunksize;i< (drillradius/karte.b.chunksize);i++){
karte.b.x[i+Math.floor(karte.b.kart2/karte.b.chunksize)] = karte.b.x[i+Math.floor(karte.b.kart2/karte.b.chunksize)] -drillspeed;
//*sin(PI*abs(0.5*i/(drillradius/karte.b.chunksize) ));
}
}
}else{
m = millis();
}
}
if(shotgun){
fill(120);
// rect(spieler.p.x-60+rechts*50,spieler.p.y+50,70,6);
if(rechts == true){
image(shotguntexture,spieler.p.x-70,spieler.p.y+40,140,30);
}else{
pushMatrix();
scale(-1,1);
image(shotguntexture,-140-(spieler.p.x-70),spieler.p.y+40,140,30);
// rect(-100,-100,200,200);
popMatrix();
}
if(leertastenanzahl == 1){
if(shotgunammo>0){
shotgunammo--;
xPoss = karte.b.kart2-20+(rechts*2-1)*50;
yPoss = height-100-karte.b.jump-karte.b.hoehe+50;
shotgunbullettime = 0;
shotgunbulletspeed2 = (rechts*2-1)*shotgunbulletspeed;
}
}
if(shotgunbullettime< (karte.b.renderdistance/shotgunbulletspeed) ){
shotgunbullettime++;
}else{
xPoss = -1000;
}
xPs = xPoss+shotgunbulletspeed2*shotgunbullettime+karte.b.kart;
yPs = yPoss+karte.b.karty;
ellipse(xPs,yPs,10,10);
ellipse(xPs,yPs+shotgunbullettime/2,10,10);
ellipse(xPs,yPs-shotgunbullettime/2,10,10);
damage(xPoss+shotgunbulletspeed2*shotgunbullettime,yPoss,shotgunbulletspeed,100);
}
if(raktenwerfer){
if (keyPressed==true && key == ' ') {
raketentastenanzahl++;
}else{
raketentastenanzahl = 0;
}
if(raketentastenanzahl == 1 && raketennachladung > 0){
raketenzustand++;
}
switch(raketenzustand % 4){
case 0: //zeichne einen raktenwerfer in der hand
winkel = -0.3;
break;
case 1: //den abschusswinkel waehlen
nowalk = true;
mob.a.nodrive = true;
altekart = karte.b.kart;
altekart2 = karte.b.kart2;
xrakete = spieler.p.x;
yrakete = spieler.p.y;
altehoehe = karte.b.hoehe;
altespielerpx = spieler.p.x;
raketentreibstoff = 100;
break;
case 2: //rakete steuern
raketentreibstoff = raketentreibstoff - 0.4;
fill(100,255,100);
rect(20,460,raketentreibstoff,20);
if(raketentreibstoff < 1){
raketentreibstoff = 0;
norocketboosttime = norocketboosttime + 0.7;
}else{
norocketboosttime = 0;
}
yspielerabweichung = yspielerabweichung - raketenspeed*sin(winkel)-norocketboosttime;
karte.b.jump = yspielerabweichung-karte.b.hoehe + altehoehe;
//karte.b.kart2 = karte.b.kart2 + raketenspeed*cos(winkel);
if( ((abs(winkel)+PI/2) % (2*PI)) > (PI) ){
if(xrakete > width/4) {
xrakete = xrakete + raketenspeed*cos(winkel);
} else {
karte.b.kart = karte.b.kart - raketenspeed*cos(winkel);
spieler.p.x = spieler.p.x - raketenspeed*cos(winkel);
}
}else {
if(xrakete < 3*width/4) {
xrakete = xrakete + raketenspeed*cos(winkel);
} else {
karte.b.kart = karte.b.kart - raketenspeed*cos(winkel);
spieler.p.x = spieler.p.x - raketenspeed*cos(winkel);
}
}
if((yspielerabweichung+altehoehe+100)< (hoehenausgabe(-karte.b.kart+xrakete)) ){
raketenzustand = 3;
}
xexplosion = xrakete-karte.b.kart;
yexplosion = yspielerabweichung+altehoehe+100;//yrakete+karte.b.karty;
break;
case 3: //rakete explodiert
// fill(256-raketenexplosionszeit*3,0,0);
// ellipse(xrakete,yrakete,raketenexplosionszeit,raketenexplosionszeit);
if(raketenexplosionszeit == 0){
explosion(xrakete-karte.b.kart,yrakete+karte.b.karty,explosionsradius);
}
raketenexplosionszeit = raketenexplosionszeit +3;
if(raketenexplosionszeit> 100){
spieler.p.x = altespielerpx;
karte.b.kart = altekart;
karte.b.kart2 = altekart2;
yrakete = 0;
xrakete = 0;
yspielerabweichung = 0;
karte.b.jump = 0;
fill(255,0,0);
raketenexplosionszeit = 0;
nowalk = false;
mob.a.nodrive = false;
karte.b.springen = true;
raketennachladung = raketennachladung - 1;
raketenzustand = 0;
}
break;
}
pushMatrix();
rectMode(CENTER);
translate(spieler.p.x, spieler.p.y+36);
rotate(winkel);
image(webImg8, -60, -10,140,40);
rectMode(CORNER);
popMatrix();
pushMatrix();
rectMode(CENTER);
translate(xrakete, yrakete+36);
rotate(winkel);
fill(255,0,255);
//rect(0, 0, 40, 8);
image(webImg9, -30, -12,130,40);
rectMode(CORNER);
popMatrix();
if (keyPressed==true && keyCode == RIGHT) {
winkel = winkel +0.13;
}
if (keyPressed==true && keyCode == LEFT) {
winkel = winkel -0.13;
}
}
}
}
}
class sonne {
int schnelligkeit = 0.05;
boolean nacht;
int radius;
int zeit= 220;
// farbe f;
sonne(String cs, int cr) {
// f = new farbe(cs);
radius = cr;
}
void display() {
if(nacht){
zeit = zeit -schnelligkeit;
} else {
zeit = zeit +schnelligkeit;
}
// fill(f.rot,f.gruen,f.blau);
if (zeit < 120){
nacht = false;
}
if (zeit>255){
nacht = true;
}
fill(zeit,zeit,00);
ellipse(788,10,radius,radius); //745,55,100,100 oder 788,10,100,100
}
}
void draw () {
karte.b.chunky1 = karte.b.x[0+Math.floor(karte.b.kart2/karte.b.chunksize)];
karte.b.chunky2 = karte.b.x[1+Math.floor(karte.b.kart2/karte.b.chunksize)];
karte.b.chunkx = karte.b.kart2-karte.b.chunksize*Math.floor(karte.b.kart2/karte.b.chunksize);
karte.b.hoehe = hoehenausgabe(karte.b.kart2);
if (height-100-karte.b.jump-karte.b.hoehe <= height/10) {
spieler.p.y = height/10 + karte.w.yspielerabweichung;
karte.b.karty =-( height-100-karte.b.jump-karte.b.hoehe)+height/10;
} else if (height-100-karte.b.jump-karte.b.hoehe > 300){
spieler.p.y = 300;
karte.b.karty =-( height-100-karte.b.jump-karte.b.hoehe)+300
}else {
spieler.p.y = height-100-karte.b.jump-karte.b.hoehe;
}
spieler.p.halsansatz = spieler.k.radius/2+spieler.p.y;
spieler.p.huefte = spieler.p.halsansatz+spieler.r.leange;
karte.b.alpha = Math.abs(atan((karte.b.chunky2-karte.b.chunky1)/karte.b.chunksize)*180/PI);
if (karte.b.springen){
karte.b.jumptime = karte.b.jumptime+1.2;
karte.b.jump=30*karte.b.jumptime-karte.b.jumptime*karte.b.jumptime;
}
if (karte.b.jump<0){
karte.b.springen = false;
karte.b.jumptime=0;
karte.b.jump =0;
}
if (karte.w.nowalk==false && mob.a.auto == false){
if (keyPressed==true) {
if(karte.b.jump < 0){
karte.b.jump = 0;}
if(keyCode== UP){
mob.j.noboost = false;
if(mob.j.jetpack) {
mob.j.fly =true;
}else{
karte.b.springen =true;
}
}else {
mob.j.noboost = true;
}
}
if (keyPressed==true) {
if (keyCode==LEFT) {
if(karte.b.chunky1 < karte.b.chunky2){
karte.b.walkspeed2 = karte.b.walkspeed*(1+karte.b.alpha*2/76);
} else {
karte.b.walkspeed2 = karte.b.walkspeed*(1-(1/3/76*karte.b.alpha));
}
if(spieler.p.x > width/4) {
spieler.p.x-=karte.b.walkspeed2;
karte.b.kart2 = karte.b.kart2-karte.b.walkspeed2;
} else {
karte.b.kart = karte.b.kart +karte.b.walkspeed2;
karte.b.kart2 = karte.b.kart2-karte.b.walkspeed2;
}
}
if (keyCode==RIGHT) {
if(karte.b.chunky1 < karte.b.chunky2){
karte.b.walkspeed2 = karte.b.walkspeed*(1-(1/3/76*karte.b.alpha));
} else {
karte.b.walkspeed2 = karte.b.walkspeed*(1+karte.b.alpha*2/76);
}
if(spieler.p.x < 3*width/4) {
spieler.p.x+=karte.b.walkspeed2;
karte.b.kart2 = karte.b.kart2 +karte.b.walkspeed2;
} else {
karte.b.kart = karte.b.kart -karte.b.walkspeed2;
karte.b.kart2 = karte.b.kart2 +karte.b.walkspeed2;
}
}
}
}
//int background1;
//backgroud1 = loadImage("http://view.stern.de/de/picture/1085563/wolken-wolkenstimmung-robbyb-weltuntergangsstimmung-kleine-weltuntergang-940.jpg");
background(1); //karte.r.x
image(webImg10,0,0,width,height);
//webImg9
if (karte.aktiv == true) {
karte.zeichne();
}
stroke(0);
if (g.aktiv == true) {
g.zeichne();
}
if (inv.aktiv == true) {
inv.zeichne();
}
if (mob.aktiv == true) {
mob.zeichne();
}
if (tf.aktiv == true) {
tf.display();
}
if (spieler.aktiv == true) {
spieler.zeichne();
}
if(karte.m.noinfo == false){
fill(0);
textSize(25);
String ausgabe = "Money: "+tf.ziel+"$";
text(ausgabe,width/27,35);
}
if (keyPressed==false) {
if(keyCode== UP ){
mob.j.noboost = true;
}
}
if (mob.a.auto){
if (keyPressed==false) {
if (keyCode==LEFT) {
mob.a.bremsenl = true;
} else{
mob.a.bremsenr = true;
}
if (keyCode==RIGHT) {
mob.a.bremsenr = true;
} else {
mob.a.beschleunigungr = true;
}
}
}
}
//void zufallx (anzahln) {
// int[] xPos = new int[anzahln];
// for (int u = 0; u < anzahln; u++){
// xPos[u] = random(100);
//random(karte.b.chunksize*karte.b.x.length/xPos.length*u,karte.b.chunksize*karte.b.x.length/xPos.length*(u+1));
// }
// return xPos;
// }
int hoehenausgabe (xwert) {
int nky1 = karte.b.x[0+Math.floor(xwert/karte.b.chunksize)];
int nky2 = karte.b.x[1+Math.floor(xwert/karte.b.chunksize)];
int nkx = xwert-karte.b.chunksize*Math.floor(xwert/karte.b.chunksize);
if(nky1 < nky2){
int y = nky1+((nky2 - nky1)*nkx/karte.b.chunksize); }
if(nky1 > nky2){
int y = nky2+((nky1 - nky2)*(karte.b.chunksize-nkx)/karte.b.chunksize);}
return y;
}
int zufallsx() {
// for (int u = 0; u < anzahln; u++){
int z = random(karte.b.renderdistance,karte.b.chunksize*karte.b.x.length-karte.b.renderdistance);
// }
return z;
}
void info (String infotext) {
fill(0);
if(spieler.p.x<width/2){
text(infotext,spieler.p.x+50,spieler.p.y,width/2-50,height);
}else{
text(infotext,spieler.p.x-width/2+50,spieler.p.y,width/2-50,height);
}
}
void oretexture (int x, int y, int r, int g, int b){
fill(r,g,b);
quad(0+x,10+y,0+x,20+y,20+x,0+y,10+x,0+y);
quad(30+x,0+y,40+x,0+y,0+x,40+y,0+x,30+y);
quad(50+x,0+y,50+x,10+y,10+x,50+y,0+x,50+y);
quad(50+x,20+y,50+x,30+y,30+x,50+y,20+x,50+y);
triangle(50+x,40+y,50+x,50+y,40+x,50+y);
}
void emeraldtexture(int x, int y){
fill(0,255,0);
quad(0+x,10+y,0+x,40+y,10+x,50+y,10+x,0+y);
quad(10+x,0+y,10+x,50+y,30+x,50+y,30+x,0+y);
quad(30+x,0+y,30+x,50+y,40+x,40+y,40+x,10+y);
fill(130,255,130);
stroke(255);
quad(10+x,10+y,10+x,40+y,30+x,40+y,30+x,10+y);
}
class auto {
int anzahl = 200;
int hoehstgeschwindidkeit= 299;
int fuelconsumtion = 0.001;
boolean aktiv = true;
boolean nodrive;
int[] xPos = new int[anzahl];
int[] yPos = new int[anzahl];
int[] xP = new int[anzahl];
int[] yP = new int[anzahl];
int u = 0;
int[] autotreibstoff = new int[anzahl];
boolean rechts=false;
boolean auto=false;
int autoPos;
boolean beschleunigungl;
boolean beschleunigungr;
int speedl;
int speedr;
boolean bremsenr= false;
boolean bremsenl= false;
boolean autoeingesammelt = false;
int tastenanzahl = 0;
boolean geoeffnet;
int altexPos;
int autozeit = 0;
int noautozeit = 0;
int vollgas;
int vollgastime;
int vergangenfuel;
int vergangenzeit;
auto() {}
void display() {
if(hoehstgeschwindidkeit==round(speedr+speedl)){
vollgastime = vollgastime+1;
}else{
vollgastime = 0;
}
vollgas = vollgastime*5-vollgastime*vollgastime/5;
if(vollgas<0){
vollgas = 0;
}
if(nodrive == true){
bremsenr = true;
bremsenl = true;
beschleunigungl = false;
beschleunigungr = false;
}
if(spieler.p.x > (width/4+100) ) {
spieler.p.x-=speedl;
karte.b.kart2 = karte.b.kart2-speedl;
} else {
karte.b.kart = karte.b.kart +speedl;
karte.b.kart2 = karte.b.kart2-speedl;
}
if(spieler.p.x < (3*width/4-100) ) {
spieler.p.x+=speedr;
karte.b.kart2 = karte.b.kart2 +speedr;
} else {
karte.b.kart = karte.b.kart -speedr;
karte.b.kart2 = karte.b.kart2 +speedr;
}
if (beschleunigungl) {
speedl = Math.abs(speedl*(1-1/hoehstgeschwindidkeit) +1.19);
}
if (beschleunigungr) {
speedr = Math.abs(speedr*(1-1/hoehstgeschwindidkeit) +1.19);
}
if(bremsenl) {
speedl = speedl*(1+1/hoehstgeschwindidkeit) -2.2;
}
if(bremsenr) {
speedr = speedr*(1+1/hoehstgeschwindidkeit) -2.2;
}
if (speedl<0) {
speedl =0;
// beschleunigungr =false;
// beschleunigungl =false;
}
if (speedr<0) {
speedr =0;
// beschleunigungr =false;
// beschleunigungl =false;
}
if (speedl>hoehstgeschwindidkeit){
speedl = hoehstgeschwindidkeit;
}
if (speedr>hoehstgeschwindidkeit){
speedr = hoehstgeschwindidkeit;
}
// fill(255,255,255);
if(autotreibstoff[autoPos]<0) {
autotreibstoff[autoPos] = 0;
autozeit = 0;
autoeingesammelt = false;
xPos[autoPos] = karte.b.kart2;
spieler.aktiv = true;
auto = false;}
if(auto){
autozeit++;
} else {
autozeit = 0;
}
if(auto == false){
noautozeit ++;
} else{
noautozeit = 0;
}
if(autozeit>20){
if (keyPressed==true) {
if (keyCode== DOWN ) {
if(auto == true){
// geoeffnet = false;
autozeit = 0;
autoeingesammelt = false;
auto = false;
spieler.aktiv = true;
xPos[autoPos] = karte.b.kart2;
}
}
}
}
if(autotreibstoff[autoPos]>200){
autotreibstoff[autoPos] = 200;
mob.z.health = mob.z.health + 10;}
for ( ;u<xPos.length; u++) {
autotreibstoff[u] = random(20,150);
xPos[u] = random(0,karte.b.chunksize*karte.b.x.length);}
for (int i = 0; i < xPos.length; i++) {
yPos[i] = hoehenausgabe(xPos[i]);
if(80>(Math.abs(karte.b.kart2-xPos[i]))){
info("Arrow key down to steel the car");
if (keyPressed==true) {
if (keyCode== DOWN ) {
if(noautozeit>20){
tastenanzahl = tastenanzahl + 1;
altexPos = xPos[i];
xPos[i] = -1000;
autoPos = i;
auto = true;
spieler.aktiv = false;
autoeingesammelt = true;
}
}
} else{
tastenanzahl = 0;
}
}else{
autoeingesammelt = false;
}
if(autoeingesammelt){
}else{
yP[i] = height-yPos[i]+karte.b.karty;
xP[i] = xPos[i]+karte.b.kart;
}
if (auto){
fill(255,255,0);
rect(10,120,autotreibstoff[autoPos],20);
fill(0);
textSize(19);
text("Car fuel",10,123,autotreibstoff[autoPos],20);
// fill(0);
textSize(25+vollgas);
fill(random(0,255*(speedr+speedl)/hoehstgeschwindidkeit),random(0,255*(speedr+speedl)/hoehstgeschwindidkeit),random(0,255*(speedr+speedl)/hoehstgeschwindidkeit));
text(round(speedr+speedl)+"km/h",12,height-12);
textSize(25);
if (keyPressed==true) {
if (keyCode==LEFT) {
rechts = true;
beschleunigungl = true;
beschleunigungr = false;
autotreibstoff[autoPos] = autotreibstoff[autoPos]-((millis() -vergangenzeit)*fuelconsumtion);
vergangenzeit = millis();
bremsenl = false;
bremsenr = true;
} else{
bremsenl = true;
}
if (keyCode==RIGHT) {
rechts= false;
autotreibstoff[autoPos] = autotreibstoff[autoPos]-((millis() -vergangenzeit)*fuelconsumtion);
vergangenzeit = millis();
bremsenr = false;
beschleunigungl = false;
beschleunigungr = true;
} else {
bremsenr = true;
}
}else{
vergangenzeit = millis();
}
xP[autoPos] = spieler.p.x;
yP[autoPos] = spieler.p.y+50;
}else{
speedr = 0;
speedl = 0;
}
if(rechts){
image(webImg,xP[i]-200 , yP[i]-100);
}else{
image(webImg2, xP[i]-200, yP[i]-100);
}
}
}
}
class jetpack {
boolean jetpackiminv=false;
int jetPos;
int fuel;
boolean jetpack;
boolean noboost;
boolean fly;
int flyspeed = 1.75;
int jetpackfuelconsumtion = 36;
int flytime;
int noboosttime;
int anzahl = 300;
int[] xPos = new int[anzahl];
int[] yPos = new int[anzahl];
int[] xP = new int[anzahl];
int[] yP = new int[anzahl];
int u = 0;
int m;
int m2;
jetpack() {}
void display() {
if(fuel<0) {
fuel = 0;
jetpack = false;
fly = false;
}
if(fuel>200){
fuel = 200;
mob.z.health = mob.z.health + 10;
}
fill (0,0,255);
for ( ;u<xPos.length; u++) {
xPos[u] = random(0,karte.b.chunksize*karte.b.x.length);}
for (int i = 0; i < xPos.length; i++) {
if(80>(Math.abs(karte.b.kart2-mob.j.xPos[i]))){
info("Press arrow key down to collect jetpack");
if (keyPressed==true) {
if (keyCode==DOWN) {
jetpackeinsammeln ();
}
}
}else{
jetpackiminv = false;
}
if(jetpackiminv){
mob.j.xPos[i] = -1000;
jetPos = i;
}else {
yP[i] = height-yPos[i]+karte.b.karty;
xP[i] = xPos[i]+karte.b.kart;
}
if (fly){
if(noboost==false){
karte.b.jump= karte.b.jump + flyspeed*(millis()-m)/6;
noboosttime = 0;
fuel = fuel -jetpackfuelconsumtion*(millis()-m)/10000;
}else{
noboosttime = noboosttime+(millis()-m2)/1000;
karte.b.jump = karte.b.jump -noboosttime;
}
}
m = millis();
m2 = millis();
if(jetpack ==false){
if (karte.b.jump>0){
flytime =0;
}
}
if(jetpack){
fill(0,0,255);
rect(10,90,fuel,20);
fill(150,150,0);
textSize(19);
text("Jetpack fuel",10,93,fuel,20);
fill(0,0,255);
xP[jetPos] = spieler.p.x;
yP[jetPos] = spieler.p.y+50;
if (karte.b.jump<0){
fly = false;
flytime=0;
karte.b.jump =0;
noboosttime = 0;
}
}
image(webImg6,xP[i]-15,yP[i]-25);
yPos[i] = hoehenausgabe (xPos[i]);
}
}
void jetpackeinsammeln (){
jetpackiminv = true;
fuel = fuel+random(20,80);
jetpack = true;
}
}
class zombie {
int anzahl = 800;
int zombietotzeit;
int u = 0;
int wspeed = 4;
//abs(900/1000);
int health = 200;
int damage = 0.1;
int breite = 40;
int[] xPos = new int[anzahl];
int[] yPos = new int[anzahl];
int[] zombiehealth = new int[anzahl];
zombie() {}
void display() {
if (health>200){
health = 200;
karte.l.Geld = karte.l.Geld + 10;
}
for ( ;u<xPos.length; u++) {
xPos[u] = random(karte.b.chunksize*karte.b.x.length/xPos.length*u,karte.b.chunksize*karte.b.x.length/xPos.length*(u+1));
zombiehealth [u] = 100;
}
for (int i = 0; i < xPos.length; i++) {
if (zombiehealth [i]<1) {
zombietotzeit++;
xPos[i] = -1000;
if(zombietotzeit > 1000){
zombietotzeit = 0;
xPos[i] = random(karte.b.chunksize*karte.b.x.length/xPos.length*i,karte.b.chunksize*karte.b.x.length/xPos.length*(i+1));
zombiehealth [i] = 100;
}
}
if(xPos[i]<karte.b.kart2){ //xPos sind positiv nach rechts steigend
image(webImg4, xPos[i]+karte.b.kart-80, height-yPos[i]+karte.b.karty-110);
if (i == (xPos.length-1)) {
xPos[i] = xPos[i]+wspeed; //nach rechts gehen
}
if((xPos[i+1] - xPos[i]) >(breite*1.2)){
xPos[i] = xPos[i]+wspeed; //nach rechts gehen
}
} else{
image(webImg3, xPos[i]+karte.b.kart-80, height-yPos[i]+karte.b.karty-110);
}
if(xPos[i]>karte.b.kart2){
if (i == 0) {
xPos[i] = xPos[i]-wspeed;
}
if ((xPos[i]-xPos[i-1])>(breite*1.2)) {
xPos[i] = xPos[i]-wspeed; //nach links gehen
}
}
yPos[i] = hoehenausgabe(xPos[i]);
if(karte.m.noinfo == false){
fill(255,00,00);
rect(10,60,health,20);
fill(0);
textSize(19);
text("Health",10,63,health,20);
}
if(karte.b.jump<50) {
if (Math.abs(xPos[i]-karte.b.kart2)<300) {
if(mob.a.auto == false){
health = Math.abs(health - damage);
}else{
zombiehealth [i] = zombiehealth [i] - 2*(mob.a.speedr+mob.a.speedl);
mob.a.speedr = mob.a.speedr*0.97;
mob.a.speedl = mob.a.speedl*0.97;
}
}
if(health<1){
health = 0;
textSize(200);
fill(255,0,0);
text("Game Over",120,50,500,800);
strokeWeight(0);
noStroke;
textSize(0);
karte.w.nowalk =true;
karte.w.noitem = true;
mob.a.nodrive = true;
}
}
}
}
}
class player {
position p;
kopf k;
rumpf r;
arm al;
arm ar;
bein bl;
bein br;
boolean aktiv = false;
player(int cn,int cx, int cy, String cs, int cr) {
p = new position (cx,cy);
k = new kopf(p,cs,cr,cn);
r = new rumpf(p,k);
al = new arm(p,"links");
ar = new arm(p,"rechts");
bl = new bein(p,"links");
br = new bein(p,"rechts");
}
void zeichne() {
k.display();
r.display();
al.display();
ar.display();
bl.display();
br.display();
}
}
class inventory {
kasten k;
boolean aktiv = false;
inventory() {
k = new kasten();
}
void zeichne() {
k.display();
}
}
class kopf {
boolean spielernicken = false;
int radius;
int radiusa; //radius auge
farbe f;
position p;
int positiona; //position1 auge
int positiona2; //position2 auge
int n = 0;
int faktor = 12;
boolean is_vorne = false;
String time_to_nick = 3;
kopf (position cp, String cs, int cr, int cn) {
p = cp;
f = new farbe(cs);
radius = cr;
n = cn;
}
void nicken() {
if (time_to_nick == 30) {
if (is_vorne) {
radius+=faktor;
is_vorne=false;
p.y-=10;
} else {
radius-=faktor;
is_vorne=true;
p.y+=10;
}
time_to_nick = n;
}
}
void display() {
if(spielernicken){
nicken();
}
time_to_nick++;
fill(f.rot,f.gruen,f.blau);
ellipse(p.x,p.y,radius,radius);
radiusa = radius-30; //auge
positiona = p.x+10; //auge
positiona2 = p.y-5; //auge
fill(255); //augenfarbe
ellipse(positiona,positiona2,radiusa,radiusa); //Auge
ellipse(positiona-13,positiona2,radiusa,radiusa);
//ellipse(positiona-10,positiona2+5,10,10);
ellipse(positiona-10,positiona2+17,22,5);
}
}
class rumpf {
int leange = 50;
farbe f = new farbe("rot");
position p;
kopf k;
rumpf (position cp, kopf ck) {
p = cp;
k = ck;
// p.halsansatz = p.y+ck.radius/2;
// p.huefte = p.halsansatz+leange;
}
void display() {
strokeWeight(7);
fill(f.rot,f.gruen,f.blau);
line(p.x,p.halsansatz,p.x,p.halsansatz+leange);
strokeWeight(1);
}
}
class bein {
int laenge = 36;
int laengeX = laenge;
int laengeY = laenge;
boolean links;
position p;
boolean move = false;
int speed= 1.5;
int Winkel = 35;
bein(position cp, String s) {
p= cp;
if (s == "links") {
links = true;
} else {
links = false;
}
}
void bewegen() {
if (move) {
Winkel+=speed;
laengeX=cos(Winkel*PI/180)*laenge;
laengeY=sin(Winkel*PI/180)*laenge;
}
if (Winkel>80|| Winkel<30) {
speed*=-1;
}
}
void display() {
strokeWeight(7);
bewegen();
if (links==true) {
line(p.x,p.huefte,p.x-laengeX,p.huefte+laengeY);
} else {
line(p.x,p.huefte,p.x+laengeX,p.huefte+laengeY);
strokeWeight(1);
}
}
}
class arm {
int laenge = 30;
int laengeX = laenge;
int laengeY = laenge;
boolean links;
position p;
boolean move = false;
int speed = 1;
int Winkel = 45;
arm(position cp, String s) {
p = cp;
if (s == "links") {
links = true;
} else {
links = false;
}
}
void bewegen() {
if (move) {
Winkel+=speed;
laengeX=cos(Winkel*PI/180)*laenge;
laengeY=sin(Winkel*PI/180)*laenge;
}
if (Winkel>60|| Winkel<0) {
speed*=-1;
}
}
void display() {
strokeWeight(7);
bewegen();
if (links==true) {
line(p.x, p.halsansatz, p.x-laengeX,p.halsansatz+laengeY);
} else {
line(p.x, p.halsansatz, p.x+laengeX,p.halsansatz+laengeY);
strokeWeight(1);
}
}
}
class position {
int x;
int y;
int halsansatz;
int huefte;
position (int xc, int yc) {
x = xc;
y = yc;
}
}
class farbe {
private int rot;
private int gruen;
private int blau;
farbe (String color) {
anmalen(color);
}
void anmalen(String color){
if (color == "rot"){
rot=255;gruen=0;blau=0;
}else if (color == "blau") {
rot=0;gruen=0;blau=255;
}else if (color == "gruen") {
rot=0;gruen=255;blau=0;
}else if (color == "gelb") {
rot=255;gruen=255;blau=0;
}else if (color == "lila") {
rot=131;gruen=0;blau=255;
}else if (color == "tuerkis") {
rot=64;gruen=224;blau=208;
}else if (color == "türkis") {
rot=64;gruen=224;blau=208;
}else if (color == "braun") {
rot=165;gruen=42;blau=42;
}else if (color == "pink") {
rot=255;gruen=192;blau=203;
}else if (color == "violet") {
rot=238;gruen=130;blau=238;
}else if (color == "gold") {
rot=255;gruen=215;blau=0;
}else if (color == "grau") {
rot=190;gruen=190;blau=190;
}else if (color == "cyan") {
rot=0;gruen=255;blau=255;
}else if (color == "magenta") {
rot=255;gruen=0;blau=255;
}else if (color == "schwarz") {
rot=0;gruen=0;blau=0;
}else if (color == "weiß") {
rot=255;gruen=255;blau=255;
}else if (color == "weiss") {
rot=255;gruen=255;blau=255;
}else {
rot=0;gruen=0;blau=0;
}
}
}