Translate to English Translate to Spanish Translate to French Translate to German Google-Translate-Portuguese to Italian Translate to Russian Translate to Chinese Translate to Japanese

Rating: 2.8/5 (92 votos)



ONLINE
1





Partilhe esta Página





Total de visitas: 5669
criar-jogo-parte-3
criar-jogo-parte-3

Olá pessoal ja estamos na terceira parte do nosso tutorial e acho que muitos ja estao a se acostumar com o Android. Hoje vamos dar um grande avanço no nosso jogo, vamos ver como chamar uma outra activity e criar a nossa base de dados com algums perguntas. Preparados!!! Vamos lá.... programando com Rosário....

Primerio o que vamos fazer é criar a nova activity que logo em seguida vamos chamar, para isso vamos na raiz principal do nosso projecto e vamos abrir e na pasta src onde estao todos os arquivos java, vamos criar um novo arquivo do tipo AndroidActivity, e ele vai criar o xml e o java de uma so vez. QUE BOM!!!

 

 

 

 

 

 

Agora que ja temos criada a nossa activity novojogo e o seu ficheiro java correspondente, vamos chamar ela a partir do botao novo jogo (no arquivo java) e o codigo para fazer a instancia para chamar o formulario é o seguinte:

 

BtnNovo.setOnClickListener(new OnClickListener() {

           

            public void onClick(View v) {

                  // codigo para chamar outra activity ou formulario (JogarActivity)

                  Intent i = new Intent(PrincipalActivity.this, NovoJogoActivity.class);

                  startActivity(i);

            }

      });

O que está acontecendo aqui??????

Uma Intent é usada para quando queremos chamar uma outra activity, neste caso o primeiro argumento do costructor que passamos, é a class em que nos encontramos, e o segundo, é a class que chamamos(que se encarregara de chamar a activity), e logo chamamos o método que inicia a activity e passamos a activity que queremos executar: startActivity(i);

 

 

Aqui temos como está o nosso código até agora...

E pode executar no emulador ou no telefone pra ver como está a nossa App, o arquivo APK está dentro da pasta bin do nosso projecto.

Para ficar mais claro, vou colar o código abaixo:

 

package com.example.quemsabesobreti;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.View;

import android.view.View.OnClickListener;

 

public class PrincipalActivity extends Activity {

   //declaracao das variaves para fazer referecina aos botões da activity_principal.xml

      View BtnNovo, BtnSair, BtnAcerca, BtnDefinicoes;

     

      @Override

      protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_principal);

           

            BtnNovo = findViewById(R.id.BtnNovo);

            BtnAcerca = findViewById(R.id.BtnAcerca);

            BtnSair = findViewById(R.id.BtnSair);

            BtnDefinicoes = findViewById(R.id.BtnDefinicoes);

           

            //botao sair do jogo:

            BtnSair.setOnClickListener(new OnClickListener() {

                 

                  public void onClick(View v) {

                        finish();

                       

                  }

            });

            /* Button Novo Jogo */

         BtnNovo.setOnClickListener(new OnClickListener() {

           

            public void onClick(View v) {

                  // codigo para chamar outra activity ou formulario (JogarActivity)

                  Intent i = new Intent(PrincipalActivity.this, NovoJogoActivity.class);

                  startActivity(i);

            }

      });

 

           

      }

 

     

 

}

 

 

Agora vamos abrir o codigo Xml do nosso Layout novoJogo.Xml e desenhar como será o nossa activity.

