[Çözüldü] Allegro ve Ubuntu

Başlatan Taifuru, 06 Ocak 2015 - 20:20:33

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

Taifuru

Windows ortamında yazmış olduğum bir oyun var. Allegroyla yazıldı. Bunu Ubuntu da derlemeye çalıştım. Uzun uğraşlar sonucu derleyebildim. Fakat program açılmıyor.

#include <stdlib.h>
#include <stdio.h>
//#include <conio.h>
#include <math.h>

#include <allegro5/allegro.h>
//#include <allegro5/allegro_native_dialog.h>
#include <allegro5/allegro_image.h>
#include <allegro5/allegro_primitives.h>
#include <allegro5/allegro_audio.h>
#include <allegro5/allegro_acodec.h>
#include <allegro5/allegro_font.h>
#include <allegro5/allegro_ttf.h>

#define OYUN_PI 3.142857

//############################################################################################################################################3

//Karakter struct yapisi
typedef struct kr
{
ALLEGRO_BITMAP *kr;
float kr_x;
float kr_y;
float kr_score;
bool kr_sira;
int kr_hak;
}KARAKTER;

KARAKTER karakter1, karakter2;

void karakterRenkSec(int kr1, int kr2, KARAKTER *karakter1, KARAKTER *karakter2)
{
char temp[30];

switch (kr1)
{
case 1:
sprintf(temp, "data_/karakter_1_%d.png", 1);
(*karakter1).kr = al_load_bitmap(temp);
break;
case 2:
sprintf(temp, "data_/karakter_1_%d.png", 2);
(*karakter1).kr = al_load_bitmap(temp);
break;
case 3:
sprintf(temp, "data_/karakter_1_%d.png", 3);
(*karakter1).kr = al_load_bitmap(temp);
break;
}

switch (kr2)
{
case 1:
sprintf(temp, "data_/karakter_2_%d.png", 1);
(*karakter2).kr = al_load_bitmap(temp);
break;
case 2:
sprintf(temp, "data_/karakter_2_%d.png", 2);
(*karakter2).kr = al_load_bitmap(temp);
break;
case 3:
sprintf(temp, "data_/karakter_2_%d.png", 3);
(*karakter2).kr = al_load_bitmap(temp);
break;
}
}

KARAKTER karakterOlustur(KARAKTER _kr, int x, int y, int renk, ALLEGRO_DISPLAY *display)
{
char tmp[30];

//Karakter rengi seçimi
sprintf(tmp, "data_/karakter_%d_1.png", renk);

_kr.kr = al_load_bitmap(tmp); // Karakter resminin load edilmesi
_kr.kr_score = 0;
_kr.kr_x = x + 20.0;
_kr.kr_y = y - al_get_bitmap_height(_kr.kr);
_kr.kr_hak = 3;

//Karakter sırası belirleniyor
if (renk == 1)
{
_kr.kr_sira = true;
}
else
_kr.kr_sira = false;

if (!_kr.kr)
{
//al_show_native_message_box(display, "Hata", "Hata", "Karakter dosyalari yuklenemedi!!",
//NULL, ALLEGRO_MESSAGEBOX_ERROR);
}

return _kr;
}

void karakter_cizdir(KARAKTER _kr)
{
al_draw_bitmap(_kr.kr, _kr.kr_x, _kr.kr_y , 0);
}

//###############################################################################################################################

struct TOP_STRUCT
{
ALLEGRO_BITMAP *image;
float top_x;
float top_y;
float top_t_ucus;
float top_vx;
float top_vy;
float top_v0;
float top_aci;
bool top_atis;
};

struct EFEKT_STRUCT
{
ALLEGRO_BITMAP *image;
float e_x;
float e_y;
};

struct EFEKT_STRUCT efekt_nesne;
struct TOP_STRUCT top_nesne;

void topCizdir(float x, float y)
{
top_nesne.top_x = x;
top_nesne.top_y = y;

al_draw_bitmap(top_nesne.image, top_nesne.top_x, top_nesne.top_y, 0);
}

void topResimYukle()
{
top_nesne.image = al_load_bitmap("data_/top.png");

if (!top_nesne.image)
{
printf("top yuklme hata");
exit(0);
}
}

void efekt_resim_yukle()
{
efekt_nesne.image = al_load_bitmap("data_/efektler.png");
al_convert_mask_to_alpha(efekt_nesne.image, al_map_rgb(0, 0, 0));

if (!efekt_nesne.image)
{
printf("efekt yuklme hata");
exit(0);
}
}

void efekt_cizdir()
{
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 4; j++)
{
al_draw_bitmap_region(efekt_nesne.image, i * 64, j * 64, 64, 64, top_nesne.top_x, top_nesne.top_y, 0);
}
}
}

//################################################################################################################################


//Binalar ve genel özellikleri

typedef struct bina_
{
//binaların resimlerini yukluyoruz
ALLEGRO_BITMAP *bina_resim;
float bina_x;
float bina_y;
int bina_gen;
int bina_yuk;
}BINALAR;

struct patlama
{
float pt_x;
float pt_y;
float pt_r;
bool pt_var;
};

//Bina sayısı tanımlanıyor
enum { BINA_SAYISI = 6 , PT_SAYISI = 1000};

//Binaları tuttuğumuz struct değişkeni
BINALAR binaDegisken[BINA_SAYISI];

struct patlama ptlma[PT_SAYISI];

//Arkaplan resmi
ALLEGRO_BITMAP *oyun_arkaplan;

void binaCizdir(int binaSayisi)
{
for (int i = 0; i < binaSayisi; i++)
{
al_draw_scaled_bitmap(binaDegisken[i].bina_resim, 0, 0, 228, 421, binaDegisken[i].bina_x, binaDegisken[i].bina_y, binaDegisken[i].bina_gen, binaDegisken[i].bina_yuk, 0);
}
}

