Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int pipeQuant = 10;
- int [] pipeHeight = new int [pipeQuant];
- int scale = 400;
- int pipeDist = 200;
- int mult = scale/400;
- for(int i = 0; i < pipeQuant; i++){
- pipeHeight[i] = random(20*mult,300*mult);
- }
- int starNum = 50;
- int[] starX = new int[starNum];
- int[] starY = new int[starNum];
- int[] starPX = new int[starNum];
- int[] starPY = new int[starNum];
- for(int i = 0; i < starNum; i++){
- starX[i] = 1;
- starY[i] = 1;
- starPX[i] = random(400*mult);
- starPY[i] = random(400*mult);
- }
- int bx; //boxrotateX
- int by; //boxrotateX
- int bz; //boxrotateX
- int j; //speed
- int x; //birdX
- int y; //birdY
- int m; //gravity
- int t; //invTimer
- int c; //powerupColunmn
- int r; //cameraPan
- int q; //nextLevelTimer
- int level = 1;
- int jMult = 3; //speedModifier
- int score = 0;
- boolean play = false;
- boolean invincible = false;
- boolean end = false;
- boolean rotated = false;
- boolean start = true;
- boolean mode;
- void setup(){
- size(scale,scale,P3D);
- background(0,120,200);
- j = 0;
- x = width/4;
- y = 0;
- m = 0;
- c = round(random(pipeQuant-1));
- }
- void inv(c){ //invincible powerup box
- translate(j+pipeDist*c*mult,-0.5*pipeHeight[c]*mult-50*mult);
- rotateX(radians(1+bx));
- rotateY(radians(1+by));
- rotateZ(radians(1+bz));
- fill(random(100,255),random(100,255),random(100,255));
- lights();
- if (invincible == false) {
- box(20*mult);
- }
- noLights();
- rotateX(radians(-1-bx));
- rotateY(radians(-1-by));
- rotateZ(radians(-1-bz));
- translate(-(j+pipeDist*mult),0.5*pipeHeight[c]*mult+50*mult);
- //invincible box collision
- if ((-y-155*mult >= -0.5*pipeHeight[c]-60*mult) &&
- (-y-155*mult <= -0.5*pipeHeight[c]-50*mult) &&
- (x-380*mult >= j+(pipeDist*c-30)*mult) &&
- (x-380*mult <= j+(pipeDist*c+30)*mult)) {
- invincible = true;
- t=100;
- jMult = 10;
- }
- bx++;
- by++;
- bz++; //Animation
- }
- void mousePressed(){
- y=y+20*mult;
- m=-150*mult;
- if (play == false) {
- j = 0+jAdd;
- m = 0;
- q = 0;
- r = 0;
- t = 0;
- invProb = round(random(level/2));
- if (start == false) {
- if(mouseX<60*mult && mouseY<60*mult){
- background(0,120,200);
- start = true;
- }
- else{
- play = true;
- for(int i = 0; i<pipeQuant;i++){
- pipeHeight[i] = random(20*mult,300*mult);
- }
- invincible = false;
- c = round(random(pipeQuant-1));
- if (rotated != true) {
- x = width/4;
- y = 0;
- score = 0;
- pipeQuant = 10;
- pipeDist = 200;
- jAdd = 0;
- }
- rotated = false;
- }
- }
- else{
- if (mouseX<width/2){
- mode = true;
- }
- else{
- mode = false;
- }
- play = true;
- start = false;
- }
- }
- }
- void draw(){
- if (play == true) {
- directionalLight(255, 255, 255, -0.5,1, 1);
- directionalLight(220, 120, 120, -0.5,1, -1);
- translate(width/2,height/2);
- rotateY(radians(30));
- if(mode == false){
- background(0,120,200);
- if(j<-pipeDist*mult*pipeQuant){
- rotateY(radians(1+r));
- if((r<59) && (rotated == false)){
- r++;
- } else {
- rotated = true;
- j=j-4;
- q++;
- if ((r>=0) && (q>120)) {
- r--;
- }
- if (q == 181) {
- level += 1;
- pipeQuant += 2;
- pipeDist = 0.8*pipeDist
- }
- if (q > 181) {
- jAdd = 240*mult;
- play = false;
- }
- }
- }
- fill(50,250,50);
- translate(0,300*mult-height/2);
- box(10000*mult,1*mult,10000*mult); //ground
- translate(-width/2,-300*mult);
- }
- else{
- background(0);
- stroke(255);
- if(frameCount%10==0){
- pipeQuant++;
- pipeHeight = append(pipeHeight,random(20*mult,300*mult));
- }
- translate(-width/2,-150*mult);
- for(int i = 0; i < starNum; i++){
- translate(0,-50*mult,-20*mult);
- ellipse(starPX[i]*mult,starPY[i]*mult,starX[i]*mult,starY[i]*mult);
- translate(0,50*mult,20*mult);
- }
- }
- bird(x,y);
- y = y-((0.98*m)/30); //dynamic gravity
- if(mode == false && y <= -134*mult){ //bounce
- if(m > 100*mult){
- y=y+5*mult;
- }
- else{
- y++;
- }
- m=-0.5*m*mult;
- }
- translate(width,300*mult);
- for(int k = 0;k<pipeQuant;k++){
- if(mode == false){
- fill(50,250,50);
- if(k == round(pipeQuant/4) || k == round(pipeQuant/2) || k == round((pipeQuant/4)*3)){ //pipe colour
- fill(250,50,50);
- }
- else if (k == pipeQuant-1) {
- fill(255);
- }
- }
- else{
- fill(5*score,255-5*score,100);
- }
- translate(j+pipeDist*k*mult,300*mult);
- box(-40*mult,-600*mult-pipeHeight[k],-40*mult); //lower pipes
- translate(0,-1000*mult);
- box(-40*mult,1200*mult-pipeHeight[k],-40*mult); //upper pipes
- translate(-j-pipeDist*k*mult,700*mult);
- if (x-380*mult > j+pipeDist*k*mult) {
- score = k+1; //Score
- }
- if (((-y-155*mult >= -0.5*pipeHeight[k]-10*mult) || (-y-155*mult+(700*mult) <= -0.5*pipeHeight[k]+600*mult )) &&
- (x-380*mult >= j+(pipeDist*k-30)*mult) &&
- (x-380*mult <= j+(pipeDist*k+30)*mult)) {
- if(invincible == false){
- // play = false; //Collision
- }
- }
- }
- j=j-jMult*mult; //background movement
- m=m+10*mult; //gravity acceleration
- if(mode == false){
- pushMatrix();
- textAlign(CENTER);
- fill(255);
- translate(j+pipeDist*pipeQuant*mult+500*mult,-120*mult,0);
- rotateY(radians(-90));
- text('Level '+String(level),0,0);
- translate(0,20*mult,0);
- text('Complete!',0,0);
- textAlign(LEFT);
- popMatrix();
- }
- textSize(15*mult);
- rotateY(radians(-30));
- fill(255);
- if(mode == true){
- fill(255);
- text('Score: ' + score, -265*mult, -60*mult, 282*mult);
- }
- else{
- fill(0);
- text('Level: ' + String(level), -265*mult, -10*mult, 282*mult);
- }
- rotateY(radians(30));
- inv(c);
- t--; // powerupTimer
- if(t==0){
- invincible = false;
- jMult = 3;
- }
- else if (t<50){
- jMult = 3;
- }
- } else { //gameover
- fill(255);
- if (q < 161) {
- fill(0);
- rect(80*mult,130*mult,240*mult,45*mult);
- rect(40*mult,180*mult,320*mult,45*mult);
- if(start == false){
- rect(20*mult,20*mult,40*mult,40*mult);
- fill(255);
- textSize(15*mult);
- text("REKT",x,-y+150*mult);
- textSize(40*mult);
- text("Game Over!", 100*mult, 150*mult,20*mult);
- text("Click to try again", 60*mult, 200*mult,20*mult);
- text("<",36*mult,39*mult,20*mult);
- }
- else{
- fill(255);
- textSize(40*mult);
- text(" Welcome", 100*mult, 150*mult,20*mult);
- text("Infinite | Levels", 60*mult, 200*mult,20*mult);
- }
- level = 1;
- jAdd = 0;
- } else if (q >= 181) {
- mousePressed();
- }
- }
- }
- void bird(int x, int y){
- fill(255,255,0);
- if (invincible == true) {
- fill(random(100,255),random(100,255),random(100,255));
- lights();
- }
- translate(20*mult+x,150*mult-y);
- noStroke();
- sphere(10*mult);
- translate(-20*mult-x,-150*mult+y);
- stroke(0);
- fill(255,100,0);
- triangle(28*mult+x,146*mult-y,35*mult+x,151*mult-y,28*mult+x,156*mult-y);
- fill(255);
- ellipse(20*mult+x,146*mult-y,5*mult,5*mult);
- fill(0);
- ellipse(20*mult+x,146*mult-y,2*mult,2*mult);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement