ZıpZıp Serçe - Flappy Bird (Processing)
Oyun Ses Görüntü ve Kod Dosyaları :
Kaynak Kodu :
// JAVA - Processing ® Environment
// zafercavdar
PImage bird;
PImage kalp;
PImage coin;
PImage wallp;
PImage taban;
import ddf.minim.*;
AudioPlayer player;
AudioPlayer player2;
Minim minim; //audio context
int ekran_genislik = 1366;
int ekran_uzunluk = 768;
void setup ()
{
size (1366, 768, P3D);
frameRate (90);
bird = loadImage("bird31.png");
kalp = loadImage("kalp.png");
coin = loadImage("coin.png");
wallp= loadImage("wallp.png");
taban = loadImage("taban.jpg");
textFont(loadFont("score48.vlw"));
minim = new Minim(this);
player = minim.loadFile("soundtrack.mp3", 2048);
player.play();
}
int [] engel_h = new int [10] ;
int [] engel_x = new int [10] ;
int [] [] kontrol = new int [10][10];
int kusboyut = 60 ;
int m = 0;
int rangeh = 250;
int birdx = 30;
int birdy = 300;
int score = 0 ;
int value0 = -180;
int counter = value0 ;
int can = 3 ;
int start = 0;
int yesilalanuzunluk = 75 ;
void draw()
{
if (can == 0)
{
background(0);
fill(#D12828);
int artis = int (random (3) -1) * 3;
int artis2 = int (random (3) -1) * 3;
text("game over baby!", ekran_genislik/2 -250 + artis, ekran_uzunluk/2-50);
text("press enter to play again!", + ekran_genislik/2 + artis2-370, ekran_uzunluk/2 +50);
}
else
{
if (start == 1)
counter++;
//background(#C1F5DF);
set (0, 0, wallp);
ini (m);
m++;
//engellerin boyunu belirleme
int r = 0 ;
for (r = 0 ; r < (ekran_genislik +50 )/200 ; r++)
{
if (engel_h[r] == 0 )
engel_h[r] = int (random (ekran_uzunluk/4) + 200);
}
//engelleri çizme alt ve üst
int temp = 0 ;
for (temp = 0 ; temp < (ekran_genislik +50 )/200 ; temp++)
{
strokeWeight(3);
stroke(0);
fill(#70BC61);
rect(engel_x[temp], 0, 50, engel_h[temp]);
rect(engel_x[temp], engel_h[temp]+rangeh, 50, ekran_uzunluk - rangeh- engel_h[temp]);
if (engel_x[temp] == -50 )
engel_x[temp] = ekran_genislik;
else if (start == 1)
engel_x[temp]-=2;
}
//alt yeşillik alanı çiz
fill(#5D3C26);
rect(0, ekran_uzunluk -yesilalanuzunluk, ekran_genislik, yesilalanuzunluk);
//set(0,600-yesilalanuzunluk,taban);
//kuşu yarat
noStroke();
pushMatrix();
translate(birdx, birdy);
scale(kusboyut);
drawBird();
popMatrix();
strokeWeight(3);
if (start == 1)
birdy +=5;
//tüm noktaların çarpıp çarpmadıgını kontrol eder
kontrol[0][0] = birdx ; //sol üst
kontrol[0][1] = birdy;
kontrol[1][0] = birdx; //sol alt
kontrol[1][1] = birdy+kusboyut;
kontrol[2][0] = birdx+kusboyut; //sağ alt
kontrol[2][1] = birdy+kusboyut;
kontrol[3][0] = birdx+kusboyut; //sağ üst
kontrol[3][1] = birdy;
//score 'u yaz ve canı yaz
fill(255, 0, 0);
text(score, ekran_genislik/2 -50, 50);
text(can, ekran_genislik/2 +50, 50);
pushMatrix();
translate(ekran_genislik/2 +80, 15);
scale(35);
drawKalp();
popMatrix();
pushMatrix();
translate(ekran_genislik/2 -95, 18);
scale(35);
drawCoin();
popMatrix();
//mouse'a basınca kuşu zıplat
if (mousePressed && start == 1)
{
if (birdy > 20 && can != 0)
birdy -= 20;
else
birdy = 0 ;
}
//kuş engele çarptı mı kontrol et
int check = 0;
for (int ctrl = 0 ; ctrl < (ekran_genislik +50 )/200 ; ctrl++)
{
//her bir nokta için ayrı bool değerleri al, priority engelde yani ctrl değilşkeninde
for (int i = 0 ; i < (ekran_genislik +50 )/200 ; i++)
{
// a ile üst duvarı b ile alt duvarı kontrol et
boolean a = kontrol[i][1] < engel_h[ctrl] && kontrol[i][1] > 0 && kontrol[i][0] > engel_x[ctrl] && kontrol[i][0] < engel_x[ctrl]+50;
boolean b = kontrol[i][1] > engel_h[ctrl]+rangeh && kontrol[i][1] < ekran_uzunluk && kontrol[i][0] > engel_x[ctrl] && kontrol[i][0] < engel_x[ctrl]+50;
boolean c = birdy >= ekran_uzunluk +10 - kusboyut-yesilalanuzunluk;
if (a || b || c)
{
check = 1;
break ;
}
}
if (check == 1)
break;
}
//çarptıysa oyunu bitir ve verileri oyun başındaki haline çevir
if (check == 1)
{
player2 = minim.loadFile("hit.mp3", 2048);
player2.play();
start = 0;
can--;
m = 0;
if (can == 0)
score = 0;
counter = value0;
birdx = 30;
birdy = ekran_uzunluk/2;
}
//score için hareketi zaman olarak say
if ((counter) % 100 == 0 && counter >= 0)
score++;
}
}
//başlangıç değerlerini tanımla
void ini (int k)
{
if (k == 0)
{
for (int c = 0 ; c < (ekran_genislik +50 )/200; c++)
{
engel_x[c] = (c+2)*200;
engel_h[c] = 0 ;
}
}
}
void drawBird()
{
textureMode(NORMALIZED);
beginShape(QUADS);
texture(bird);
vertex(0, 1, 0, 0, 1);
vertex(1, 1, 0, 1, 1);
vertex(1, 0, 0, 1, 0);
vertex(0, 0, 0, 0, 0);
endShape(CLOSE);
}
void drawKalp()
{
textureMode(NORMALIZED);
beginShape(QUADS);
texture(kalp);
vertex(0, 1, 0, 0, 1);
vertex(1, 1, 0, 1, 1);
vertex(1, 0, 0, 1, 0);
vertex(0, 0, 0, 0, 0);
endShape(CLOSE);
}
void drawCoin()
{
textureMode(NORMALIZED);
beginShape(QUADS);
texture(coin);
vertex(0, 1, 0, 0, 1);
vertex(1, 1, 0, 1, 1);
vertex(1, 0, 0, 1, 0);
vertex(0, 0, 0, 0, 0);
endShape(CLOSE);
}
void keyPressed()
{
if (key == '+')
rangeh++;
if (key == '-' )
rangeh--;
if (key == ' ' && start == 0)
{
start = 1;
birdy -= 60;
}
if (keyCode == ENTER)
{
can = 3;
start = 1;
score = 0;
}
}
void stop()
{
player.close();
player2.close();
minim.stop();
super.stop();
}
// zafercavdar
PImage bird;
PImage kalp;
PImage coin;
PImage wallp;
PImage taban;
import ddf.minim.*;
AudioPlayer player;
AudioPlayer player2;
Minim minim; //audio context
int ekran_genislik = 1366;
int ekran_uzunluk = 768;
void setup ()
{
size (1366, 768, P3D);
frameRate (90);
bird = loadImage("bird31.png");
kalp = loadImage("kalp.png");
coin = loadImage("coin.png");
wallp= loadImage("wallp.png");
taban = loadImage("taban.jpg");
textFont(loadFont("score48.vlw"));
minim = new Minim(this);
player = minim.loadFile("soundtrack.mp3", 2048);
player.play();
}
int [] engel_h = new int [10] ;
int [] engel_x = new int [10] ;
int [] [] kontrol = new int [10][10];
int kusboyut = 60 ;
int m = 0;
int rangeh = 250;
int birdx = 30;
int birdy = 300;
int score = 0 ;
int value0 = -180;
int counter = value0 ;
int can = 3 ;
int start = 0;
int yesilalanuzunluk = 75 ;
void draw()
{
if (can == 0)
{
background(0);
fill(#D12828);
int artis = int (random (3) -1) * 3;
int artis2 = int (random (3) -1) * 3;
text("game over baby!", ekran_genislik/2 -250 + artis, ekran_uzunluk/2-50);
text("press enter to play again!", + ekran_genislik/2 + artis2-370, ekran_uzunluk/2 +50);
}
else
{
if (start == 1)
counter++;
//background(#C1F5DF);
set (0, 0, wallp);
ini (m);
m++;
//engellerin boyunu belirleme
int r = 0 ;
for (r = 0 ; r < (ekran_genislik +50 )/200 ; r++)
{
if (engel_h[r] == 0 )
engel_h[r] = int (random (ekran_uzunluk/4) + 200);
}
//engelleri çizme alt ve üst
int temp = 0 ;
for (temp = 0 ; temp < (ekran_genislik +50 )/200 ; temp++)
{
strokeWeight(3);
stroke(0);
fill(#70BC61);
rect(engel_x[temp], 0, 50, engel_h[temp]);
rect(engel_x[temp], engel_h[temp]+rangeh, 50, ekran_uzunluk - rangeh- engel_h[temp]);
if (engel_x[temp] == -50 )
engel_x[temp] = ekran_genislik;
else if (start == 1)
engel_x[temp]-=2;
}
//alt yeşillik alanı çiz
fill(#5D3C26);
rect(0, ekran_uzunluk -yesilalanuzunluk, ekran_genislik, yesilalanuzunluk);
//set(0,600-yesilalanuzunluk,taban);
//kuşu yarat
noStroke();
pushMatrix();
translate(birdx, birdy);
scale(kusboyut);
drawBird();
popMatrix();
strokeWeight(3);
if (start == 1)
birdy +=5;
//tüm noktaların çarpıp çarpmadıgını kontrol eder
kontrol[0][0] = birdx ; //sol üst
kontrol[0][1] = birdy;
kontrol[1][0] = birdx; //sol alt
kontrol[1][1] = birdy+kusboyut;
kontrol[2][0] = birdx+kusboyut; //sağ alt
kontrol[2][1] = birdy+kusboyut;
kontrol[3][0] = birdx+kusboyut; //sağ üst
kontrol[3][1] = birdy;
//score 'u yaz ve canı yaz
fill(255, 0, 0);
text(score, ekran_genislik/2 -50, 50);
text(can, ekran_genislik/2 +50, 50);
pushMatrix();
translate(ekran_genislik/2 +80, 15);
scale(35);
drawKalp();
popMatrix();
pushMatrix();
translate(ekran_genislik/2 -95, 18);
scale(35);
drawCoin();
popMatrix();
//mouse'a basınca kuşu zıplat
if (mousePressed && start == 1)
{
if (birdy > 20 && can != 0)
birdy -= 20;
else
birdy = 0 ;
}
//kuş engele çarptı mı kontrol et
int check = 0;
for (int ctrl = 0 ; ctrl < (ekran_genislik +50 )/200 ; ctrl++)
{
//her bir nokta için ayrı bool değerleri al, priority engelde yani ctrl değilşkeninde
for (int i = 0 ; i < (ekran_genislik +50 )/200 ; i++)
{
// a ile üst duvarı b ile alt duvarı kontrol et
boolean a = kontrol[i][1] < engel_h[ctrl] && kontrol[i][1] > 0 && kontrol[i][0] > engel_x[ctrl] && kontrol[i][0] < engel_x[ctrl]+50;
boolean b = kontrol[i][1] > engel_h[ctrl]+rangeh && kontrol[i][1] < ekran_uzunluk && kontrol[i][0] > engel_x[ctrl] && kontrol[i][0] < engel_x[ctrl]+50;
boolean c = birdy >= ekran_uzunluk +10 - kusboyut-yesilalanuzunluk;
if (a || b || c)
{
check = 1;
break ;
}
}
if (check == 1)
break;
}
//çarptıysa oyunu bitir ve verileri oyun başındaki haline çevir
if (check == 1)
{
player2 = minim.loadFile("hit.mp3", 2048);
player2.play();
start = 0;
can--;
m = 0;
if (can == 0)
score = 0;
counter = value0;
birdx = 30;
birdy = ekran_uzunluk/2;
}
//score için hareketi zaman olarak say
if ((counter) % 100 == 0 && counter >= 0)
score++;
}
}
//başlangıç değerlerini tanımla
void ini (int k)
{
if (k == 0)
{
for (int c = 0 ; c < (ekran_genislik +50 )/200; c++)
{
engel_x[c] = (c+2)*200;
engel_h[c] = 0 ;
}
}
}
void drawBird()
{
textureMode(NORMALIZED);
beginShape(QUADS);
texture(bird);
vertex(0, 1, 0, 0, 1);
vertex(1, 1, 0, 1, 1);
vertex(1, 0, 0, 1, 0);
vertex(0, 0, 0, 0, 0);
endShape(CLOSE);
}
void drawKalp()
{
textureMode(NORMALIZED);
beginShape(QUADS);
texture(kalp);
vertex(0, 1, 0, 0, 1);
vertex(1, 1, 0, 1, 1);
vertex(1, 0, 0, 1, 0);
vertex(0, 0, 0, 0, 0);
endShape(CLOSE);
}
void drawCoin()
{
textureMode(NORMALIZED);
beginShape(QUADS);
texture(coin);
vertex(0, 1, 0, 0, 1);
vertex(1, 1, 0, 1, 1);
vertex(1, 0, 0, 1, 0);
vertex(0, 0, 0, 0, 0);
endShape(CLOSE);
}
void keyPressed()
{
if (key == '+')
rangeh++;
if (key == '-' )
rangeh--;
if (key == ' ' && start == 0)
{
start = 1;
birdy -= 60;
}
if (keyCode == ENTER)
{
can = 3;
start = 1;
score = 0;
}
}
void stop()
{
player.close();
player2.close();
minim.stop();
super.stop();
}