//Binalarin ekrana cizilmesi
void bina_yerlestir(int binaSayisi, ALLEGRO_DISPLAY *display)
{
for (int i = 0; i < binaSayisi; i++)
{
int deger = 100 + rand() % 200;
binaDegisken[i].bina_x = 200 * i;
binaDegisken[i].bina_y = 700 - deger;
binaDegisken[i].bina_gen = 100 + rand() % 100;
binaDegisken[i].bina_yuk = deger;

if (i == 0)
{
karakter1 = karakterOlustur(karakter1, binaDegisken[i].bina_x, binaDegisken[i].bina_y, 1, display);
}
else if (i == BINA_SAYISI - 1)
{
karakter2 = karakterOlustur(karakter2, binaDegisken[i].bina_x, binaDegisken[i].bina_y, 2, display);
}
}
}

void binaResimYukle(int binaSayisi, ALLEGRO_DISPLAY *display)
{
for (int i = 0; i < binaSayisi; i++)
{
binaDegisken[i].bina_resim = al_load_bitmap("data_/bina.png"); // bina resimlerini yukluyoruz...

if ( !binaDegisken[i].bina_resim ) // Yukleme esnasinda hata var mi bakiyoruz...
{
// al_show_native_message_box(display, "Error", "Error", "Failed to load image!",
// NULL, ALLEGRO_MESSAGEBOX_ERROR);

for (int j = i; j > 0; j--)//Bellekte yer kaplamasin diye verileri yok ediyoruz...
al_destroy_bitmap(binaDegisken[i].bina_resim);

al_destroy_display(display);
exit(0);
}
}

//bina_yerlestir(binaSayisi, display);
}

void oyun_arkaplan_yukle()
{
oyun_arkaplan = al_load_bitmap("data_/oyun_arkaplan.png");
}

void oyun_arkaplan_ciz()
{
al_draw_bitmap(oyun_arkaplan, 0, 0, 0);
}

void binaYokEt()
{
for (int i = 0; i < BINA_SAYISI; i++)
al_destroy_bitmap(binaDegisken[i].bina_resim);
}

void patlama_olustur()
{
for (int i = 0; i < PT_SAYISI; i++)
{
ptlma[i].pt_x = 0.0;
ptlma[i].pt_y = 0.0;
ptlma[i].pt_r = 25.0;
ptlma[i].pt_var = false;
}
}

void patlama_cizdir()
{
int i = 0;
while (ptlma[i].pt_var == true)
{
al_draw_filled_circle(ptlma[i].pt_x, ptlma[i].pt_y, ptlma[i].pt_r, al_map_rgb(17, 7, 137));
i++;
}
}

void patlama_ekle(struct TOP_STRUCT top1_)
{
for (int i = 0; i < PT_SAYISI; i++)
{
if (ptlma[i].pt_var == false)
{
printf("patlama ekle %d\n", i);
ptlma[i].pt_x = top1_.top_x;
ptlma[i].pt_y = top1_.top_y;
ptlma[i].pt_var = true;
break;
}
}
}

void patlama_sil()
{
for (int i = 0; i < PT_SAYISI; i++)
{
if (ptlma[i].pt_var == true)
{
ptlma[i].pt_var = false;
}
else
break;
}
}

//###########################################################################################################################################

bool done = false, draw = true, deger = false;

float t = 0;
float atis_sure = 1;
int atis_sure1;

int aci = 45;
float hiz = 60.0;
int hiz1;

float ruzgar_hizi = 0;
int ruzgar_hizi1;

struct gostergeler
{
ALLEGRO_BITMAP *image;
float g_x;
float g_y;
float g_gen;
float g_yuk;
int g_aci;
};

struct gostergeler gosterge_nesne[4];

void gosterge_yukle()
{
for (int i = 0; i < 4; i++)
{
gosterge_nesne[i].image = al_load_bitmap("data_/gosterge.png");
}
}

void gosterge_olustur()
{
for (int i = 0; i < 4; i++)
{
gosterge_nesne[i].g_y = 100;
gosterge_nesne[i].g_aci = 45;
gosterge_nesne[i].g_gen = 100;
gosterge_nesne[i].g_yuk = 100;
}

gosterge_nesne[0].g_x = 100;
gosterge_nesne[1].g_x = 250;
gosterge_nesne[2].g_x = 850;
gosterge_nesne[3].g_x = 1000;
}

void gosterge_ciz(ALLEGRO_FONT *font)
{
for (int i = 0; i < 4; i++)
{
if (i < 2)
{
al_draw_rotated_bitmap(gosterge_nesne[i].image, 50, 50, gosterge_nesne[i].g_x, gosterge_nesne[i].g_y, (360 - gosterge_nesne[i].g_aci)*OYUN_PI / 180, 0);
}
else
{
al_draw_rotated_bitmap(gosterge_nesne[i].image, 50, 50, gosterge_nesne[i].g_x, gosterge_nesne[i].g_y, (180 + gosterge_nesne[i].g_aci)*OYUN_PI / 180, ALLEGRO_FLIP_VERTICAL);
}
}

al_draw_text(font, al_map_rgb(255, 255, 255), gosterge_nesne[0].g_x-80, gosterge_nesne[0].g_y + 100, ALLEGRO_ALIGN_LEFT, "Atis Acisi");
al_draw_text(font, al_map_rgb(255, 255, 255), gosterge_nesne[1].g_x-20, gosterge_nesne[1].g_y + 100, ALLEGRO_ALIGN_LEFT, "Atis Hizi");
al_draw_text(font, al_map_rgb(255, 255, 255), gosterge_nesne[2].g_x-80, gosterge_nesne[2].g_y + 100, ALLEGRO_ALIGN_LEFT, "Atis Acisi");
al_draw_text(font, al_map_rgb(255, 255, 255), gosterge_nesne[3].g_x-20, gosterge_nesne[3].g_y + 100, ALLEGRO_ALIGN_LEFT, "Atis Hizi");
}

void egik_atis_hesap(KARAKTER _karakter)
{
top_nesne.top_x = _karakter.kr_x;
top_nesne.top_y = _karakter.kr_y - 60;

top_nesne.top_aci = aci * OYUN_PI / 180;
top_nesne.top_v0 = hiz + ruzgar_hizi;
top_nesne.top_atis = false;

top_nesne.top_t_ucus = ((top_nesne.top_v0*sin(top_nesne.top_aci) )* 2 )/ 9.8;

top_nesne.top_vx = top_nesne.top_v0*cos(top_nesne.top_aci);
top_nesne.top_vy = top_nesne.top_v0*sin(top_nesne.top_aci) - 9.8*top_nesne.top_t_ucus;
}

void egik_atis_hesap_yon_tusu()
{
top_nesne.top_aci = aci * OYUN_PI / 180;
top_nesne.top_v0 = hiz - ruzgar_hizi;
top_nesne.top_atis = false;

top_nesne.top_t_ucus = ((top_nesne.top_v0*sin(top_nesne.top_aci)) * 2) / 9.8;

top_nesne.top_vx = top_nesne.top_v0*cos(top_nesne.top_aci);
top_nesne.top_vy = top_nesne.top_v0*sin(top_nesne.top_aci) - 9.8*top_nesne.top_t_ucus;
}

float egik_atis_hesap_x(KARAKTER _karakter, float t_, int dgr)
{
if (dgr == 1)
{
top_nesne.top_v0 = hiz - ruzgar_hizi;
top_nesne.top_x = _karakter.kr_x + top_nesne.top_v0 * cos(top_nesne.top_aci) * t_;
}
else if (dgr == 2)
{
top_nesne.top_v0 = hiz - ruzgar_hizi;
top_nesne.top_x = _karakter.kr_x - top_nesne.top_v0 * cos(top_nesne.top_aci) * t_;
}
return top_nesne.top_x;
}

float egik_atis_hesap_y(KARAKTER _karakter, float t_, int dgr)
{
if (dgr == 1)
top_nesne.top_y = _karakter.kr_y - 60 + -1 * (t_*top_nesne.top_v0*sin(top_nesne.top_aci) - 0.5*9.8*t_*t_);
else if (dgr == 2)
top_nesne.top_y = _karakter.kr_y - 60 + -1 * (t_*top_nesne.top_v0*sin(top_nesne.top_aci) - 0.5*9.8*t_*t_);

return top_nesne.top_y;
}

bool carpisma_bina(struct TOP_STRUCT top, BINALAR bina[BINA_SAYISI])
{
for (int i = 0; i < BINA_SAYISI; i++)
{
if ((top.top_x + al_get_bitmap_width(top.image))< bina[i].bina_x || top.top_x > (bina[i].bina_x + bina[i].bina_gen)
|| (top.top_y + al_get_bitmap_height(top.image)) < bina[i].bina_y || top.top_y > (bina[i].bina_y + bina[i].bina_yuk))
{
//return false;
}
else
{
printf("carpisma\n");
return true;
}
}
return false;
}

bool carpisma_karakter(struct TOP_STRUCT top, KARAKTER karakter)
{
if (top.top_x + al_get_bitmap_width(top.image) < karakter.kr_x || top.top_x > karakter.kr_x + al_get_bitmap_width(karakter.kr)
|| top.top_y + al_get_bitmap_height(top.image) < karakter.kr_y || top.top_y > karakter.kr_y + al_get_bitmap_height(karakter.kr))
{
//return false;
}
else
{
printf("carpisma bina\n");
return true;
}

return false;
}

//######################################################################################################################################################

const int SCREEN_W = 1200;
const int SCREEN_H = 700;
const float FPS = 60.0;
const float frameFPS = 120.0;

bool carpisma_bina_bool = false;
bool carpisma_karakter_bool = false;

bool menu_cizim = true;
bool oyun_cizim = false;
bool oyun_durdur = false;
bool oyun_sonu = false;
bool yuksek_skor_cizim = false;
bool sira_degis = false;
bool karakter_secim = false;

char aci_yazi[30];
char hiz_yazi[30];
char ruzgar_hizi_yazi[30];
char kazanan_yazi[50];
char kazanan_yazi_skor[50];
char atis_sure_yazi[50];

char yuksek_skor_yazi[3][40];
int yuksek_skor_deger[3];

int karakter_score_deger;

void oyun_sifirla(ALLEGRO_DISPLAY *display)
{
done = false;
draw = true;
deger = false;

t = 0;
aci = 45;
hiz = 60.0;
hiz1 = 20;

ruzgar_hizi = 0;

carpisma_bina_bool = false;
carpisma_karakter_bool = false;

menu_cizim = true;
oyun_cizim = false;
oyun_durdur = false;
oyun_sonu = false;
yuksek_skor_cizim = false;

bina_yerlestir(BINA_SAYISI, display);

egik_atis_hesap(karakter1);
patlama_sil();
gosterge_olustur();

hiz1 = hiz;
ruzgar_hizi = -30 + rand() % 30;
ruzgar_hizi1 = ruzgar_hizi;

atis_sure1 = atis_sure;

//Aci yazisi
sprintf(aci_yazi, "Atis Acisi : %d", aci);
sprintf(hiz_yazi, "Atis Hizi : %d", hiz1);
sprintf(ruzgar_hizi_yazi, "Ruzgar Hizi : %d", ruzgar_hizi1);
sprintf(atis_sure_yazi, "Atis Suresi : %d", atis_sure1);
}

