GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21


[Dúvida] Sistema de movimento de peças no xadrez

+6
Mário Valney
theguitarmester
saim
fredcobain
luiz_eldorado
RafaleCP
10 participantes

Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por RafaleCP Sex 14 Jun 2013, 13:38

Olá pessoal, trago aqui uma dúvida que provavelmente poucos ou até ninguém havia peguntado aqui... Bom, já que o GameMaker 8.1 disponibiliza uma série de "sprites" para o jogador utilizar resolvi dar uma olhada. Daí, achei sprites de peças de xadrez (ou chess, como quiserem chamar). Mas minha pergunta é: Como fazer um sistema de peças de xadrez (pra damas isso também vale). Isto é, aquela questão de quando o jogador clicar em uma peça, disponibilizar "x" movimentos (analisando se não há nenhuma peça aliada bloqueando o caminho, etc)... Se vocês me conseguirem o link de algum tutorial ou fizerem um ficarei agradecido...
RafaleCP
RafaleCP

Data de inscrição : 16/02/2013
Reputação : 0
Número de Mensagens : 42
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por luiz_eldorado Sex 14 Jun 2013, 14:39

http://gmc.yoyogames.com/index.php?showtopic=510600

Foi o que achei. Jogos de xadrez são muito complicados, na verdade, até mesmo damas já é complicado. Mas a maior parte da dificuldade é fazer a IA.

Até mais
luiz_eldorado
luiz_eldorado

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 30/07/2011
Reputação : 47
Número de Mensagens : 928
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://luizpontes.tk/

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por fredcobain Sex 14 Jun 2013, 15:26

Uma grupo de funções que vai te ajudar com certeza são as funções que tratam SNAP.

Ex:

Código:
with (obj_Pieces)
    {
    if !place_snapped(32, 32)
       {
       move_snap(32, 32);
       }
    }
fredcobain
fredcobain

Games Ranking : Sem avaliações

Data de inscrição : 14/04/2011
Reputação : 163
Número de Mensagens : 692
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 0 Tutoriais x 3 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por saim Sex 14 Jun 2013, 16:53

Cada peça, um sistema diferente. Não é pros fracos. Sem chegar perto de IA (isso é outro nível) ainda não é pros fracos. Mas vamos lá, um pouco de direcionamento, eu consigo dar.

Primeira coisa: use um esquema de grids pra determinar a posição de cada peça. Não tente usar place_meeting ou speed ou coisa do tipo. Numa array 2D, cada casa tem uma peça (ou peça nenhuma). Como você vai usar índices pra indicar qual peça está em qual casa, sugiro dar o valor de "-1" pras casas vazias. Só pra garantir que estão vazias.

Aí vem as peças. Como são apenas 64 casas, um par de loops não vai consumir muita memória. Pra maioria das casas, a condição pra um movimento válido é bem simples.

Torres e bispos são os mais fáceis:
Bispo:
if (casa . coluna - bispo . coluna == casa . linha - bispo . linha){
//válido
}
Torre:
if (casa . coluna == torre . coluna or casa . linha == torre . linha){
//válido
}
(sem contar que pode ter alguma peça entre a casa e o bicho, mas isso é outra história)

Por aí vai. Daí pra frente, dá uma piorada. Estou com pressa, mas o tópico me interessa (pra fazer um jogo BASEADO no xadrez).
Se conseguir fazer as condições do cavalo, me conte como.
Sério.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por theguitarmester Sex 14 Jun 2013, 18:13

Me interesso com esse tópico também, acho que tentei criar só uma vez um projeto de dama, e meu nível de programação era bem menor. após isso, não tentei mais, por pensar que já existem projetos exatamente como eu iria criar, uma 'simples' dama, mas agora, faz tempo que estou sem fazer nada, talvez, quem sabe, uma hora posso tentar fazer algo.


Uma dica(parte teórica da IA), é o sistema de andar, de um jeito, que d~e para fazer previsões, dentro dos ifs, isto é calcular os movimentos a frente,


