Power Duckets
Olá, caro Visitante!

Nosso fórum está sendo modificado aos poucos para você ter a possibilidade de interagir mais em diversos assuntos. Quer se dar bem no enem, ter ótimas dicas em redação ou até mesmo procurar e publicar algo no mundo geek e gamer? Cadastre-se e faça parte dessa mistura.

Participe do fórum, é rápido e fácil

Power Duckets
Olá, caro Visitante!

Nosso fórum está sendo modificado aos poucos para você ter a possibilidade de interagir mais em diversos assuntos. Quer se dar bem no enem, ter ótimas dicas em redação ou até mesmo procurar e publicar algo no mundo geek e gamer? Cadastre-se e faça parte dessa mistura.
Power Duckets
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
hfts315
hfts315
Membro
Membro
Localização Localização : sub-mundo da informatica

[source] fts game kiba  Empty [source] fts game kiba

Sex Jul 26, 2013 9:50 am
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

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: github
baixar src e img: baixar

video fico meio bugado por causa do recordmydesktop =/
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos