Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Guest GuiGa

[Resolvido] Jogo - Damas (Pascal)

Mensagens Recomendadas

Guest GuiGa

Jogo de damas

Autor: Guilherme.R.Sá

Detalhes: O programa desenha um tabuleiro com as possíveis dimensões: 8x8, 10x10 e 12x12. Agrega funções que permitem controlarem muitas, mas não todas, das regras do jogo de damas. Os menus são exibidos em janelas simuladas. O jogo poderá ser realizado entre pessoas com computadores diferentes. Inteligência artificial não foi implementada, portanto o jogo só opera em modo multiplayer. Não foi implementada a regra da melhor nem na maior jogada, assim se houver mais de uma possibilidade de captura o jogador poderá escolher alguma sem que esta seja, necessariamente, a jogada com maior quantidade de capturas. O jogo em rede se dará através da partilha de um arquivo na rede, o qual as instâncias do programa usarão para se comunicar. Não usei sockets, apesar de, no código fonte, este termo ser usado para referir o arquivo mediador das conexões. É necessário estar com a janela maximizada ou dimensionada para que a visualização seja favorável, isso porque as linhas extrapolam linha 25, e diga-se de passagem, não sei se o resultado será muito bom se o programa for compilador nas versões mais atuais do free pascal. Parece-me que ele (nas versões atuais) só aceita saídas até a linha 25. Com a versão do fp embutido (que é beem antiga) no dev-pascal deu certo. A configuração com sons (na verdade bips) só funciona se compilado no Pascalzim. :-(

Licença: GNU GPL

Linguagem: Pascal

Versão: 1.0

Gostaria muito que todos opinassem. Ficaria grato em saber se o código e os conceitos do programa seguem, ou não, o padrão para jogos e se o jogo ficou interessante, ou não. Falem o máximo possível sobre o que acharam sobre o game. ;-)

DOWNLOAD: Código fonte e executável.

IMAGENS

menu_zps3cb6b77c.png

obrigadoCapturar_zpsb9066d48.png

menuTabuleiro_zpsfbb9c84a.png

rede1_zps6c8bd973.png

rede2_zps857e0d51.png

Editado por GuiGa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Outra vez os meus parabéns pela iniciativa. :)

Aconselho-te novamente a criares o manual do jogo, essencialmente por causa do modo em rede.

Gostei da ideia do Modo em Rede, e gostei do grafismo que deste ao jogo. É um trabalho muito interessante. ;)

Tenho entretanto de dar umas dicas neste jogo:

1) Devia estar explícito quem é que está a jogar no presente turno;

2) Quando selecciono uma peça, podias a) "iluminar" as casas para onde posso mover e/ou b) deixar mover o "cursor" apenas para as casas permitidas, e c) o "cursor" ficar com uma cor diferente para sabermos que, de facto, pegámos na peça.

3) Há uma confusão qualquer quando se inicia o jogo... parece que estão a ser desenhados não sei quantos tabuleiros até ficar o "definitivo". Verifica isso, não é muito agradável.

Continua com o bom trabalho, estou a gostar de ver ;)

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

epa .. já é o segundo, vou ver se existe alguma forma de compilar isso em linux

Não vi bem o código, mas não consegues compilar em Linux? Dá erro na compilação?

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Não vi bem o código, mas não consegues compilar em Linux? Dá erro na compilação?

nem sequer tenho compilador instalado ...

não pego em pascal à mais de 10 anos !!! se não compilar à primeira (por requisitos de sistema operativo, ou outros mesmo) não serei capaz de por isso a funcionar

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Versão para GNU/Linux.

Inclui o código sem os comandos que o Linux não suporta, e inclui o executável.

Aviso já que não é nada bonito no Terminal do Ubuntu. Na realidade, é injogável. :confused:

pois ... já vi.

é mesmo impossível.

@GuiGa, não consegues começar a tornar o teu código cross-platform ?

assim poderia experimentar não só este como o anterior em condições


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

O Wine não o corre em condições?

nem tentei ... daqui a pouco digo alguma coisa

ps : correr ... corre. mas parece que a tabela de caracteres é diferente.

o OperaçãoTaiga ainda dá para jogar mas as damas é impossível

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Guest GuiGa

Olá pessoal.

Agradeço imensamente pela a atenção dada ao meu trabalho. Gostaria de reafirmar que o código é livre e este pode ser modificado conforme a necessidade. Fiquem à vontade.

@thoga31, muito obrigado pelas considerações, sempre muito importantes. Sobre duas dicas, talvez em breve as implementarei em alguma versão posterior. Estou elaborando um manual para cada programa, onde, no qual não me esquecerei de citar seu nome (nick) e outros nomes relevantes para cada projeto. Sobre a explicitude do jogador do turno corrente, enquanto desenvolvia o pensei nisso, e cheguei a conclusão que seria mais importante no modo em rede. Quando não se joga no modo em rede, por imaginar que as pessoas estejam no mesmo computador e já conheçam as regras do jogo de damas achei desnecessário, neste primeiro momento, criar essa referência para os jogadores. Limitei ao máximo a quantidade de informações na tela para não poluir o visual. Mas você poderá encontrar esse aviso no modo em rede. Em relação à iluminar às casas, ainda não havia pensado nisso, uma boa ideia. Havia pensado, também, enquanto desenvolvia, em limitar o movimento do cursor apenas para as casas permitidas, cheguei a conclusão que o cursor em alguns casos poderia ficar "preso" em alguma parte do tabuleiro, então desisti dessa idéia. Sobre o cursor ficar com uma cor diferente também é uma ótima possibilidade. Para mostrar ao jogador que uma peça está selecionada há uma aviso no canto inferior da tela com a seguinte mensagem: "ESC para soltar a peça". Eu desconfio que a confusão do tabuleiro que aconteceu com você ocorreu porque a tela do prompt não estava maximizada ou devidamente dimensionada. Nunca percebi este comportamento a não ser nestes casos.

Ainda não executei em linux, mas parece-me que a tabela de caracteres do linux, conforme o informado pelo colega @HappyHippyHippo, é diferente da do windows. Talvez o comando $ man ascii exiba essa lista no linux (e nem sei se issa lista é default para todas as distribuições). Nunca havia pensado em programar de forma cross-platform. Uma ótima ideia sugerida pelo colega @HappyHippyHippo. Nunca utilizei este paradigma e seria muito interessante aprendê-lo. @HappyHippyHippo, você teria alguma dica de fontes para estudo? :-)

Editado por GuiGa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

@HappyHippyHippo, você teria alguma dica de fontes para estudo? :-)

eu daria todo o apoio que necessitasses, mas como referi acima, não pego em pascal à mais de 10 anos. foi uma das linguagens que usei para aprender a programar, mas rapidamente passei para o C e deixei a linguagem de lado (na altura o Pascal não é o que é hoje)

talvez o @thoga31 seja uma melhor fonte de informação do que eu


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

Gente,

Peguei nisto e modifiquei algumas coisas (apenas durante alguns minutos)... Tem ainda muitos glitches gráficos, mas dá para perceber a ideia de como funciona.. O problema é o conjunto de caracteres, obviamente.

Atenção: maximizem o terminal antes de executar!

https://docs.google.com/open?id=0B9EQhtAFeNT7bXlLTUJIempUMXM

Editado por pwseo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Existe o velho problema entre os programas em Windows e em Linux, mesmo com o código-fonte igual.

Primeiramente, a tabela ASCII pode variar mais do que imaginam. Por exemplo, o meu Windows 7 não tem a mesma tabela que o meu Windows Vista (onde me encontro agora). É fantástico utilizarmos os caracteres ASCII para fazer os programas mais bonitos, mas muitas vezes há um preço a pagar: a "importabilidade" entre alguns sistemas.

Depois, a prompt do Windows é totalmente diferente do Terminal das distribuições GNU/Linux. O Terminal é um programa em si muito engraçado e complexo, e quando tentas executar o mesmo programa entre os dois sistemas, pode dar barraca.

Algumas units do Pascal não são "aceites" em Linux - nem sequer vêm com o pacote do Free Pascal Compiler for Linux. Exemplo disso é a unit que te recomendei no outro tópico, a unit windows - esta só tem métodos que funcionam em Windows e não são portáveis.

Muitas vezes a solução passa por ter códigos ligeiramente distintos para cada uma das plataformas. Geralmente utilizar-se-á o código para Windows como a base, mas isso já é ao critério de cada um.

Por exemplo, há uma temporada fiz um programa não-interactivo em Pascal e tive de fazer 2 códigos quase distintos para cada um dos sistemas: em Windows pude incluir uma ferramenta que utilizava uma unit que Linux não suporta, pelo que, a versão para Linux, ficou com metade das ferramentas. Contudo, foi o código para Linux que serviu de base para a adaptação em Windows.


Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.