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
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


[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