#1Sex 26 Jul - 6:31
[source] fts game kiba
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
src: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
baixar src e img: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
video fico meio bugado por causa do recordmydesktop =/
- Código:
/**
* coder: hfts315
* contato: www.facebook.com/hacker.fts315
**/
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <time.h>
#include <gtk/gtk.h>
#define IMG_KIBA "kiba.jpg"
#define IMG_KIBA_MORTO "kiba_morto.jpg"
#define IMG_KUNAI "kunai.jpg"
//variaveis globais
GtkWidget *janela, *fixo, *img_kiba, *texto_pausa, *texto_hp, *janela_ajuda,
*fixo_ajuda, *texto_ajuda, *img_kunai1, *img_kunai1, *img_kunai2,
*img_kunai3, *img_kunai3, *img_kunai4, *img_kunai5;
gint kiba_x = 250, kiba_y = 355, kiba_hp = 100, kiba_vel = 10, pontuacao = 0, pause = 0;
static gint kunai1_x = 0, kunai1_y = 0, kunai2_x = 0, kunai2_y = 0,
kunai3_y = 0, kunai3_x = 0, kunai4_y = 0, kunai4_x = 0, kunai5_y = 0, kunai5_x = 0;
//prototipo
int fts_KibaMove(GtkWidget *w, GdkEventKey *e, gpointer *p);
int fts_kibaMoveLog();
void fts_ajuda_sair(void);
int fts_numRand(int x);
int fts_jogarKunai1();
int fts_jogarKunai2();
int fts_jogarKunai3();
int fts_jogarKunai4();
int fts_jogarKunai5();
int fts_textoHp();
int fts_kibaDanos();
//funçao principal
int main(int argc, char **argv)
{
//variaveis
GtkWidget *botao_ajuda_sair;
gint cont = 0;
//atribuiçao
kunai1_x = fts_numRand(600);
kunai2_x = fts_numRand(500);
kunai3_x = fts_numRand(400);
kunai3_x = fts_numRand(300);
kunai3_x = fts_numRand(200);
//inicializaçao
gtk_init(&argc,&argv);
//instancia
janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
fixo = gtk_fixed_new();
img_kiba = gtk_image_new_from_file(IMG_KIBA);
texto_pausa = gtk_label_new(NULL);
texto_hp = gtk_label_new(NULL);
janela_ajuda = gtk_window_new(GTK_WINDOW_POPUP);
fixo_ajuda = gtk_fixed_new();
botao_ajuda_sair = gtk_button_new_with_label("continuar o jogo");
texto_ajuda = gtk_label_new("coder: hfts315\ncontato: www.facebook.com/hacker.fts315\n\nF1 - ajuda\nPAUSE - pausa o jogo\nseta esquerda - move para esquerda\nseta direita - move para direita");
img_kunai1 = gtk_image_new_from_file(IMG_KUNAI);
img_kunai2 = gtk_image_new_from_file(IMG_KUNAI);
img_kunai3 = gtk_image_new_from_file(IMG_KUNAI);
img_kunai4 = gtk_image_new_from_file(IMG_KUNAI);
img_kunai5 = gtk_image_new_from_file(IMG_KUNAI);
//atributo
gtk_window_set_title(GTK_WINDOW(janela),"fts game kunai kiba - by hfts315");
gtk_window_set_position(GTK_WINDOW(janela),GTK_WIN_POS_CENTER);
gtk_widget_set_usize(GTK_WIDGET(janela),600,480);
gtk_window_set_resizable(GTK_WINDOW(janela),false);
gtk_label_set_markup(GTK_LABEL(texto_pausa),"<span foreground=\"red\" background=\"black\">Jogo Pausado</span>");
gtk_label_set_markup(GTK_LABEL(texto_hp),"<span foreground=\"green\" background=\"black\">Life: 100\nPontos: 0\n\nf1 - info</span>");
gtk_widget_set_usize(GTK_WIDGET(janela_ajuda),300,000);
gtk_window_set_position(GTK_WINDOW(janela_ajuda),GTK_WIN_POS_CENTER);
//empacotamento
gtk_container_add(GTK_CONTAINER(janela),fixo);
gtk_fixed_put(GTK_FIXED(fixo),img_kiba,kiba_x,kiba_y);
gtk_fixed_put(GTK_FIXED(fixo),texto_pausa,250,210);
gtk_fixed_put(GTK_FIXED(fixo),texto_hp,500,10);
gtk_container_add(GTK_CONTAINER(janela_ajuda),fixo_ajuda);
gtk_fixed_put(GTK_FIXED(fixo_ajuda),botao_ajuda_sair,0,150);
gtk_fixed_put(GTK_FIXED(fixo_ajuda),texto_ajuda,0,0);
gtk_fixed_put(GTK_FIXED(fixo),img_kunai1,kunai1_x,kunai1_y);
gtk_fixed_put(GTK_FIXED(fixo),img_kunai2,kunai2_x,kunai2_y);
gtk_fixed_put(GTK_FIXED(fixo),img_kunai3,kunai3_x,kunai3_y);
gtk_fixed_put(GTK_FIXED(fixo),img_kunai4,kunai4_x,kunai4_y);
gtk_fixed_put(GTK_FIXED(fixo),img_kunai5,kunai5_x,kunai5_y);
//materalizaçao
gtk_widget_show_all(janela);
gtk_widget_show_all(janela_ajuda);
gtk_widget_hide(janela_ajuda);
gtk_widget_hide(texto_pausa);
//eventos
g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect(GTK_OBJECT(janela),"key_press_event",G_CALLBACK(fts_KibaMove),NULL);
g_signal_connect(GTK_OBJECT(botao_ajuda_sair),"clicked",G_CALLBACK(fts_ajuda_sair),NULL);
//timeout
//gtk_timeout_add(1000,fts_kibaMoveLog,NULL); //log de movimento
gtk_timeout_add(500,fts_jogarKunai1,NULL);
gtk_timeout_add(500,fts_jogarKunai2,NULL);
gtk_timeout_add(500,fts_jogarKunai3,NULL);
gtk_timeout_add(500,fts_jogarKunai4,NULL);
gtk_timeout_add(500,fts_jogarKunai5,NULL);
gtk_timeout_add(500,fts_textoHp,NULL);
gtk_timeout_add(300,fts_kibaDanos,NULL);
//loop de evento
gtk_main();
return 0;
}
//movimento do kiba
int fts_KibaMove(GtkWidget *w, GdkEventKey *e, gpointer *p)
{
//abre a janela ajuda
if(!strcmp(gdk_keyval_name(e->keyval),"F1"))
{
pause = 1;
gtk_widget_show(janela_ajuda);
}
//pausa o jogo
if(!strcmp(gdk_keyval_name(e->keyval),"Pause"))
{
switch(pause)
{
case 0: {
pause = 1;
gtk_widget_show(texto_pausa);
break;
}
case 1: {
pause = 0;
gtk_widget_hide(texto_pausa);
break;
}
}
}
if(pause >= 1)
{
g_print("jogo pausado aperte 'pause' para continuar\n");
return(0);
}
//limita o kiba no espaço da tela broqueando para direita
if(kiba_x >= 520 && !strcmp(gdk_keyval_name(e->keyval),"Right"))
{
return 0;
}
//limita o kiba no espaço da tela broqueando para esquerda
if(kiba_x <= 10 && !strcmp(gdk_keyval_name(e->keyval),"Left"))
{
return 0;
}
//move o kiba para direita
if(!strcmp(gdk_keyval_name(e->keyval),"Right"))
{
kiba_x += kiba_vel;
gtk_fixed_move(GTK_FIXED(fixo),img_kiba,kiba_x,kiba_y);
}
//move o kiba para esquerda
if(!strcmp(gdk_keyval_name(e->keyval),"Left"))
{
kiba_x -= kiba_vel;
gtk_fixed_move(GTK_FIXED(fixo),img_kiba,kiba_x,kiba_y);
}
}
//fecha a janela ajuda
void fts_ajuda_sair(void)
{
pause = 0;
gtk_widget_hide(janela_ajuda);
}
//retorna um numero randomico
int fts_numRand(int x)
{
int y;
srand(time(NULL));
y = (int) rand() % x;
return y;
}
//joga kunai 1
int fts_jogarKunai1()
{
//pausa o jogo
if(pause >= 1)
{
}
//movimento da kunai
else
{
//recomeça a queda
if(kunai1_y >= 420)
{
pontuacao +=10;
kunai1_y = -100;
kunai1_x = fts_numRand(550);
}
//movimento da kunai
else
{
kunai1_y += 100;
gtk_fixed_move(GTK_FIXED(fixo),img_kunai1,kunai1_x,kunai1_y);
}
return 1;
}
}
//joga kunai 2
int fts_jogarKunai2()
{
//pausa o jogo
if(pause >= 1)
{
}
//movimento da kunai
else
{
//recomeça a queda da kunai
if(kunai2_y >= 420)
{
pontuacao +=10;
kunai2_y = -100;
kunai2_x = fts_numRand(450);
}
//movimento
kunai2_y += 100;
gtk_fixed_move(GTK_FIXED(fixo),img_kunai2,kunai2_x,kunai2_y);
}
return 1;
}
//joga kunai 3
int fts_jogarKunai3()
{
//pausa o jogo
if(pause >= 1)
{
}
//movimento da kunai
else
{
//recomeça a queda da kunai
if(kunai3_y >= 420)
{
pontuacao +=10;
kunai3_y = -100;
kunai3_x = fts_numRand(410);
}
//movimento
kunai3_y += 100;
gtk_fixed_move(GTK_FIXED(fixo),img_kunai3,kunai3_x,kunai3_y);
}
return 1;
}
//joga kunai 4
int fts_jogarKunai4()
{
//pausa o jogo
if(pause >= 1)
{
}
//movimento da kunai
else
{
//recomeça a queda da kunai
if(kunai4_y >= 420)
{
pontuacao +=10;
kunai4_y = -100;
kunai4_x = fts_numRand(440);
}
//movimento
kunai4_y += 100;
gtk_fixed_move(GTK_FIXED(fixo),img_kunai4,kunai4_x,kunai4_y);
}
return 1;
}
//joga kunai 5
int fts_jogarKunai5()
{
//pausa o jogo
if(pause >= 1)
{
}
//movimento da kunai
else
{
//recomeça a queda da kunai
if(kunai5_y >= 420)
{
pontuacao +=10;
kunai5_y = -100;
kunai5_x = fts_numRand(330);
}
//movimento
kunai5_y += 100;
gtk_fixed_move(GTK_FIXED(fixo),img_kunai5,kunai5_x,kunai5_y);
}
return 1;
}
//atualiza o hp e a pontuaçao
int fts_textoHp()
{
char fts[500];
sprintf(fts,"<span foreground=\"green\" background=\"black\">Life: %d\nPontos: %d\n\nf1 - info</span>",kiba_hp,pontuacao);
gtk_label_set_markup(GTK_LABEL(texto_hp),fts);
return 1;
}
//danos
int fts_kibaDanos()
{
if(kiba_hp <= 0)
{
pause = 2;
gtk_image_set_from_file(GTK_IMAGE(img_kiba),IMG_KIBA_MORTO);
gtk_label_set_markup(GTK_LABEL(texto_pausa),"<span foreground=\"red\" background=\"black\">Game Over</span>");
gtk_widget_show(texto_pausa);
}
if(pause >= 1)
{
}
else
{
//kunai1
if(kunai1_y >= 290)
{
//so causara danos se kunai tiver (x > kiba - 29) e (x < kiba + 60)
if(kunai1_x >= (kiba_x - 29) && kunai1_x <= (kiba_x + 60))
{
//pontuacao -=10;
kiba_hp -= 10;
kunai1_y = -100;
kunai1_x = fts_numRand(250);
}
}
//kunai2
if(kunai2_y >= 290)
{
//so causara danos se kunai tiver (x > kiba - 29) e (x < kiba + 60)
if(kunai2_x >= (kiba_x - 29) && kunai2_x <= (kiba_x + 60))
{
//pontuacao -=10;
kiba_hp -= 10;
kunai2_y = -100;
kunai2_x = fts_numRand(250);
}
}
//kunai3
if(kunai3_y >= 290)
{
//so causara danos se kunai tiver (x > kiba - 29) e (x < kiba + 60)
if(kunai3_x >= (kiba_x - 29) && kunai3_x <= (kiba_x + 60))
{
//pontuacao -=10;
kiba_hp -= 10;
kunai3_y = -100;
kunai3_x = fts_numRand(250);
}
}
//kunai4
if(kunai4_y >= 290)
{
//so causara danos se kunai tiver (x > kiba - 29) e (x < kiba + 60)
if(kunai4_x >= (kiba_x - 29) && kunai4_x <= (kiba_x + 60))
{
//pontuacao -=10;
kiba_hp -= 10;
kunai4_y = -100;
kunai4_x = fts_numRand(250);
}
}
//kunai5
if(kunai5_y >= 290)
{
//so causara danos se kunai tiver (x > kiba - 29) e (x < kiba + 60)
if(kunai5_x >= (kiba_x - 29) && kunai5_x <= (kiba_x + 60))
{
//pontuacao -=10;
kiba_hp -= 10;
kunai5_y = -100;
kunai5_x = fts_numRand(250);
}
}
}
return 1;
}
//log de movimento para a construçao
int fts_kibaMoveLog()
{
//kiba(x,y)
//g_print("kiba: %dx%d (hp = %d - ponto = %d)\n",kiba_x,kiba_y,kiba_hp,pontuacao);
//kunai(x,y), kiba(x,y)
//g_print("%kunai(%dx%d), kiba(%dx%d)\n",kunai1_x,kunai1_y,kiba_x,kiba_y);
return 1;
}
src: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
baixar src e img: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
video fico meio bugado por causa do recordmydesktop =/