//####################################################################################################################################################


struct menu_arkaplan
{
ALLEGRO_BITMAP *image;
float x;
float y;
};

struct butonlar
{
ALLEGRO_BITMAP *image;
char isim[20];
float x;
float y;
float genislik;
float yukseklik;
};

struct menu_ok
{
ALLEGRO_BITMAP *image;
float ok_x;
float ok_y;
int yer;
};

//Menüdeki butonlar için nesne oluşturduk
struct butonlar button[4];

//Menü arkaplanı için nesne oluşturduk
struct menu_arkaplan m_arkaplan;

//Menu oklari
struct menu_ok m_oklari;

//Butonların resimlerinin dosyadan okunması
void buton_resim_yukle(ALLEGRO_DISPLAY *display)
{
char dosya_isim[20];

for (int i = 0; i < 4; i++)
{
sprintf(dosya_isim, "data_/buton_%d.png", i+1);
button[i].image = al_load_bitmap(dosya_isim);

if (!button[i].image)
{
// al_show_native_message_box(display, "Hata", "Hata", "Dosyalar yüklenirken bir hata oluştu", NULL, ALLEGRO_MESSAGEBOX_ERROR);
// al_destroy_display(display);
exit(0);
}
}
}

void menu_arkaplan_resim_yukle(ALLEGRO_DISPLAY *display)
{
m_arkaplan.image = al_load_bitmap("data_/menu_arkaplan.png");
if (!m_arkaplan.image)
{
// al_show_native_message_box(display, "Hata", "Hata", "Dosyalar yüklenirken bir hata oluştu", NULL, ALLEGRO_MESSAGEBOX_ERROR);
// al_destroy_display(display);
exit(0);
}
}

void menu_cizdir()
{
al_draw_bitmap(m_arkaplan.image, m_arkaplan.x, m_arkaplan.y, 0);

for (int i = 0; i < 3; i++)
{
al_draw_bitmap(button[i].image, button[i].x, button[i].y, 0);
}
}

void oyun_durdur_buton_ciz()
{
al_draw_bitmap(button[3].image, button[3].x, button[3].y, 0);
}

void menu_resim_yukle(ALLEGRO_DISPLAY *display)
{
buton_resim_yukle(display);
menu_arkaplan_resim_yukle(display);

m_arkaplan.x = 0;
m_arkaplan.y = 0;

for (int i = 0; i < 3; i++)
{
button[i].x = 450;
button[i].y = 255 + i * 70;
button[i].genislik = 300;
button[i].yukseklik = 50;
}

button[3].x = 200;
button[3].y = 50;
button[3].genislik = 600;
button[3].yukseklik = 600;
}

void menu_ok_olustur()
{
m_oklari.image = al_load_bitmap("data_/top.png");
m_oklari.ok_x = 780;
m_oklari.ok_y = 255;
m_oklari.yer = 1;
}

void menu_ok_cizdir()
{
al_draw_bitmap(m_oklari.image, m_oklari.ok_x, m_oklari.ok_y, 0);
}

void menu_ok_yer_ayarla(int i, ALLEGRO_SAMPLE *menu_secim_ses)
{
if (m_oklari.yer == 1 && i == 1)
{
m_oklari.yer = 2;
}
else if (m_oklari.yer == 2 && i == -1)
{
m_oklari.yer = 1;
}
else if (m_oklari.yer == 2 && i == 1)
{
m_oklari.yer = 3;
}
else if (m_oklari.yer == 3 && i == -1)
{
m_oklari.yer = 2;
}

switch (m_oklari.yer)
{
case 1:
m_oklari.ok_x = 780;
m_oklari.ok_y = 255;
break;
case 2:
m_oklari.ok_x = 780;
m_oklari.ok_y = 325;
break;
case 3:
m_oklari.ok_x = 780;
m_oklari.ok_y = 395;
break;
}

al_play_sample(menu_secim_ses, 0.8, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, 0);
}

void oyun_sonu_arkaplan_ciz()
{
al_draw_bitmap(m_arkaplan.image, m_arkaplan.x, m_arkaplan.y, 0);
}

//#######################################################################################################################################

bool yuksek_skor_kontrol(KARAKTER kr_)
{
for (int i = 0; i < 3; i++)
{
if (kr_.kr_score > yuksek_skor_deger[i])
{
if (i == 0)
yuksek_skor_deger[0] = kr_.kr_score;
else if (i == 1)
{
yuksek_skor_deger[0] = yuksek_skor_deger[1];
yuksek_skor_deger[1] = kr_.kr_score;
}
else if (i == 2)
{
yuksek_skor_deger[0] = yuksek_skor_deger[1];
yuksek_skor_deger[1] = yuksek_skor_deger[2];
yuksek_skor_deger[2] = kr_.kr_score;
}

sprintf(yuksek_skor_yazi[i], "%d. Oyuncu\'nun Puani -- %d", i + 1, yuksek_skor_deger[i]);
return true;
}
}

return false;
}

void oyun_kazanan_ciz(ALLEGRO_FONT *font)
{
if (karakter1.kr_score > karakter2.kr_score)
{
karakter_score_deger = karakter1.kr_score;
sprintf(kazanan_yazi, "Tebrikler!! %d. Oyuncu Kazandi!!! Puan : %d", 1, karakter_score_deger);
if (yuksek_skor_kontrol(karakter1))
{
sprintf(kazanan_yazi_skor, "Tebrikler!! En iyiler Tablosuna girdin!!");
}
}
else
{
karakter_score_deger = karakter2.kr_score;
sprintf(kazanan_yazi, "Tebrikler!! %d. Oyuncu Kazandi!!! Puan : %d", 1, karakter_score_deger);
if (yuksek_skor_kontrol(karakter2))
{
sprintf(kazanan_yazi_skor, "Tebrikler!! En iyiler Tablosuna girdin!!");
}
}

al_draw_text(font, al_map_rgb(17, 7, 137), 20, 350, ALLEGRO_ALIGN_LEFT, kazanan_yazi);
al_draw_text(font, al_map_rgb(17, 7, 137), 20, 398, ALLEGRO_ALIGN_LEFT, kazanan_yazi_skor);
}

