Ir ao conteúdo

Posts recomendados

Postado

 

Estou a criar o jogo das damas em c# e estou a ter dificuldades a inicializar as imagens nas coordenadas que desejo. Tenho uma funçao na classe Pedras onde criei um point para guardar o x e o y que vão ser inseridos para mover as peças.

public Pedras(bool imagem_, Point _posicao) //imagem é a imagem da peças e a posiçao é a posicao que vão ter no tabuleiro
    {
        Point posicao = new Point();
        imagem = imagem_;
        posicao.X = _posicao.X;
        posicao.Y = _posicao.Y;
    }

 

Agora quero inicializar as imagens das peças no tabuleiro quando ele abre, entao coloquei no construtor do tabuleiro a inicializaçao:

public Jogo() //vamos inicializar as peças no tabuleiro
    {
        tabuleiro = new List<Pedras>();
        //é adicionada a imagem das peças nestas posiçoes quando o tabuleiro é inicializado
        tabuleiro.Add(new Pedras(true,(8,2))); //peças brancas
        tabuleiro.Add(new Pedras(false, (8,4))); //peças pretas

    }

o meu tabuleiro tem os números de 12345678 no topo e de lado tem de 1 a 8 de cima para baixo.

Mas nao funciona, alguem me pode ajudar a corrigir o problema?

Postado
public Pedras(bool imagem_, Point _posicao) //imagem é a imagem da peças e a posiçao é a posicao que vão ter no tabuleiro
    {
        //Point posicao = new Point(); posição tem que pertencer a classe (um campo da classe). 
		//Todas as variaveis declaradas dentro do método são removidas da memória após o fim do mesmo.
        imagem = imagem_;
        posicao.X = _posicao.X;
        posicao.Y = _posicao.Y;
    }


public Jogo() //vamos inicializar as peças no tabuleiro
    {
        tabuleiro = new List<Pedras>(); //essa lista vai sumir no fim do método ok? tem que ser membro da classe...
        //é adicionada a imagem das peças nestas posiçoes quando o tabuleiro é inicializado
        tabuleiro.Add(new Pedras(true,new Point(8,2))); //peças brancas
        tabuleiro.Add(new Pedras(false, new Point(8,4))); //peças pretas

    }

 

Postado

@Flávio Pedroza Entao na classe Dama onde estou a implementar o 1º bloco de codigo tenho


    public class Pedras
    {
        public bool comerdama{ get; set; }

        public bool imagem{ get; set;}

        //usamos point porque a classe ja esta feita vamos reutilizar codigo
        public Point posicao{ get; set; }

        public bool dama {get; set;}

        public Casas ponto { get; set; }


        public Pedras(bool imagem_, Point _posicao) //imagem é a imagem da peças e a posiçao é a posicao que vão ter no tabuleiro
        {
            //Point posicao = new Point(); 
            imagem = imagem_;
            posicao.X = _posicao.X;
            posicao.Y = _posicao.Y;
        }
    }

E o segundo bloco implemento na classe tabuleiro:


    public class Jogo
    {
        List< Pedras > tabuleiro;//usamos pedras porque vamos usar a classe Pedras de Dama

        public Jogador jog1 { get; set; }

        public Utilizador jog2 { get; set; }

        public int numderrotas_jog1{ get; set; }

        public int numderrotas_jog2 { get; set;}

        public int numempates{ get; set; }

        public int numvitorias_jog1 {get; set; }

        public int numvitorias_jog2 {get; set; }

        public int pontuacao{ get; set;}

        public float tempo { get; set; }

        public Tabuleiro Tab { get; set; }

        public Utilizador user { get; set; }

        
        public Jogo() //vamos inicializar as peças no tabuleiro
        {
            tabuleiro = new List<Pedras>();
            //é adicionada a imagem das peças nestas posiçoes quando o tabuleiro é inicializado
            tabuleiro.Add(new Pedras(true,new Point(8,2))); //peças brancas
            tabuleiro.Add(new Pedras(false, new Point(8,4))); //peças pretas
         
        }

      



        internal List<Pedras> Tabuleiro { get => tabuleiro; set => tabuleiro = value; } //internal é como os membros public mas é apenas visivel dentro do modulo corrente
    }
}

Mas nao funciona, porque? o que tenho errado? 

Postado

Qual o erro que dá?

Tenta assim:

public Pedras(bool imagem_, Point _posicao) //imagem é a imagem da peças e a posiçao é a posicao que vão ter no tabuleiro
        {
            //Point posicao = new Point(); 
            imagem = imagem_;
            posicao = _posicao;
        }
Postado

@Flávio Pedroza Eu ja tinha mencionado essa bibliote na classe Pedras pensei que as bibliotecas nao eram preciso mencionar sempre que usava a classe Point noutra classe, mas funcionou obrigada !!

Agora tenho outro erro, eu tenho a imagem das peças a abrir diretamente da localizaçao no tabuleiro mas nao funciona

Ja pus a localizaçao como o diretorio, ja coloquei so o nome da imagem mas nada funciona.

Eu estou a usar essa pequena funçao de outro codigo

private void MostraPedraTabuleiro(Pedra pedra)
        {
            PictureBox pp = this.Controls.Find(pedra.Posicao, false)[0] as PictureBox;

            if (pedra.Branca)
                pp.Image = Image.FromFile("Imagens//DamaBranca.png");
            else
                pp.Image = Image.FromFile("Imagens//DamaPreta.png");
        }

E funciona, mas implementando a com  o meu codigo nao funciona porque?

Sem Título.png

Postado

O caminho do arquivo de imagem *.png provavelmente está errado (está dando erro de arquivo não encontrado). 

Onde está está localizada pasta "Imagens"? Tenta colocar na mesma pasta onde está localizado o arquivo "Damas.exe".

Alternativamente, fornece o caminho completo. Ex.: "c:\arquivos de programas\visual studio 2017...", etc.

 

Postado

@Flávio Pedroza ja exprimentei mas da erro, ele nao aceita nada eu tenho a imagem das damas na pasta do projeto Damas e tenho tambem na pasta imagens do computador.

Mas nao aceita, nao sei porque. Da este erro :

Sem Título.png

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!