ElFurriel Posted May 25, 2006 at 10:34 AM Report #29436 Posted May 25, 2006 at 10:34 AM Boas! eu sou novato nestas andanças, e tenho de fazer um projecto para uma cadeira da faculdade acerca do jogo de minas do windows. ou melhor tenho de fazer em C++ o jogo. ? Eu gostava que me ajudassem numa coisa. eu para fazer a janela estou a pensar utilizar uma tabela [10][10] por exemplo, mas depois não sei o que posso utilizar para por as minas aleatóriamente. eu sei que existe a função Rand, mas não sei aplica-la... será que alguem me pode dar umas luzes, isto é mostrar-me como se faz para criar aleatóriamente um numero fixo de minas, neste caso 8? Atenciosamente.... ElFurriel
saramgsilva Posted May 27, 2006 at 01:33 AM Report #29668 Posted May 27, 2006 at 01:33 AM tipo se fosse 3 X 3 e tivesse a matriz minas[3][3] - inicias com algo... - depois queres colocar objectos, fazes algo do genero.... crias a função para gerar os numeros aleatorios: int aleatorio(){ int n; n=rand()%3; // vai gerar um numero que e o resto da divisao por 3 ( porque quero valores : 0, 1, 2) return n; // devolve o numero gerado }; e depois para gerar a atribuição aleatoria da mina.... algo deste genero :dontgetit: mudou=0;// para entrar no ciclo e sinal que ainda nao mudou o valor da matriz.... inic_Random(); // iniciar a semente while( mudou!=1 && jogadas<10) { // vai obtendo jogadas ate encontrar uma possivel ou seja, vai escolher os indices da matriz de modo que estejam vazios.... i=aleatorio(); j=aleatorio(); if( ocupado(i,j)==0 ) // ocupado(i,j) é 1 funcao para ver se a matriz no indice indicado esta vazio.... { minas[i][j]=objecto; // vai colocar na posicao (i,j) o objecto que quero... jogadas++; // se conseguiu fazer a tal jogada, foi efectuada +1 jogada mudou=1; // conseguiu obter uma jogada possivel } } espero que tenhas percebido e te tenha ajudado.... tentei adpatar uma parte do codigo do meu jogo do galo ao que perguntavas...e espero que ajude.... 😁 www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5
TheDark Posted May 27, 2006 at 03:04 AM Report #29672 Posted May 27, 2006 at 03:04 AM Tenta compreender este código. Se tiveres dúvidas respondo amanhã, que estou a morrer de sono :sleep1: #include <algorithm> //rand(), srand() #include <time.h> //time() #include <memory.h> //memset() #include <iostream> //cout #define MAX_X 10 //numero maximo de colunas #define MAX_Y 10 //numero maximo de linhas #define NUM_MINES 8 //numero de minas a gerar char matriz[MAX_Y][MAX_X+1]; //matriz bidimiensional com as dimensoes anteriores. //o MAX_X+1 e so para facilitar a escrita no ecra do mapa de minas void main() { srand((unsigned)time(NULL)); //inicializar a funcao rand() memset(matriz, '.', (MAX_X+1)*MAX_Y); //inicializar o conteudo da matriz com pontos //para facilitar a visualizacao do mapa de minas for(int i=0; i<MAX_Y; ++i) //colocar o ultimo elemento de cada linha a 0 matriz[i][MAX_X]=0; //de novo para facilitar a escrita no ecra int x, y; //coordenadas da matriz for (int i=0; i<NUM_MINES; ++i) { //plantar as minas do { x=rand() % MAX_X; //obter coordenadas aleatorias y=rand() % MAX_Y; } while(matriz[y][x] != '.'); //enquanto nao encontrar uma posicao vazia matriz[y][x]='M'; //quando encontra uma posicao vazia, coloca uma mina } for(int i=0; i<MAX_Y; ++i) //mostrar o mapa de minas no cout std::cout << matriz[i] << '\n'; } Desaparecido.
ElFurriel Posted May 29, 2006 at 08:29 AM Author Report #29918 Posted May 29, 2006 at 08:29 AM Muito obrigado pela ajuda 😁... tofas o teu está um pouco confuso para mim, mas o TheDark já está mais proximo da minha maneira de trabalhar... ? mesmo assim há uma coisa que não entendo: memset(matriz, '.', (MAX_X+1)*MAX_Y); //inicializar o conteudo da matriz com pontos //para facilitar a visualizacao do mapa de minas for(int i=0; i<MAX_Y; ++i) //colocar o ultimo elemento de cada linha a 0 matriz[i][MAX_X]=0; //de novo para facilitar a escrita no ecra nunca trabalhei com o memset, e não consigo enter muito bem qual o seu trabalho. ?, e a parte de colocaros pontos... também não entendo o raciocinio, será que me podias ajudar? muito obrigado pelo tempo dispendido... Obrigado.... ElFurriel PS: Usa a ferramenta GeSHi para postares o código, assim o teu código fica mais legível. Ass. bk@ero 😉
Elektron Posted May 29, 2006 at 10:34 AM Report #29933 Posted May 29, 2006 at 10:34 AM Antes de mais ola a todos. Este é o meu primeiro post. 😉😛 memset serve para prencher array com um valor, neste caso os pontos. Os pontos estão para te mostrar a superficie de jogo. O ultimo elemento a zero serve para sinalizar o fim de string.
TheDark Posted May 29, 2006 at 12:53 PM Report #29945 Posted May 29, 2006 at 12:53 PM Antes de mais ola a todos. Este é o meu primeiro post. 😉😛 memset serve para prencher array com um valor, neste caso os pontos. Os pontos estão para te mostrar a superficie de jogo. O ultimo elemento a zero serve para sinalizar o fim de string. Exactamente 😄 E benvindo! Tanto os pontos como o 0 no final de cada linha são só para facilitar os couts mais abaixo: os pontos para que o mapa se torne mais legível, e os 0s para o cout saber onde parar. Desaparecido.
ElFurriel Posted June 8, 2006 at 05:42 PM Author Report #31844 Posted June 8, 2006 at 05:42 PM Boas, cá estou de volta, tenho andado a trabalhar no ambiente gráfico do programa em openGL ?, e n tive muito tempo para ver esta parte... tb já ficou resolvida mas agora n sei como fazer para acrescentar a contagem das minas á minha função, se utilizo um ciclo for ou if, é preciso muitas linhas de código e sinceramente não me está a dar, o computador até já me devolve smiles 😉 em vez de numeros!!!!!~ se me pudessem dar uma maozinha... obrigado e desculpem pelo incómodo...
TheDark Posted June 8, 2006 at 05:52 PM Report #31848 Posted June 8, 2006 at 05:52 PM A contagem das minas? Porque não usas uma variável global que afectas com o número de minas quando inicias o jogo, e decrementas à medida que vão sendo encontradas minas? Desaparecido.
ElFurriel Posted June 10, 2006 at 10:54 AM Author Report #32241 Posted June 10, 2006 at 10:54 AM Eu não me fiz entender.... 😉 eu consig colocar as minas, e etilizo um contador para saber quantas lá estão, o meu problemas é mesmo conseguir contabilizar as que estão nas proximidades, ou seja, como é quer faço para que as casas á volta da mina teren a quantidade de minas na proximidade. já tentei fazer com if e for, mas deu para lá de 50 linhas de código e não funcionou como eu esperava. vou tentar encontrar uma solução mas se fosse possivel darem-me uma mãozinha e darem uma ideia ajudava... Atenciosamente... ElFurriel
TheDark Posted June 10, 2006 at 04:24 PM Report #32282 Posted June 10, 2006 at 04:24 PM Ah ok. Então, segundo o que disseste no post anterior, tens neste momento um quadro com 10x10. Uma ideia do que terás que fazer é: int avolta=0; for (int yy=-1; yy<=1; ++yy) { //percorre a linha acima, a linha da casa escolhida, e a linha abaixo if (y+yy < 0 || y+yy > 9) continue; //se a linha estiver fora do quadro, passa para a proxima linha for (int xx=-1; xx<=1; ++xx) { if (x+xx < 0 || x + xx > 9) continue; //a casa esta fora do quadro, passa a proxima coluna if (linhas[y+yy][x+xx]) == 'M') //se existir mina na casa verificada, incrementa o contador de minas existentes a volta ++avolta; } } O código anterior supõe que: x e y contêm as coordenadas da casa escolhida; linhas é um array de 2 dimensões que contém o quadro de jogo; uma mina no array linhas é representada pelo caracter 'M' Penso que é tudo... EDIT: isto não faz com que o array fique com o numero de minas existentes à volta de cada casa. O que faz é dada uma casa, conta o número de minas à sua volta. Desaparecido.
dawn2dusk Posted July 12, 2006 at 03:54 PM Report #37816 Posted July 12, 2006 at 03:54 PM como é k com o rato posso ter a certeza que ao clicar estou clikar em cima da "celula[ i ][ j ] " ? props
TheDark Posted July 13, 2006 at 12:47 AM Report #37939 Posted July 13, 2006 at 12:47 AM Tens várias maneiras, dependendo a complexidade do método que estás a utilizar para desenhar as casas no ecrã. Estás a usar botões ou a desenhar? Desaparecido.
dawn2dusk Posted July 16, 2006 at 02:34 AM Report #38467 Posted July 16, 2006 at 02:34 AM a desenhar, ainda nao percebi pk os desenhos das casas nao estão associados às coordenadas na matriz... tenho a matriz desenhada num canto do ecra, mas com o rato a passar pelo resto nao desenhado às vezes piso minas ... 😄
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now