void yuksek_skor_cizdir(ALLEGRO_FONT *font)
{
for (int i = 2; i >= 0; i--)
{
al_draw_text(font, al_map_rgb(17, 7, 137), 200, 200 + i * 35, ALLEGRO_ALIGN_LEFT, yuksek_skor_yazi[i]);
}
}

void yuksek_skor_dosya_yaz()
{
FILE *di;

di = fopen( "data_/yuksek_skor.txt", "w");

if (di == NULL)
{
printf("Dosya acilamadi\n");
exit(0);
}

for (int i = 0; i < 3; i++)
{
fprintf(di, "%d\n", yuksek_skor_deger[i]);
}

fclose(di);
}

void yuksek_skor_dosya_oku()
{
FILE *di;

di=fopen("data_/yuksek_skor.txt", "r");

if (di == NULL)
{
for (int i = 0; i < 3; i++)
{
sprintf(yuksek_skor_yazi[i], "%d. Oyuncu\'nun Puani -- 0", i+1);
}
}
else
{
for (int i = 0; i < 3; i++)
{
fscanf(di, "%d\n", &yuksek_skor_deger[i]);
sprintf(yuksek_skor_yazi[i], "%d. Oyuncu\'nun Puani -- %d", i+1, yuksek_skor_deger[i]);
}

fclose(di);
}
}

float skor_hesap(KARAKTER kr_, bool bina_carp, bool kr_carp, float sure)
{
if (bina_carp)
{
(kr_).kr_score += 1 / (sure + 1);
}

if (kr_carp)
{
(kr_).kr_score += 10 / (sure + 1);
}

printf("karakter score %f \n", (kr_).kr_score);
return kr_.kr_score;
}

//###########################################################################################################################################


struct karakter_ok
{
ALLEGRO_BITMAP *image;
float ok_x;
float ok_y;
int yer;
};

struct karakter_ok k_ok, k_ok2;

void secim_ok_cizdir()
{
al_draw_bitmap(k_ok.image, k_ok.ok_x, k_ok.ok_y, 0);
al_draw_bitmap(k_ok2.image, k_ok2.ok_x, k_ok2.ok_y, 0);
}

void karakter_secim_ciz(ALLEGRO_FONT *font)
{
al_draw_text(font, al_map_rgb(255, 255, 255), 100, 100, ALLEGRO_ALIGN_LEFT, "Karakter 1");
al_draw_text(font, al_map_rgb(255, 0, 0), 100, 150, ALLEGRO_ALIGN_LEFT, "Kirmizi");
al_draw_text(font, al_map_rgb(0, 255, 0), 100, 200, ALLEGRO_ALIGN_LEFT, "Yesil");
al_draw_text(font, al_map_rgb(255, 102, 0), 100, 250, ALLEGRO_ALIGN_LEFT, "Turuncu");

al_draw_text(font, al_map_rgb(255, 255, 255), 800, 100, ALLEGRO_ALIGN_LEFT, "Karakter 2");
al_draw_text(font, al_map_rgb(255, 0, 0), 800, 150, ALLEGRO_ALIGN_LEFT, "Kirmizi");
al_draw_text(font, al_map_rgb(0, 255, 0), 800, 200, ALLEGRO_ALIGN_LEFT, "Yesil");
al_draw_text(font, al_map_rgb(255, 102, 0), 800, 250, ALLEGRO_ALIGN_LEFT, "Turuncu");

secim_ok_cizdir();
}

void secim_ok_olustur()
{
k_ok.image = al_load_bitmap("data_/top.png");
k_ok.ok_x = 40;
k_ok.ok_y = 150 - 25;
k_ok.yer = 1;

k_ok2.image = al_load_bitmap("data_/top.png");
k_ok2.ok_x = 740;
k_ok2.ok_y = 150 - 25;
k_ok2.yer = 1;
}

void secim_ok_yer_ayarla1(int i, ALLEGRO_SAMPLE *menu_secim_ses)
{
if (k_ok.yer == 1 && i == 1)
{
k_ok.yer = 2;
}
else if (k_ok.yer == 2 && i == -1)
{
k_ok.yer = 1;
}
else if (k_ok.yer == 2 && i == 1)
{
k_ok.yer = 3;
}
else if (k_ok.yer == 3 && i == -1)
{
k_ok.yer = 2;
}

switch (k_ok.yer)
{
case 1:
k_ok.ok_x = 40;
k_ok.ok_y = 150 - 25;
break;
case 2:
k_ok.ok_x = 40;
k_ok.ok_y = 200 - 25;
break;
case 3:
k_ok.ok_x = 40;
k_ok.ok_y = 250 - 25;
break;
}

al_play_sample(menu_secim_ses, 0.8, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, 0);
}