if (casa . coluna - bispo . coluna == casa . linha - bispo . linha){...
Não entendi.
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2211
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por Mário Valney Sex 14 Jun 2013, 18:25

saim escreveu:
Se conseguir fazer as condições do cavalo, me conte como.
Sério.

Uma coisa legal do cavalo: se ele está numa casa preta, obrigatoriamente, no próximo movimento ele irá para uma casa branca e vice-versa.
E o movimento se dá assim, basicamente:

• (x,y) = posição atual
• (u,v) = nova posição
ƒ 1: (x+2,y+1)
ƒ 2: (x+1,y+2)
ƒ 3: (x-1,y+2)
ƒ 4: (x-2,y+1)
ƒ 5: (x-2,y-1)
ƒ 6: (x-1,y-2)
ƒ 7: (x+1,y-2)
ƒ 8: (x+2,y-1)
[Dúvida] Sistema de movimento de peças no xadrez Ckg

Seria um loop de 8 testes só... não mata Very Happy
Ai dependendo do seu sistema, atribui uma variável que indica se a casa é "aceitável" ou então troca o sprite (tipo quando você clica na peça e brilha as casas nas quais pode jogar, entende?).
Mário Valney
Mário Valney

Games Ranking : Nota A

Notas recebidas : A
Data de inscrição : 16/11/2009
Reputação : 0
Número de Mensagens : 203
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://valney.dev

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por Igor KinGamer Sáb 15 Jun 2013, 09:32

O que o saim colocou, "if (casa . coluna - bispo . coluna == casa . linha - bispo . linha)", é um teste para saber, digamos, se a distância horizontal do bispo até a casa é igual à distância vertical, já que ele só anda nas diagonais. O correto, na verdade, seria "if (abs(casa.coluna - bispo.coluna) == abs(casa.linha - bispo.linha))", isto é, pegar a diferença em módulo, pois ela pode ser, por exemplo, negativa horizontalmente e positiva verticalmente, e ainda assim é válido. Ele escreveu como se "casa" fosse um objeto. Na verdade, no lugar "casa.coluna", iria a variável usada no for que varreria todas as colunas.

Entretanto, me veio agora uma ideia de como fazer isso, que é como eu faria.

Do jeito que o saim falou, você precisaria de dois loops for para varrer o campo todo (ou um só, ajustando os índices com div e mod, mas isso não vem ao caso) e testar casa por casa se ela é válida para a peça. Mas aí tem a dificuldade de que, se houver alguma peça no meio do caminho, a casa já não é válida. Então, seria necessária alguma outra série de testes para descobrir isso, para cada casa supostamente válida... Haja testes.

Eu faria assim: No bispo, por exemplo, eu "caminharia" nas quatro diagonais (uma de cada vez) (ou melhor, nas duas diagonais, nos quatro sentidos, pra nenhum matemático ou físico que esteja por perto me condenar Laughing) validando cada casa, até sair do campo ou chegar numa peça (uma dessas duas condições vai ter que acontecer alguma hora).
Por exemplo, começaria indo para cima e para a esquerda, para isso, repetindo num loop os passos:
  • Diminui em um o índice horizontal;
  • Diminui em um o índice vertical;
  • Verifica se um dos dois ficou menor que zero (está fora do campo):
  • - Se sim, termina o loop;
  • Verifica se há alguma peça na casa representada pelos novos índices (isto obrigatoriamente após verificar se não está fora do campo; caso contrário, você tentaria acessar a array com índices fora dos limites);
  • - Se sim, verifica que peça é, faz o que for devido e termina o loop;
  • Fim da iteração, isto é, se chegar aqui, valida a casa e vai para a próxima iteração.
Depois, semelhantemente, um loop para cima e para a direita, um para baixo e para a esquerda e, por fim, um para baixo e para a direita.

A mesma coisa para a torre e a rainha (únicas outras peças que se movem livremente), só que, obviamente, ajustando os loops de acordo com a peça.


Eu comecei a ter uma ideia de um jogo baseado no xadrez, mas depois pareceu que não daria muito certo... Com o incentivo deste tópico, vou voltar a pensar naquela ideia, hehe.
Igor KinGamer
Igor KinGamer

Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por saim Seg 17 Jun 2013, 00:27

Mário Valney e Igor KinGamer, vocês estão corretos. É mais prático fazer as verificações casa-a-casa, principalmente por causa das casas ocupadas na linha de ação (que não é o caso do cavalo, porque ele pode pular essas peças, mas vocês me entenderam).
Aquela metodologia que eu estava usando me deu dor-de-cabeça com outra peça que, teoricamente, é simples: o rei! A condição que eu estava tentando usar pra validar o movimento era que a soma das distâncias entre a casa verificada e a casa do rei fosse 1. Mas, epa, usando linhas e colunas isso exclui as diagonais. Então 2! Não, peraí... Sacou, né? Caso-a-caso, isso fica resolvido.


Meu problema com o cavalo é que é realmente caso.a.caso. Não tem loop, não tem lógica, não tem regra. Tem 8 movimentos, tem que checar um a um. Sorte que são só 8.
Como o rei. Mas o rei, dá pra jogar num loop.


Desafio pras horas de ócio: escrever os scripts (um pra cada peça) que definam os valores da array 2D 8x8 (que representa o tabuleiro de xadrez) como "válido" ou "inválido", considerando que casas com peças inimigas podem ser consideradas válidas. A situação de cada casa é global (você define como isso vai aparecer no seu script). Eu vou dar um valor pra cada casa com peça (casas com peões valem "1", com torres, "2" e vazias, "0"), mas você faz como quiser - lembrando que scripts só podem aceitar 16 argumentos.


Bônus se o tabuleiro puder ter dimensões customizadas. Como no jogo que eu estou pensando.
Se um dia o meu jogo chegar a sair do papel, tem boas chances do seu script estar nele. Mas não se apresse, o jogo nem entrou no papel ainda.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por Kabeção Seg 17 Jun 2013, 13:58

Não acho que a base seja algo difícil de se fazer.
Eu esqueceria objetos separados e usaria uma ds_grid e nas células -1 se não tiver peças ou uma id se houver.

Usando constantes próprias.
-1 = vazio
p_rei = 0;
p_rainha = 1;
p_bispo = 2;
p_torre = 3;
...

Para saber a cor da peça da pra criar outra grid com:
-1 = vazio
t_branco = 0;
t_preto = 1;

Depois disso com um switch você processa as regras quando o jogador arrastar e soltar a peça:
Código:
mx = ...; // posição atual da peça
my = ...; // posição atual da peça

mx2 = ...; // nova posição da peça
my2 = ...; // nova posição da peça

ps = ...; // tipo da peça
cs = ...; // cor da peça

if ps != -1 {
    if mouse_check_button_released(mb_left) {

        mx2 = floor(mouse_x/t_w);
        my2 = floor(mouse_y/t_w);
       
        // Processar regras de movimento
        switch (ps) {
            case p_peao:
                if cs = t_preto {
                    if mx2 = mx && my2 = my+1 && ds_grid_get(tab,mx,my+1) = -1 {
                        ds_grid_set(tab,mx,my,-1);
                        ds_grid_set(cor,mx,my,-1);
                       
                        ds_grid_set(tab,mx2,my2,ps);
                        ds_grid_set(cor,mx2,my2,cs);
                    }
                } else {
                    if mx2 = mx && my2 = my-1 && ds_grid_get(tab,mx,my-1) = -1 {
                        ds_grid_set(tab,mx,my,-1);
                        ds_grid_set(cor,mx,my,-1);
                       
                        ds_grid_set(tab,mx2,my2,ps);
                        ds_grid_set(cor,mx2,my2,cs);
                    }
                }
            break;
            
            case p_torre:
                if mx = mx2 || my = my2 {
                    // Como cada peça tem uma id a partir de 0,
                    // se retornar -1, não há outras peças no caminho.
                    // Aqui eu uso sign(m2-m) para a própria peça não ser considerada

                    var v;
                    v = (ds_grid_get_max(tab,mx+sign(mx2-mx),my+sign(my2-my),mx2,my2));
                    
                    if v = -1 {
                        ds_grid_set(tab,mx,my,-1);
                        ds_grid_set(cor,mx,my,-1);
                        
                        ds_grid_set(tab,mx2,my2,ps);
                        ds_grid_set(cor,mx2,my2,cs);
                    }
                }
            break;

            case p_bispo:
                // Um movimento na diagonal é um quadrado, ou seja,
                // altura e largura são iguais entre x1,y1 x2,y2.
                // Por isso se mx2-mx e my2-my são iguais, eu tenho um movimento
                // perfeito na diagonal.

                var w,h;
                w = mx2-mx;
                h = my2-my;
                
                // Usando abs e sign na fórmula eu deixo a checagem dinâmica
                // e funcionará não importando a direção da diagonal
                if (abs(w) = abs(h)) {
                    var n,v;
                    v = -1;
                    
                    // Imitar efeito de ds_grid_get_max na diagonal
                    for (n = 1; n < abs(w)+1; n += 1) {
                        v = max(v,ds_grid_get(tab,mx+n*sign(w),my+n*sign(h)));
                    }
                    
                    if v = -1 {
                        ds_grid_set(tab,mx,my,-1);
                        ds_grid_set(cor,mx,my,-1);
                        
                        ds_grid_set(tab,mx2,my2,ps);
                        ds_grid_set(cor,mx2,my2,cs);
                    }
                }
            break;

            // ...

        }
   
    }
}

Como da pra ver no exemplo, usando uma estrutura sólida de grids e ids é fácil processar esse tipo de jogo ficando atento a lógica e flexibilidade da matemática.

Aqui um editável com o movimento do peão, torre e bispo:
https://dl.dropboxusercontent.com/u/60691076/exemplos/xadrez.gmk
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por saim Seg 17 Jun 2013, 15:29

Exatamente, kabeção! Fiz uns exemplos aqui, que vou postar pra não jogar fora - ficaram prontos antes de eu ver seu exemplo.
 
Eu usei mais ou menos a mesma lógica, mas usei uma array 2D ao invés de uma ds_grid. Pra validar o movimento, eu marco cada casa como "válida" ou "inválida" - o que, no resto da programação, seria usado pra permitir ou negar o movimento.
Ainda não testei, porque não tenho o jogo de xadrez pra testar. Pra poder moldar o tabuleiro, simplesmente coloquei o número de linhas e colunas como argumentos.
Cada peça tem um valor (ainda não definido), mas começando a partir de 1. Casas com valor "0" são consideradas vazias.
A cor da peça em cada casa também é uma variável que vale 1 ou 2, pras casas com peças, e 0 pras vazias. Poderia ser 0 e 1, porque não vou usar essa variável em casas vazias, mas eu fico desconfortável em dar valores válidos pra casas sem peças.
 
A idéia do funcionamento do jogo seria: o jogador clica na tela e o jogo entende qual linha/coluna ele clicou. Se tem uma peça dele na casa clicada, ele roda um dos scripts. A escolha do script é em função do valor (peça) da casa clicada. Ao rodar o script, as casas válidas ficam marcadas, possibilitando um efeito visual. Ao clicar numa casa marcada como "válida", a peça se move.
Não fiz nada disso, só escrevi os scripts pensando nessa lógica. A lógica ainda está só na cabeça (e, agora, aqui no fórum).
 
Não previ a possibilidade de "Roque"
Os peões são considerados apenas peças brancas; atacam só pra cima. Fácil de adaptar em função da cor da peça, mas pro jogo que eu tenho em mente, é desnecessário. Se alguém gostar do script e quiser usar, basta definir o sinal da linha (linha +- 1) em função da cor da peça ou do jogador atualmente jogando.
 
invalida_tudo:
valida_peao:
valida_torre:
valida_cavalo:
valida_bispo:
valida_rainha:
valida_rei:
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por RafaleCP Sáb 29 Jun 2013, 17:53

Muito obrigado pessoal! Verei alguns tutoriais também, e então tentarei começar com um jogo de damas e posteriormente vou tentar um de xadrez. Agradeço muito pela atenção de vocês!!!
RafaleCP
RafaleCP

Data de inscrição : 16/02/2013
Reputação : 0
Número de Mensagens : 42
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por shatterhand2 Ter 02 Jul 2013, 15:36

Eu não tenho certeza de como o GM trata cada um, mas tenho a impressão que criar um array com 2 dimensões é mais rápido que criar um grid ,não?

Ou talvez seja a mesma coisa.

É legal de vez em quando ver uns tópicos discutindo programação de uma forma um pouco mais "aprofundada" as vezes Smile

você pode ter um array pra verificar as jogadas válidas, e outro que mantém as posições atuais do tabuleiro (Não sei se alguém já falou isso, eu li o tópico meio em leitura dinâmica, talvez tenha pulado alguma coisa)

Fazer uma AI pra damas até rola, agora pra fazer pra xadrez.... primeiro tem que entender bastante do jogo, conhecer bem as aberturas de xadrez, etc, depois tem que avaliar quantas jogadas A FRENTE sua AI vai pensar (Não poder jogar pensando apenas no status atual do tabuleiro), depois você tem que analisar se a jogada desejada é mais vantajosa pro adversário do que pra você (Truque de jogador de xadrez, ofereça uma peça fraca em "sacrifício" para capturar uma mais forte do adversário.. uma boa AI não pode cair nisso). Eu não tenho nem ideia de como começar um trabalho desses.

Eu tenho quase certeza que devem ter alguns algoritmos de AI de Xadrez disponíveis, o que pode ajudar.

Essa leitura aqui pd ser interessante tambem:

http://www.uio.no/studier/emner/matnat/ifi/INF4130/h12/undervisningsmateriale/chess-algorithms-theory-and-practice-ver2012.pdf

shatterhand2
shatterhand2

Data de inscrição : 21/10/2009
Reputação : 11
Número de Mensagens : 649
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0


http://bananabytes.com.br/

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por Kabeção Ter 02 Jul 2013, 18:27

shatterhand2 escreveu:Eu não tenho certeza de como o GM trata cada um, mas tenho a impressão que criar um array com 2 dimensões é mais rápido que criar um grid ,não?

Ou talvez seja a mesma coisa.
Isso varia muito de versão para versão, ainda mais agora que existem vários módulos e as adaptações variam bastante de plataforma para plataforma.
Eu prefiro as grids nesse caso porque o GM já tem várias funções úteis para manipular matrizes e construir a base do jogo assim como mostrei no meu exemplo.
Com arrays eu teria que refazer todas aquelas funções já disponíveis.
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por Kapoty Ter 02 Jul 2013, 18:45

Tenho uma engine de movimento que eu fiz, veja se serve pra algo: https://dl.dropboxusercontent.com/u/78063995/Xadrez.gmk
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : [Dúvida] Sistema de movimento de peças no xadrez Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Dúvida] Sistema de movimento de peças no xadrez Empty Re: [Dúvida] Sistema de movimento de peças no xadrez

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos