Jump to content
daniel6344

jogo do galo

Recommended Posts

daniel6344

boas pessoal

quem é que me quer ajudar a fazer o jogo do galo?

Share this post


Link to post
Share on other sites
solidsnake

duvido que alguém escreva o código por ti, por isso é melhor apresentares algum trabalho feito para o pessoal analisar e ajudar-te, mas ninguém vai fazer o trabalho por ti

Share this post


Link to post
Share on other sites
KTachyon
2.3) Não é permitida a criação de tópicos ou colocação de mensagens a pedir para que se façam trabalhos. Pedir ajuda é diferente de pedir trabalhos feitos. Em caso de incumprimento o staff pode bloquear o tópico ou mesmo apagar o tópico/mensagem.

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
MyPianoSucks

Isto é básico! Começa lá a trabalhar. Ontem fiz o jogo do galo em C++ com opção de multijogador por LAN em pouco mais de 1:30H. Bom trabalho. Posta o que já tens feito nós damos uma ajudinha :thumbsup:


Programming is a way of life!Linguagens: C++/C#/XNA

Share this post


Link to post
Share on other sites
daniel6344

o problema é que não sei por onde começar...

é que os outros trabalhos eram bem mais fáceis em relação a este. era do tipo fazer um programa para transformar os segundos e por no formato hh:mm:ss e o 2º para fazer um programa em que pedia ao utilizador para escolher um número entre 0 e 31 e depois perguntar se era por exemplo maior que 15 e a partir daí chegar ao número escolhido.

agora este nem sequer sei por onde começar

Share this post


Link to post
Share on other sites
KTachyon

Com um array de 9 casas (ou um multidimensional 3x3), com o char ' '.

Pedes um valor de 1-9 ao utilizador, marcas 'x' ou 'o' intercaladamente em cada pedido.

Fazes uma função que valida o estado de vitória ou derrota do jogo, que pode ser tão simples como fazeres todas as comparações possíveis de 3 casas consecutivas.

É difícil?


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
daniel6344

uma coisa assim?