void secim_ok_yer_ayarla2(int i, ALLEGRO_SAMPLE *menu_secim_ses)
{
printf("kokyer %d\n", k_ok.yer);
if (k_ok2.yer == 1 && i == 1)
{
k_ok2.yer = 2;
}
else if (k_ok2.yer == 2 && i == -1)
{
k_ok2.yer = 1;
}
else if (k_ok2.yer == 2 && i == 1)
{
k_ok2.yer = 3;
}
else if (k_ok2.yer == 3 && i == -1)
{
k_ok2.yer = 2;
}

switch (k_ok2.yer)
{
case 1:
k_ok2.ok_x = 740;
k_ok2.ok_y = 150 - 25;
break;
case 2:
k_ok2.ok_x = 740;
k_ok2.ok_y = 200 - 25;
break;
case 3:
k_ok2.ok_x = 740;
k_ok2.ok_y = 250 - 25;
break;
}

al_play_sample(menu_secim_ses, 0.8, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, 0);
}

//###########################################################################################################################################


int main(int argc, char **argv)
{
srand(time(NULL));

ALLEGRO_DISPLAY *display = NULL;
ALLEGRO_SAMPLE *menu_arkaplan_ses = NULL;
ALLEGRO_SAMPLE *menu_secim_ses = NULL;
ALLEGRO_SAMPLE *carpma_ses = NULL;
ALLEGRO_SAMPLE_ID carpma_ses_id;

ALLEGRO_SAMPLE_INSTANCE *menu_arkaplan_ses_instance = NULL;
ALLEGRO_FONT *oyun_font = NULL;
ALLEGRO_FONT *oyun_sonu_font = NULL;
ALLEGRO_FONT *yuksek_skor_font = NULL;

if (!al_init())
{
// al_show_native_message_box(display, "Hata", "Allegro Tanitim", "Allegro Baslatilamadi!!", 0, 0);
return -1;
}

if (!al_install_audio()){
// al_show_native_message_box(display, "Hata", "Allegro Ses", "Allegro Ses Baslatilamadi!!", 0, 0);
return -1;
}

if (!al_init_acodec_addon()){
//al_show_native_message_box(display, "Hata", "Allegro Ses", "Allegro Ses Codec yuklenemedi!!", 0, 0);
return -1;
}

al_init_primitives_addon();
al_init_font_addon(); // Font addon başlatılıyor
al_init_ttf_addon();// ttf addon başlatılıyor

//Fontlar yükleniyor
oyun_font = al_load_font("data_/pirulen.ttf", 18, 0);
oyun_sonu_font = al_load_font("data_/pirulen.ttf", 36, 0);
yuksek_skor_font = al_load_font("data_/pirulen.ttf", 30, 0);

//Ne kadar ses dosyası kullandığımızı yazıyoruz
if (!al_reserve_samples(3))
{
fprintf(stderr, "failed to reserve samples!\n");
return -1;
}

//Ses i dosyadan yukledik
menu_arkaplan_ses = al_load_sample("data_/music/im_blue_1110.ogg");
menu_secim_ses = al_load_sample("data_/music/menu_secim.ogg");
carpma_ses = al_load_sample("data_/music/hit.wav");

menu_arkaplan_ses_instance = al_create_sample_instance(menu_arkaplan_ses);
al_set_sample_instance_playmode(menu_arkaplan_ses_instance, ALLEGRO_PLAYMODE_LOOP);
al_attach_sample_instance_to_mixer(menu_arkaplan_ses_instance, al_get_default_mixer());

//Ekran oluşturuldu
display = al_create_display(SCREEN_W, SCREEN_H);

if (!display)
{
// al_show_native_message_box(display, "Hata", "Görüntü Ayarları", "Görüntü Olusturulamadi", 0, 0);
return -1;
}

al_init_image_addon();//Resim eklentisi yuklendi
al_install_keyboard();//Klavye eklendi

//event oluşturma
ALLEGRO_EVENT_QUEUE *event_queue = al_create_event_queue();

//timer oluşturma
ALLEGRO_TIMER *timer = al_create_timer(1 / FPS);
ALLEGRO_TIMER *frameTimer = al_create_timer(1 / frameFPS);

//Oluşturduğumuz timer ı event sırasına koyuyoruz
al_register_event_source(event_queue, al_get_timer_event_source(timer));
al_register_event_source(event_queue, al_get_timer_event_source(frameTimer));
al_register_event_source(event_queue, al_get_keyboard_event_source());

menu_resim_yukle(display);
binaResimYukle(6, display);
oyun_arkaplan_yukle();
topResimYukle();
efekt_resim_yukle();
menu_ok_olustur();
secim_ok_olustur();
patlama_olustur();
yuksek_skor_dosya_oku();
gosterge_yukle();

//Başlangıç değerleri atılıyor
oyun_sifirla(display);

//Timer ı başlattık
al_start_timer(timer);
al_start_timer(frameTimer);

while (done == false)
{
ALLEGRO_EVENT events;
if (!oyun_sonu)
al_wait_for_event(event_queue, &events);

if (events.type == ALLEGRO_EVENT_TIMER)
{
if (events.timer.source == timer)
{

}
else if (events.timer.source == frameTimer && oyun_cizim && !oyun_durdur)
{
carpisma_bina_bool = carpisma_bina(top_nesne, binaDegisken);

if (t < top_nesne.top_t_ucus * 2)
{
if (karakter1.kr_sira)
{
egik_atis_hesap_x(karakter1, t, 1);
egik_atis_hesap_y(karakter1, t, 1);
carpisma_karakter_bool = carpisma_karakter(top_nesne, karakter2);
karakter1.kr_score = skor_hesap(karakter1, carpisma_bina_bool, carpisma_karakter_bool, atis_sure);
}
else if (karakter2.kr_sira)
{
egik_atis_hesap_x(karakter2, t, 2);
egik_atis_hesap_y(karakter2, t, 2);
carpisma_karakter_bool = carpisma_karakter(top_nesne, karakter1);
karakter2.kr_score = skor_hesap(karakter2, carpisma_bina_bool, carpisma_karakter_bool, atis_sure);
}

if (top_nesne.top_atis)
{
t += al_get_timer_speed(frameTimer) * 15;
}

if (atis_sure < 60)
{
atis_sure += al_get_timer_speed(frameTimer);
atis_sure1 = atis_sure;
sprintf(atis_sure_yazi, "Atis Suresi : %d", atis_sure1);
}
else
sira_degis = true;
}

if (t > top_nesne.top_t_ucus * 2 || sira_degis)
{
al_stop_sample(&carpma_ses_id);

if (oyun_sonu == false)
{
ruzgar_hizi = -30 + rand() % 30;
ruzgar_hizi1 = ruzgar_hizi;

sprintf(ruzgar_hizi_yazi, "Ruzgar Hizi : %d", ruzgar_hizi1);
}

if (karakter1.kr_sira && top_nesne.top_atis && karakter1.kr_hak > 0)
{
karakter1.kr_hak -= 1;
top_nesne.top_atis = false;
t = 0;
atis_sure = 0;
printf("kr1 %d\n", karakter1.kr_hak);
carpisma_bina_bool = false;
karakter1.kr_sira = false;
karakter2.kr_sira = true;
}
else if (karakter2.kr_sira && top_nesne.top_atis && karakter2.kr_hak > 0)
{
karakter2.kr_hak -= 1;
top_nesne.top_atis = false;
t = 0;
atis_sure = 0;
carpisma_bina_bool = false;
karakter1.kr_sira = true;
karakter2.kr_sira = false;
}

if (karakter1.kr_hak == 0 && karakter2.kr_hak == 0 && oyun_sonu == false)
{
oyun_sonu = true;
oyun_cizim = false;

printf("Oyun Bitti\n");
}
}
}

draw = true;
}
else if (events.type == ALLEGRO_EVENT_KEY_DOWN)
{
switch (events.keyboard.keycode)
{
if (!oyun_durdur && !oyun_sonu)
{
case ALLEGRO_KEY_UP:
if (menu_cizim)
{
menu_ok_yer_ayarla(-1, menu_secim_ses);
}
else if (oyun_cizim && !top_nesne.top_atis && aci < 90)
{
aci += 1;
egik_atis_hesap_yon_tusu();
sprintf(aci_yazi, "Atis Acisi : %d", aci);
gosterge_nesne[0].g_aci += 1;
gosterge_nesne[2].g_aci += 1;
}

if (karakter_secim)
{
secim_ok_yer_ayarla2(-1, menu_secim_ses);
}

break;

case ALLEGRO_KEY_DOWN:
if (menu_cizim)
{
menu_ok_yer_ayarla(1, menu_secim_ses);
}
else if (oyun_cizim && !top_nesne.top_atis && aci > 20)
{
aci-= 1;
egik_atis_hesap_yon_tusu();
sprintf(aci_yazi, "Atis Acisi : %d", aci);
printf("%s\n", aci_yazi);
gosterge_nesne[0].g_aci -= 1;
gosterge_nesne[2].g_aci -= 1;
}

if (karakter_secim)
{
secim_ok_yer_ayarla2(1, menu_secim_ses);
}

break;

case ALLEGRO_KEY_RIGHT:
if ( hiz < 101 && oyun_cizim && !top_nesne.top_atis)
{
hiz += 1;
hiz1 = hiz;
egik_atis_hesap_yon_tusu();
sprintf(hiz_yazi, "Atis Hizi : %d", hiz1);
gosterge_nesne[1].g_aci += 1;
gosterge_nesne[3].g_aci += 1;
}

break;
case ALLEGRO_KEY_LEFT:
if (hiz > 39 && oyun_cizim && !top_nesne.top_atis )
{
hiz -= 1;
hiz1 = hiz;
egik_atis_hesap_yon_tusu();
sprintf(hiz_yazi, "Atis Hizi : %d", hiz1);
gosterge_nesne[1].g_aci -= 1;
gosterge_nesne[3].g_aci -= 1;
}
break;

case ALLEGRO_KEY_SPACE:
if (menu_cizim)
{
switch (m_oklari.yer)
{
case 1:
menu_cizim = false;
oyun_cizim = false;
karakter_secim = true;

break;
case 2:
menu_cizim = false;
oyun_cizim = false;
karakter_secim = false;
yuksek_skor_cizim = true;
break;
case 3:
done = true;
break;
}
}
else if (karakter_secim)
{
karakter_secim = false;
oyun_cizim = true;
karakterRenkSec(k_ok.yer, k_ok2.yer, &karakter1, &karakter2);
}
else if (oyun_cizim)
{
if (!top_nesne.top_atis)
{
top_nesne.top_atis = true;
}
}
break;

case ALLEGRO_KEY_W:
if (oyun_cizim && !top_nesne.top_atis && ((aci + 10)<90))
{
aci += 10;
egik_atis_hesap_yon_tusu();
sprintf(aci_yazi, "Atis Acisi : %d", aci);
gosterge_nesne[0].g_aci += 10;
gosterge_nesne[2].g_aci += 10;
}

if (karakter_secim)
{
secim_ok_yer_ayarla1(-1, menu_secim_ses);
}

break;

case ALLEGRO_KEY_S:
if (oyun_cizim && !top_nesne.top_atis && ((aci-10)>20) )
{
aci -= 10;
egik_atis_hesap_yon_tusu();
sprintf(aci_yazi, "Atis Acisi : %d", aci);
gosterge_nesne[0].g_aci -= 10;
gosterge_nesne[2].g_aci -= 10;
}

if (karakter_secim)
{
secim_ok_yer_ayarla1(1, menu_secim_ses);
}

break;
case ALLEGRO_KEY_D:
if ((hiz+10) < 101 && oyun_cizim && !top_nesne.top_atis)
{
hiz += 10;
hiz1 = hiz;
egik_atis_hesap_yon_tusu();
sprintf(hiz_yazi, "Atis Hizi : %d", hiz1);
gosterge_nesne[1].g_aci += 10;
gosterge_nesne[3].g_aci += 10;
}
break;
case ALLEGRO_KEY_A:
if ((hiz-10) > 39 && oyun_cizim && !top_nesne.top_atis)
{
hiz -= 10;
hiz1 = hiz;
egik_atis_hesap_yon_tusu();
sprintf(hiz_yazi, "Atis Hizi : %d", hiz1);
gosterge_nesne[1].g_aci -= 10;
gosterge_nesne[3].g_aci -= 10;
}
break;
}

case ALLEGRO_KEY_P:
if (oyun_cizim)
oyun_durdur = !oyun_durdur;
break;

case ALLEGRO_KEY_ESCAPE:
if (menu_cizim)
done = true;
else if (oyun_cizim)
{
menu_cizim = true;
oyun_cizim = false;
}
else if (yuksek_skor_cizim)
{
yuksek_skor_cizim = false;
menu_cizim = true;
}
break;
}
}

if (draw)
{
draw = false;

if (menu_cizim)
{
al_play_sample_instance(menu_arkaplan_ses_instance);
menu_cizdir();
menu_ok_cizdir();
}
else
{
al_stop_sample_instance(menu_arkaplan_ses_instance);
}

if (karakter_secim)
{
karakter_secim_ciz(oyun_font);
}

if (oyun_cizim)
{
oyun_arkaplan_ciz();

binaCizdir(6);

patlama_cizdir();

karakter_cizdir(karakter1);
karakter_cizdir(karakter2);

al_draw_text(oyun_font, al_map_rgb(255, 255, 255), 500, 50, ALLEGRO_ALIGN_LEFT, aci_yazi);
al_draw_text(oyun_font, al_map_rgb(255, 255, 255), 500, 68, ALLEGRO_ALIGN_LEFT, hiz_yazi);
al_draw_text(oyun_font, al_map_rgb(255, 255, 255), 500, 86, ALLEGRO_ALIGN_LEFT, ruzgar_hizi_yazi);
al_draw_text(oyun_font, al_map_rgb(255, 255, 255), 500, 104, ALLEGRO_ALIGN_LEFT, atis_sure_yazi);


gosterge_ciz(oyun_font);
topCizdir(top_nesne.top_x, top_nesne.top_y);

if (oyun_durdur)
oyun_durdur_buton_ciz();

if (carpisma_bina_bool)
{
patlama_ekle(top_nesne);
efekt_cizdir();
al_play_sample(carpma_ses, 0.8, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, &carpma_ses_id);
carpisma_bina_bool = false;
}

}
else if (oyun_sonu)
{
oyun_sonu_arkaplan_ciz();

oyun_kazanan_ciz(oyun_sonu_font);
}
else if (yuksek_skor_cizim)
{
yuksek_skor_cizdir(oyun_font);
}

al_flip_display();
al_clear_to_color(al_map_rgb(0, 0, 0));

if (oyun_sonu)
{
al_rest(6);

oyun_sifirla(display);
}
}
}

//Pointerlari silmeyi unutma
al_destroy_display(display);
yuksek_skor_dosya_yaz();
return 0;
}