Ele estará formado de 4 botoes onde aparecerao as respostas, 3 textView, uma para escrever Pergunta, uma para aparecer a pontuacao, e outra para guardar a resposta certa.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"

   xmlns:tools="https://schemas.android.com/tools"

   android:layout_width="match_parent"

   android:layout_height="match_parent"

   android:background="@android:color/holo_blue_light"

   android:gravity="center"

   android:orientation="vertical"

   android:paddingBottom="@dimen/activity_vertical_margin"

   android:paddingLeft="@dimen/activity_horizontal_margin"

   android:paddingRight="@dimen/activity_horizontal_margin"

   android:paddingTop="@dimen/activity_vertical_margin"

   tools:ignore="HardcodedText,NewApi" >

 

   <TableRow

       android:id="@+id/TableRow01"

       android:layout_width="match_parent"

       android:layout_height="34dp"

       android:gravity="left" >

   </TableRow>

 

   <ScrollView

       android:id="@+id/tableRow1"

       android:layout_width="match_parent"

       android:layout_height="63dp"

       android:baselineAligned="true"

       android:gravity="left" >

 

       <TextView

           android:id="@+id/TxtXcertaResposta"

           android:layout_width="wrap_content"

           android:layout_height="wrap_content"

           android:text="Pregunta"

           android:textSize="20dp " />

   </ScrollView>

 

   <ScrollView

       android:layout_width="wrap_content"

       android:layout_height="wrap_content" >

 

       <LinearLayout

           android:layout_width="263dp"

           android:layout_height="wrap_content"

           android:orientation="vertical" >

 

           <Button

               android:id="@+id/BtnOp1"

               android:layout_width="match_parent"

               android:layout_height="wrap_content" />

 

           <Button

               android:id="@+id/BtnOp2"

               android:layout_width="match_parent"

               android:layout_height="wrap_content" />

 

           <Button

               android:id="@+id/BtnOp3"

               android:layout_width="match_parent"

               android:layout_height="wrap_content" />

 

           <Button

               android:id="@+id/BtnOp4"

               android:layout_width="match_parent"

               android:layout_height="wrap_content" />

       </LinearLayout>

   </ScrollView>

 

   <RelativeLayout

       android:layout_width="match_parent"

       android:layout_height="match_parent"

       android:gravity="bottom" >

 

       <TextView

           android:id="@+id/tvPontos"

           android:layout_width="wrap_content"

           android:layout_height="wrap_content"

           android:textAppearance="?android:attr/textAppearanceLarge" />

 

       <TextView

           android:id="@+id/txtcerto"

           android:layout_width="fill_parent"

           android:layout_height="wrap_content"

           android:layout_alignBaseline="@+id/tvPontos"

           android:layout_alignBottom="@+id/tvPontos"

           android:layout_alignParentRight="true"

           android:visibility="invisible" />

   </RelativeLayout>

 

</LinearLayout>

 

 

 

Agora ja temos o a nossa activity com os 4 botoes onde vao aparecer as pergunas.

E ja podemos clicar no botao novo jogo, e ja vai abrir a activity para jogar.

Agora vamos trabalhar maior aprte do código na nossa activity novoJogo.java.

Como ja dissemos nos tutoriais passados, todo o código nos escrevemos dentro do método Oncreate().

Mas vamos fazer os métodos fora do método Oncreate e chamar dentro dele.

Vamos ver um pouco de teoria para entender a lógica do jogo.

Quando o Jogador clicar na resposta certa, irá chamar uma outra activity a dizer :Resposta certa, ou errada se for o caso. E la nesta activity terá um botao que permitira voltar ao jogo. E pra isso funcionar bem, vamos criar tudo em forma de métodos.

O primeiro será um métod que vamos dar o nome de:

CarregarTelaJogo();

A nossa class estará da seguinte forma:

public class NovoJogoActivity extends Activity {

 

      @Override

      protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_novo_jogo);

            CarregarTelaJogo();

      }

     

      public void CarregarTelaJogo() {

           

      }

 

 

}

Aí somente criamos o método e chamamos dentro do método Oncreate()

Mas ainda nao escrevemos nada dentro do método. Vamos criar outro método e chamar dentro do método CarregarTelaJogo() e vamos dar o nome de:

      CarregarComponentes();

 

public void CarregarComponentes() {

           

                  BtnOp1 = (Button) findViewById(R.id.BtnOp1);

                  BtnOp2 = (Button) findViewById(R.id.BtnOp2);

                  BtnOp3 = (Button) findViewById(R.id.BtnOp3);

                  BtnOp4 = (Button) findViewById(R.id.BtnOp4);

                  TxtCerta = (TextView) findViewById(R.id.txtcerto);

                  TxtPergunta = (TextView)                                    findViewById(R.id.TxtXcertaResposta);

                  tvPontucao = (TextView) findViewById(R.id.tvPontos);

           

            }

 

Até ai ligamos as variaveis como os botoes que estao no formulario, mas falata declarar as variaveis.

Vamos declarar la no inicio da nossa class

 

      private Button BtnOp1, BtnOp2, BtnOp3, BtnOp4;

   private TextView TxtPergunta, TxtCerta, tvPontucao;

 

 

CRICAO DA BASE DE DADOS

 

 

Vamos criar um metodo que nos perimite criar a base de dados com os campos necessarios para o nosso jogo, ela vai ser bem simples vejamos:

//metodo inserir dados:

      public void IserirDados(){

            // Criar TblCadastro

            data.beginTransaction();

            try {

                  String sql = "CREATE TABLE IF NOT EXISTS TblCadastro"

                             + "(id integer, pergunta Text,resposta1 Text ,resposta2 Text, resposta3 Text,resposta4 Text ,respostaCerta Text, pontuacao integer,categoria Text,nivel Integer);";

                  data.execSQL(sql);

                  // hace un commit nos cambios feitos

                  data.setTransactionSuccessful();

                  // Toast.makeText(this, "Table foi criada", 1).show();

            } catch (SQLException e1) {

                  Toast.makeText(this, e1.getMessage(), 1).show();

            } finally {

                  // finalizando a transaction processo

                  data.endTransaction();

            }

            // Popular a Tabela: tblCadastro

            data.beginTransaction();

            try {

                  // insert Lineas

                  //

                  //12 //////////////////

                  data.execSQL("insert Into TblCadastro(pergunta, resposta1,resposta2,resposta3,resposta4,respostaCerta,pontuacao)"

                             + " values ('Quem criou o computador Z3?','Konrad Zuse','Bill Gates','Linus Torvalds','Steve Jobs','Konrad Zuse','100');");

                  //13 //////////////////

                  data.setTransactionSuccessful();

                  // Toast.makeText(this, " 1 registros foram Inseridos", 1).show();

            } catch (SQLiteException e2) {

                  // report problem

                  Toast.makeText(this, e2.getMessage(), 1).show();

            } finally {

                  data.endTransaction();

            }

      }

 

Outro método

public void ExibirErro(String titulo, String texto) {

            AlertDialog.Builder mensagem = new AlertDialog.Builder(

                        NovoJogoActivity.this);

            mensagem.setTitle(titulo);

            mensagem.setMessage(texto);

            mensagem.setNeutralButton("OK", null);

            mensagem.show();

      }

public void OpenOrCreateDatabase() {

            try {

                  data = openOrCreateDatabase("dbJogo", MODE_PRIVATE, null);

            } catch (Exception e) {

                  ExibirErro("Erro", "Erro ao criar o Banco de Dados");

            }

      }

 

E vamos chamar o método OpenOrCreateDatabase no metodo Oncreate() antes do metodo CarregarTelaJogo();

Abaixo da chamada do metodo OpenOrCreate dentro do metodo CarregarTelajogo()

Vamos chamar o método GetCursor();

Agora vamos ver o que tem no corpo deste metodo:

private void GetCursor() {

            try {

                 

                  // TxtCerta.append(" ");

                  // obtain uma lista com os campos abaixo

                  String[] columns = { "id", "pergunta", "resposta1", "resposta2",

                             "resposta3", "resposta4", "respostaCerta", "pontuacao" };

                  c = data.query("tblCadastro", columns, null, null, null, null, null);

                  if (c.moveToFirst()) {

                        do {

 

                             // Toast.makeText(this, "Total6: " + Total, 1).show();

                             idCol = c.getColumnIndex("id");

                             pergunta = c.getColumnIndex("pergunta");

                             resposta1 = c.getColumnIndex("resposta1");

                             resposta2 = c.getColumnIndex("resposta2");

                             resposta3 = c.getColumnIndex("resposta3");

                             resposta4 = c.getColumnIndex("resposta4");

                             respostacerta = c.getColumnIndex("respostaCerta");

 

                             columns[0] = Integer.toString((c.getInt(idCol)));

                             columns[1] = c.getString(pergunta);

 

                             columns[2] = c.getString(resposta1);

                             columns[3] = c.getString(resposta2);

                             columns[4] = c.getString(resposta3);

                             columns[5] = c.getString(resposta4);

                             columns[6] = c.getString(respostacerta);

                             columns[7] = c.getString(pontucao);

 

                             BtnOp1.setText(columns[2]);

                             BtnOp2.setText(columns[3]);

                             BtnOp3.setText(columns[4]);

                             BtnOp4.setText(columns[5]);

                                                           TxtCerta.setText(columns[6]);

                             TxtPergunta.setText(columns[1]);

                        } while (c.moveToNext());

 

                  }

            } catch (Exception e) {

                  Log.e("Cursor", e.getMessage());

                  Toast.makeText(this, "ter: " + e.getMessage(), 1).show();

            }

 

      }

 

Bom até agora ja demos um grande avaço, e ja esta pronta a apresentar as perguntas do nosso jogo, para ver como ficou o código completo visite la no www.github.com­/abderval

 

 

 

ATÉ Agora temos o nsso jogo mostrando as perguntas, no proximo tutorial vamos ver como verificar se a resposta est+a certa ou nao, e colocar a pontuacao. Ha código que nao meti aqui, mas est+a tudo completo no github.com/abderval, alguma dúvida, pode enviar um correo para rosario@unica.cu

 

Nos vemos no próximo tutorial

 

Eclesiastes 3:14

Eu sei que tudo quanto Deus fas durará eternamente; nada se lhe pode acrescentar, e nada se lhe pode tirar, e isso Deus faz para que os homens temam diante Dele.