import java.util.Scanner;
public class galo{
public static void main(String[]args){



String matriz[][]=new String [3][3];
for (int i=0; i<matriz.length; i++) {
     for (int j=0; j<matriz.length; j++) {

 System.out.print("Quem é o 1º jogador(x ou o)?");
Scanner keyboard = new Scanner (System.in);
String sinal = keyboard.nextLine();

é que n percebo o que tenho que fazer agora, e como faço para ficar com o formato(por exemplo)

___|____|___

___|__x_|___

  o  |    |

Share this post


Link to post
Share on other sites
KTachyon

Não penses em meter as barras, o output é bem legível sem qualquer separação:

oxo
oox
xox

xxo
oxo
xox


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
KTachyon

Então... é uma conjunção de espaços, barras verticais, traços e o sinal de somar com espaçamento:

Board:
x | o | x
---+---+---
x | o | x
---+---+---
o | x | o

Dito por outras palavras:

espaço, jogada, espaço, barra vertical, espaço, jogada, espaço, barra vertical, espaço, jogada

traço, traço, traço, mais, traço, traço, traço, mais, traço, traço, traço

espaço, jogada, espaço, barra vertical, espaço, jogada, espaço, barra vertical, espaço, jogada

traço, traço, traço, mais, traço, traço, traço, mais, traço, traço, traço

espaço, jogada, espaço, barra vertical, espaço, jogada, espaço, barra vertical, espaço, jogada


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
daniel6344

ok já começo a perceber

não percebo é como faço agora

import java.util.Scanner;
public class galo{
public static void main(String[]args){


   
   String matriz[][]=new String [3][3];
   for (int i=0; i<matriz.length; i++) {
     for (int j=0; j<matriz.length; j++) {
   
    System.out.print("Quem é o 1º jogador(x ou o)?");
   Scanner keyboard = new Scanner (System.in);
   String sinal = keyboard.nextLine();

como vou substituindo os arrays

Share this post


Link to post
Share on other sites
KTachyon

Se a tua dúvida é saber que casa corresponde a cada número, pensa da seguinte forma:

[resto da divisão][divisão inteira]

Mas isto para valores de 0 a 8 (visto que as matrizes são indexadas a zero - isto para um tabuleiro 3x3). Subtrais 1.

Lês o input do utilizador para uma variável, por exemplo, casa:

int tamanho_tabuleiro = 3;
int casa;

//... imagina que é o x a jogar

casa = casa - 1;

matriz[casa % tamanho_tabuleiro][casa / tamanho_tabuleiro] = 'x';


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
daniel6344

a duvida não era essa. é o que tenho que fazer import java.util.Scanner;

public class galo{
public static void main(String[]args){


   
   String matriz[][]=new String [3][3];
   for (int i=0; i<matriz.length; i++) {
     for (int j=0; j<matriz.length; j++) {
   
    System.out.print("Quem é o 1º jogador(x ou o)?");
   Scanner keyboard = new Scanner (System.in);
   String sinal = keyboard.nextLine();

neste momento tenho uma matriz bidimensional de 3x3, e  eu quero saber como é que faço para substituir por exemplo a casa nr 5 por X, e quando for o jogador O a jogar, a casa nr 5 já estar ocupada com um X

Share this post


Link to post
Share on other sites
KTachyon

Primeiro enches as casas com espaços. Depois, quando for feita a jogada, verificas se já lá está alguma coisa:

if (matriz[x][y] == ' ')

No teu caso, como estás a utilizar Strings em vez de chars:

if (matriz[x][y].equals(" "))


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
daniel6344

como preencho estes arrays bidimensionais com zeros?

import java.util.Scanner;
public class galo{
public static void main(String[]args){

String matriz[][]=new String [3][3];
matriz[0]=" "
matriz[1]=" "
matriz[2]=" "
matriz[3]=" "
matriz[4]=" "
matriz[5]=" "
matriz[6]=" "
matriz[7]=" "
matriz[8]=" "

for (int i=0; i<matriz.length; i++) {
     for (int j=0; j<matriz.length; j++) {

é assim?

Share this post


Link to post
Share on other sites
KTachyon

Se tens aí os dois for... podes utilizá-los para preencher a matriz com espaços.

for (int i=0; i<matriz.length; i++) {
    for (int j=0; j<matriz[0].length; j++) {
        matriz[i][j] = " ";
    }
}


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
daniel6344

import java.util.Scanner;
public class galo{
public static void main(String[]args){

boolean vitoria=false;


String matriz[][]=new String [3][3];
for (int i=0; i<matriz.length; i++) {
    for (int j=0; j<matriz[0].length; j++) {
        matriz[i][j] = " ";


while( vitoria) {
System.out.print("Qual é o 1º jogador(x ou o)?");
Scanner keyboard = new Scanner (System.in);
String jogador = keyboard.nextLine();

System.out.print("introduza o número da casa que quer jogar");
Scanner keyboard = new Scanner (System.in);
String casa = keyboard.nextLine();

casa = casa - 1;

matriz[casa % tamanho_tabuleiro][casa / tamanho_tabuleiro] = 'x';

}

    }
}

agora eu fiz um ciclo while para enquanto ninguém vencer continuar a pedir ao utilizador a sua jogada. mas como faço para ir alternando entre o jogador X e o O. já agora esta parte do código até aqui está bem?

Share this post


Link to post
Share on other sites
KTachyon

Tens que fechar o ciclo for antes de começar a colocar as jogadas, senão vais repetir os jogos e com lixo:

	for (int i=0; i<matriz.length; i++) {
	for (int j=0; j<matriz[0].length; j++) {
        		matriz[i][j] = " ";
	}
}

Só queres sair do ciclo quando aparecer a condição de vitória. Como inicializas vitoria a false, precisas de correr while (enquanto) vitoria == false, que é igual a !vitoria:

	while(!vitoria) {

Tens que pedir o 1º jogador antes de entrares no ciclo while, senão passas o jogo todo a pedir o 1º jogador.

Quando marcas na matriz, se tens os jogadores como 'x' ou 'o', é mais fácil definires a casa como o jogador actual, que estará registado na variável jogador:

matriz[casa % tamanho_tabuleiro][casa / tamanho_tabuleiro] = jogador;

Para variares o jogador, podes fazer uma simples comparação no final do ciclo:

if (jogador.equals("x")) {
jogador = "o";
}
else {
jogador = "x";
}

Outros problemas:

Não podes declarar 2x a variável keyboard, a variável casa tem que ser um inteiro, tens que validar o input do utilizador e tens que declarar a variável tamanho_tabuleiro.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.