Programın çalışması için gerekli olan .png falanda aynı klasör altında tıpkı windowstaki gibi duruyor. Fakat bir türlü çalışmıyor.

Bu da derleme komutum ...

g++ 130201039-130201073.cpp -o add `pkg-config --libs allegro-5.0 allegro_primitives-5.0 allegro_color-5.0 allegro_main-5.0 allegro_font-5.0 allegro_ttf-5.0 allegro_audio-5.0 allegro_memfile-5.0 allegro_acodec-5.0 allegro_image-5.0`

heartsmagic

Hata olarak ne diyor peki?
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Taifuru

Hata almiyorum. Ama en son debug yapmaya karar verdim sorunu buldum fakat cozumu nette arastirmama ragmen bulamadim. al_install_audio diye bir fonksiyon false return ettigi icin program basta kapaniyor. Bu da fonksiyonun sesi bulamadigi icin oluyormus fakat soylenen paketleri yuklememe ragmen cozemedim. pulse audio dev paketleri

Reverser

Alıntı yapılan: Taifuru - 07 Ocak 2015 - 12:25:45
Hata almiyorum. Ama en son debug yapmaya karar verdim sorunu buldum fakat cozumu nette arastirmama ragmen bulamadim. al_install_audio diye bir fonksiyon false return ettigi icin program basta kapaniyor. Bu da fonksiyonun sesi bulamadigi icin oluyormus fakat soylenen paketleri yuklememe ragmen cozemedim. pulse audio dev paketleri

şurada sonuca ulaşılmış bir göz atın isterseniz -> https://www.allegro.cc/forums/thread/613780

XFCE ROCKS !
Powered by Thunar & XFWM4



Taifuru

#4
Zaten bende buradan yaptim o dev paketleri yukledim dedigim yer burasi. Ama suanlik elimde bir sonuc yok. Allegro.cfg dosyasindan ses i pulseaudio ya da cevirdim degisen bir sey yok


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 07 Ocak 2015 - 21:26:03

Cmake yaparken bir şeyi değiştirdim şuan sıkıntı yok gibi :)

sudo cmake -DCMAKE_INSTALL_PREFIX=/usr ..

Reverser

bir şekilde halledebilmiş olduğunuza sevindim kolay gelsin :)

XFCE ROCKS !
Powered by Thunar & XFWM4



heartsmagic

Geri bildirim için teşekkürler. Etiketleyelim mi başlığı? cozuldukonusu
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.