Ir ao conteúdo
  • Cadastre-se

_rsd_17

Membro Pleno
  • Posts

    38
  • Cadastrado em

  • Última visita

posts postados por _rsd_17

  1. Ola,

    estou a ter um problema no codigo ele nao apresenta erros mas quando preencho o formulario de login mal ele devia apresentar-me uma mensagem a dizer Utilizador inexistente na base de dados! mas nao acontece ele simplesmente elimina esta linha de codigo e corre normalmente. 

    ModelState.AddModelError("", "Utilizador inexistente na base de dados!");

    Ele nao entra porque o utilizador nao se encontra na base de dados, ele retorna me a view index.

    Tenho o codigo do formulario de login assim:

    public IActionResult Login(string user, string password, string? ReturnUrl)
            {
                SHA512 sha512 = SHA512Managed.Create();
                byte[] bytes = sha512.ComputeHash(Encoding.UTF8.GetBytes(password), 0, Encoding.UTF8.GetByteCount(password));
    
    
                string passHash = Convert.ToBase64String(bytes);
    
                Socios socio = _context.Socios.Include(s => s.Gerir).Include(s => s.Mensagem).Include(s => s.Participa).Include(s => s.PersonalTrainer).Include(s => s.Peso).Include(s => s.PlanosExercicios).FirstOrDefault(s => s.NomeUtilizador == user && s.Password == password);
                if (socio != null)
                {
                    HttpContext.Session.SetString("Nome", socio.NomeUtilizador);
                    HttpContext.Session.SetInt32("UserId", socio.Idsocio);
    
                    HttpContext.Session.SetString("Perfil", "Socio");
    
                }
                Professores prof = _context.Professores.Include(p => p.MapaAulasGrupo).Include(p => p.Mensagem).Include(p => p.Peso).Include(s => s.PersonalTrainer).Include(p => p.PlanosExercicios).FirstOrDefault(p => p.Nome == user && p.Password == password);
                if (prof != null)
                {
                    HttpContext.Session.SetString("Nome", prof.Nome);
                    HttpContext.Session.SetInt32("UserId", prof.Idprofessor);
    
    
                    HttpContext.Session.SetString("Perfil", "Professor");
    
                }
                Administrador admin = _context.Administrador.Include(a => a.Gerir).SingleOrDefault(a => a.Nome == user && a.Password == password);
                if (admin != null)
                {
                    HttpContext.Session.SetString("Nome", admin.Nome);
                    HttpContext.Session.SetInt32("UserId", admin.Idadministrador);
    
    
                    HttpContext.Session.SetString("Perfil", "Administrador");
    
                }
    
                if (String.IsNullOrEmpty(ReturnUrl))
                {
                    ModelState.AddModelError("", "Utilizador inexistente na base de dados!");
                    return LocalRedirect("/");
                }
                else
                {
                    return LocalRedirect(ReturnUrl);
                }
            }

    Alguem me pode ajudar a resolver isso ?

  2. Ola, estou a tentar que o preenchimento de uma View seja guardado na base de dados, tenho varias classe entre elas tenho a classe socio, atraves dessa classe criei um controller e fiz um add-migration para criar a base de dados. Atraves desse controller criei um metodo RegistarSocio e criei uma view do tipo create chamada RegistarSocio. Mas ao preencher o formulario na web e clicar em create nao faz nada e pelo codigo que tenho no controller se estiver tudo certo regressa a view Login do controller Home.Nao estou a perceber o que esta a acontecer.... Alguem tem alguma ideia de como resolver isso ?

    Tenho isto no Controller

    public class SociosController : Controller
    {
        private readonly GinasioContext _context;
    
        public SociosController(GinasioContext context)
        {
            _context = context;
        }
    
        // GET: Socios
        public async Task<IActionResult> Index()
        {
            return View(await _context.Socios.ToListAsync());
        }
    
        // GET: Socios/Details/5
        public async Task<IActionResult> Details(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }
    
            var socios = await _context.Socios
                .FirstOrDefaultAsync(m => m.Idsocio == id);
            if (socios == null)
            {
                return NotFound();
            }
    
            return View(socios);
        }
    
        public IActionResult Perfil()
        {
            return View();
        }
    
    
        public IActionResult RegistarSocio()
        {
            return View();
        }
    
    
    
        // POST: Socios/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> RegistarSocio([Bind("Idsocio,Email,Telefone,Fotografia,Sexo,Altura,NomeUtilizador,PesoInicial,Password,Estado")] Socios socios)
        {
    
            if (ModelState.IsValid)
            {
                _context.Add(socios);
                await _context.SaveChangesAsync();
                return RedirectToAction("Login", "Home");
            }
    
            return View(socios);
        }
    
        // GET: Socios/Edit/5
        public async Task<IActionResult> Edit(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }
    
            var socios = await _context.Socios.FindAsync(id);
            if (socios == null)
            {
                return NotFound();
            }
            return View(socios);
        }
    
        // POST: Socios/Edit/5
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Edit(int id, [Bind("Idsocio,Email,Telefone,Fotografia,Sexo,Altura,NomeUtilizador,PesoInicial,Password,Estado")] Socios socios)
        {
            if (id != socios.Idsocio)
            {
                return NotFound();
            }
    
            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(socios);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!SociosExists(socios.Idsocio))
                    {
                        return NotFound();
                    }
                    else
                    {
                        throw;
                    }
                }
                return RedirectToAction(nameof(Index));
            }
            return View(socios);
        }
    
        // GET: Socios/Delete/5
        public async Task<IActionResult> Delete(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }
    
            var socios = await _context.Socios
                .FirstOrDefaultAsync(m => m.Idsocio == id);
            if (socios == null)
            {
                return NotFound();
            }
    
            return View(socios);
        }
    
        // POST: Socios/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> DeleteConfirmed(int id)
        {
            var socios = await _context.Socios.FindAsync(id);
            _context.Socios.Remove(socios);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
    
        private bool SociosExists(int id)
        {
            return _context.Socios.Any(e => e.Idsocio == id);
        }
    }

    Na classe tenho isto :

    public partial class Socios
    {
        public Socios()
        {
            Gerir = new HashSet<Gerir>();
            Mensagem = new HashSet<Mensagem>();
            Participa = new HashSet<Participa>();
            PersonalTrainer = new HashSet<PersonalTrainer>();
            Peso = new HashSet<Peso>();
            PlanosExercicios = new HashSet<PlanosExercicios>();
        }
    
        [Key]
        [Column("IDSocio")]
        public int Idsocio { get; set; }
        [Required]
        [Column("email")]
        [StringLength(100)]
        public string Email { get; set; }
        [Required]
        [Column("telefone")]
        [StringLength(20)]
        public string Telefone { get; set; }
        [Required]
        [Column("fotografia")]
        [StringLength(40)]
        public string Fotografia { get; set; }
        [Column("sexo")]
        public bool Sexo { get; set; }
        [Column("altura")]
        public double Altura { get; set; }
        [Required]
        [Column("nome_utilizador")]
        [StringLength(50)]
        public string NomeUtilizador { get; set; }
        [Column("peso_inicial")]
        public double PesoInicial { get; set; }
        [Required]
        [Column("_password")]
        [StringLength(20)]
        public string Password { get; set; }
        [Column("estado")]
        public int Estado { get; set; } // 1 ativo 
    
        [InverseProperty("IdsocioNavigation")]
        public virtual ICollection<Gerir> Gerir { get; set; }
        [InverseProperty("IdsocioNavigation")]
        public virtual ICollection<Mensagem> Mensagem { get; set; }
        [InverseProperty("IdsocioNavigation")]
        public virtual ICollection<Participa> Participa { get; set; }
        [InverseProperty("IdsocioNavigation")]
        public virtual ICollection<PersonalTrainer> PersonalTrainer { get; set; }
        [InverseProperty("IdsocioNavigation")]
        public virtual ICollection<Peso> Peso { get; set; }
        [InverseProperty("IdsocioNavigation")]
        public virtual ICollection<PlanosExercicios> PlanosExercicios { get; set; }
    }

    E na view em que tenho o formulario para registar na base de dados tenho

    @model WebApplication1.Models.Socios
    
    @{
        ViewData["Title"] = "RegistarSocio";
    }
    
    <p style="background-color:black"> </p>
    
    @*Apos pedir registo e ser aceito pode se inscrever atraves desta view se for um socio *@
    
    <p style="color:dodgerblue"> Registar-se como socio : </p>
    <hr />
    <div class="row">
        <div class="col-md-4">
            <form asp-action="RegistarSocio" style=" color:white">
                <div asp-validation-summary="ModelOnly" class="text-danger"></div>
                <div class="form-group">
                    <label asp-for="NomeUtilizador" class="control-label"></label>
                    <input asp-for="NomeUtilizador" class="form-control" />
                    <span asp-validation-for="NomeUtilizador" class="text-danger"></span>
                </div>
                <div class="form-group">
                    <label asp-for="Email" class="control-label"></label>
                    <input asp-for="Email" class="form-control" />
                    <span asp-validation-for="Email" class="text-danger"></span>
                </div>
                <div class="form-group">
                    <label asp-for="Password" class="control-label"></label>
                    <input type="password" asp-for="Password" class="form-control" />
                    <span asp-validation-for="Password" class="text-danger"></span>
                </div>
                <div class="form-group form-check">
                    @*<label class="form-check-label">
                            <input class="form-check-input" asp-for="Sexo" /> @Html.DisplayNameFor(model => model.Sexo)
                        </label>*@
                    <label asp-for="Sexo" class="control-label"></label>
                    <select asp-for="Sexo" class="form-control">
                        <option value="true">Feminino</option>
                        <option value="false">Masculino</option>
                    </select>
                </div>
                <br />
                <div class="form-group">
                    <input type="submit" value="Criar" class="btn btn-primary" style="color:black; background-color:blue" />
                </div>
                <br />
                <br />
             
            </form>
        </div>
    </div>
    
    <div>
        <a asp-action="Index"> < Voltar </a>
    </div>
    <br />
    <br />
    <br />
    
    @section Scripts {
        @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
    }

     

  3. Ola bom dia,

    cria colocar uma condição no controller para me redirecionar para views diferentes como por exemplo, tenho uma view que permite ao utilizador escolher o utilizador que deseja e tenho um link que dependendo de qual escolhe redireciona uma view diferente. 

    <style>
            body {
                background-color: black
            }
    
            img {
                width: 50%;
            }
       
    </style>
    
    <table>
        <tr>
            <td >
                <a href="~/professor/registarProfessor"><img src="~/Imagens/istockphoto-675179390-612x612.jpg" class="imagem3" /> <br/> Registar como professor </a>
            </td>
            <td>
                <a href="~/socios/registarSocio"><img src="~/Imagens/alongamento-anterior-coxa.jpg" class="imagem4" /> <br /> Registar como socio </a>
            </td>
        </tr>
    </table>

    Como posso colocar um foreach no controller de modo a redirecionar para as views diferentes consoante o link que escolhe ? 

  4. Ola,

    Estou a tentar guardar os dados de uma View, que foi criada vazia, na base de dados. Alguem tem alguma ideia de como posso fazer isso ? Estou a usar o controller HOME e tenho uma base de dados criada ja com classes e quero que os dados colocados na view sejam colocados nos campos das tabelas da base de dados.

    Nao posso fazer com uma view create usando a classe porque tenho que fazer isto para duas classes diferentes mas que tem os mesmos dados, entao uso o Home Controller e quero guardar assim os dados na base de dados, ele ao se registar antes de confirmar email ja escolhe que tipo de utilizador é entao so preciso guardar os dados desta view na base de dados.

    @{
        ViewData["Title"] = "RegistarUtilizador";
    }
    @*Apos pedir registo e ser aceito pode se inscrever atraves desta view*@
    <p style="color:white"> Preencha os campos por favor  : </p>
    <form method="POST" style="color:white">
        <label>Nome : </label>
        <input type="text" name="Nome" required />
        <br />
        <label>Email : </label>
        <input type="text" name="Email" required />
        <br />
        <label>Password : </label>
        <input type="text" name="Password" required />
        <br />
        <select class="form-control">
            Sexo
            <option value="0">Feminino</option>
            <option value="1">Masculino</option>
        </select>
        <br />
        <br />
    
        <input type="submit" name="submit-btn" value="Register" />
    
    </form>

     

  5. Ola poderiam me ajudar a colocar os icons em frente ao texto  tipo : ( icon mensagem)  email

    Eu tenho este codigo mas nao fica da maneira que eu queria, podem me dizer o que esta errado

    @{
        ViewData["Title"] = "Contactos";
    }
    <h1>@ViewData["Title"]</h1>
    
    
    
    <address>
        Encontra-nos !<br />
        rua exemplo de tal, 1234-123 xxx xxx
        <br />
        <abbr title="Phone"> </abbr>
        <i class="faz fa-phone-alt"></i>
        xxx xxx xxx
    </address>
    
    <p>
        Horário De Funcionamento
        <br />
        8:30 h ás 13:30h
        <br />
        15:00h ás 22:00h
        <br />
        Segunda a Sexta
    </p>
    
    
    
    
    <address>
        
        <img width:1px; margin-right:1px; src="https://image.flaticon.com/icons/svg/59/59965.svg">
        <strong>Email:</strong> <a href="[email protected]">[email protected]</a><br />
    </address>

    Outra coisa eu queria que me aparece-se uma imagem de fundo, mas ela nao aparece eu ja tenho guardada no visual studio em wwwroot>Imagens mas ela nao me aparece. Tenho este codigo:

    <style>
        body {
            padding-top: 0px;
            background-color: black;
            background-image: url('Images/shutterstock_571976104.jpg'); @*Nao esta a aparecer a imagem de fundo*@
            background-repeat: no-repeat;
        }
    
        .navbar {
            display: none;
        }
    </style>

    Alguem me pode dar uma ajuda? Obrigada

     

  6. Ola a todos, tenho um bug na view em que permito que alguem faça o registo. Apresenta me este codigo : System.IO.DirectoryNotFoundException: 'Não foi possível encontrar uma parte do caminho 'Fotos\WIN_20190125_16_11_48_Pro.jpg'.'

     

    Nesta funçao:

    private void Registo_RespostaRegistar(string _nome, string _email, string _pais, string _username, string _password, string _foto)
            {
    
                //Obtem o caminho fisico para a pasta do código da aplicação
                //para poder reutilizar a base de dados, caso contrário, ele está sempre a substituir
                var folder = AppDomain.CurrentDomain.BaseDirectory.Replace("\\bin\\Debug", "");
    
                //construir a ligação ao servidor SQL Server local com o caminho do ficheiro
                string sqlConnection = "Server=(localdb)\\MSSQLLocalDB;AttachDbFilename=" + folder + "InfoJogadores.mdf" +
                                         ";Trusted_Connection=True;";
    
                //inicializar a ligação ao servidor
                SqlConnection server = new SqlConnection(sqlConnection);
    
                //abrir a ligação
                server.Open();
    
                //obter o nome do ficheiro
                string filename = System.IO.Path.GetFileName(_foto);
    
                //construir a string SQL de insert nas tabelas
                // para aplicações reais devem usar SQL parameters e não string directas 
                string comando = String.Format("INSERT INTO InfoJogadores" +
                                                "(Nome,Email,Pais, Username, Password, Foto) values " +
                                                "( '{0}', '{1}', '{2}', '{3}','{4}', '{5}')",
                                               _nome,_email,_pais,_username,_password, filename);
    
                //construir o comando SQL com a ligação ao servidor
                SqlCommand command = new SqlCommand(comando, server);
    
                //executar o comando sem expectativa de receber resultados (usar para INSERTS, UPDATES, DELETE)
                //o metodo devolve o numero de linhas modificadas pela query enviada
                int resultado = command.ExecuteNonQuery();
    
                //fechar sempre a ligação quando deixa de ser necessária
                server.Close();
    
                if (resultado == 1)  // se o resultado for 1, significa que adicionou correctamente o utilizador
                {
                    //guardar copia do ficheiro na pasta fotos
                  
                  // DA ERRO AQUII 
                    System.IO.File.Copy(_foto,
                        "Fotos\\" + filename, true);
    
                }
                else
                {
                    // não inseriu na base de dados, não fazemos nada
    
                }
            }
        }

    Nao estou a conseguir resolver esse erro alguem me pode ajudar?

  7. estou a criar um metodo no jogo das Damas que perimite que as peças movam, entao numa textbos insiro a posiçao da peça que qero mover e depois guarda a na variavel aux, e o utilizador na mesma textbox (textboxposicao) insere a posicao para onde quer mover a peça 

    Mas o metodo esta a dar me erro numa linha diz que 'A referência de objecto não foi definida como uma instância de um objecto ' 

    Nao estou a conseguir resolver o problema alguem me pode ajudar?

    Este é o metodo a linha que me da erro é a assinalada 

    private void buttonAdicionarPedra_Click(object sender, EventArgs e)
            {
                Point peça_selecionada = new Point(-1,-1);//criamos uma variavel do tipo Point para guardar a posiçao da peça que vamos mexer
                //inicializamos-a na posiçao (-1,-1) porque estas posiçoes nao existem no tabuleiro
                char[] aux;
                Pedras pedra_aux;
                if (!this.seleçao)//se a peça nao tiver sido selecionada
                {
                    aux = textBoxposicao.Text.ToCharArray(); //a variavel aux é um auxiliar para converter a textbox para vetor de carateres
                  
                    
                    peça_selecionada = new Point(Convert.ToInt32(aux[0]), Convert.ToInt32(aux[1]));
                    this.seleçao = true;//a peça foi selecionada
                    buttonAdicionarPedra.Text = "Adicionar Pedra";//o botao muda de nome para AdicionarPedra
                    textBoxposicao.Text = "";//coloca a textbox a branco novamente
                    label1.Text = "Escolha para onde mover a peça";//muda o texto da label por cima da textbox posicao
                }
                else
                {//e a pedra foi selecionada 
                   pedra_aux = play.ProcurarPedras(peça_selecionada);
                    aux = textBoxposicao.Text.ToCharArray();
                    pedra_aux.inserirposicao(Convert.ToInt32(aux[0]), Convert.ToInt32(aux[1]));//---------- da erro aqui 
                    DesenhaPedras(play.Tabuleiro);
                    buttonAdicionarPedra.Text = "Selecionar Peça";
                    label1.Text = "Escolha a posição da peça que quer mover";
                }
               
                
    
            }

    Estes sao os outros metodos que uso neste metodo :

    public void inserirposicao(int x, int y)//metodo criado para ajudar a guardar a posicao da peça q vamos mexer
            {
                Posiçao.X = x;
                Posiçao.Y = y;
            }

     

  8. @Fn1X Eu so tenho este construtor, eu na textBoxPosiçao vou inserir as cordenadas que qero mover a peça tipo 11 ou 32 assim so

      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 = _posicao;
            }

    Como é que eu converto  a textboxposiçao em point?

    para por em inteiro seria algo do tipo textBoxPosicao.Toint32 

  9. @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

  10. @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? 

  11.  

    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?

  12. @Gabferreira Ao usar o click para mover todas as peças tenho que fazer para todas elas esta função?

    private void destinoPeca_PictureBox_Click(object sender, EventArgs e){}

    o que é a peca_PictureBox.Location ? 

    Como é que eu sei para onde as mover? o utilizador vai jogar com o rato mas tenho que restringuir para onde as pode mover, ou seja tenho que indicar no codigo as unicas posiçoes para onde pode mover

  13. @Gabferreira ola obrigada, então eu ja criei o tabuleiro usei varias pictureBox como o exemplo que o meu professor deu, então ele usa uma string posição para mover as peças que busca diretamente a localizaçao onde estão guardadas no pc quando abre o tabuleiro. Ou seja sao pictureBox tambem.

    Entao eu estou a pensar fazer da mesma forma usar pictureBox com as peças mas que aparecam so quando o tabuleiro é aberto, e não na view.

    agora a minha duvida é, eu quero usar a classe Point para poder mexer com as peças, como é que faço isso? 

    o meu tabuleiro esta assim:

    Capturar.thumb.PNG.7bd993a361a22e02d41d85c5c020f1fd.PNG

    o utilizador na posicaçao que é uma textbox vai inserir a posicao em q quer jogar a peça mas como é q eu faço isso no codigo usando a classe point?

  14. Ola pessoal, 

    estou a desenvolver o jogo das damas em c# usando o visual studio 2017 e programando usando o MVC.

    Eu ja fiz 4 views uma para ser a principal em que o jogador escolhe jogar ou registar, outra para o registo, para efectuar o login e uma para o tabuleiro.

    na view do tabuleiro eu vou colocar uma pictureBox para aparecer o tabuleiro e queria colocar as peças sobre ele e po-las a mexer.

    As peças pensei em usar pictureBox tambem, mas nao sei se posso mover pictureBoxs nem sei bem como fazer isso alguem me pode ajudar? 

     

     

     

  15. ola no jogo do galo tenho uma funçao SelectionSort na classe jogador para ordenar os jogadores pela experiencia, e tenho uma funçao de troca para ajudar:

    void jogador::SelectionSort(jogador * Jog, int size)//ordenar jogadores pela experiencia
    {
    	int i, j, aux;
    	for (i = 0; i < size - 1; i++) {
    		aux = i;
    		for (j = i + 1; j < size; j++) {
    			if ((Jog + j)->GetExperiencia() < (Jog + j)->GetExperiencia()) {
    				aux = j;
    			}
    		}
    
    		troca(Jog + aux, Jog + i);
    	}
    }
    
    void jogador::troca(jogador * x, jogador * y)
    {
    	jogador aux;
    	aux = *x;
    	*x = *y;
    	*y = aux;
    }

    ate ai tudo bem, mas quando tenho implementar no main nao funciona!! Help ?

    
    			//apresentar no ecran os dados dos jogadores ordenados pela experiencia
    			jogador vetor[10];
    
    			jogador.SelectionSort(vetor,10);
    			for (int i = 0; i < 10; i++) {
    				cout << vetor[i] << "\n";
    			}
    			cin.get();

     

    adicionado 0 minutos depois

    o meu main completo é assim:

    #include "pch.h"
    #include <iostream>
    #include "Menu.h"
    #include "Jogo.h"
    #include "Campeonato.h"
    #include "jogador.h"
    
    using namespace std;
    
    
    int main()
    {
    	Menu menu = Menu();
    	Jogo game = Jogo();
    	Campeonato championship = Campeonato();
    	int option = 0;
    
    	do
    	{
    		system("CLS");
    		menu.View_B_Menu();//primeiro menu
    		menu.SetCondicao(6);
    		switch (option = menu.SelectOption())
    		{
    		case 1:
    			//jogar o jogo
    			menu.PlayGame();
    			break;
    		case 2:
    			//como jogar
    			system("CLS");
    			menu.ViewHow2Play();
    			system("PAUSE");
    			break;
    		case 3:
    			// Regras
    			system("CLS");
    			menu.ViewRules();
    			system("PAUSE");
    			break;
    
    		case 5:
    			// ler do ficheiro os dados de todos os jogadores para um vetor de objetos
    			jogador vetor[10];
    			ifstream x;
    			int contador;
    			x.open("Jogadores.txt");
    			if (x) {
    				for (int i = 0; i < 10; i++) {
    					vetor[i].Read(x);
    				}
    				/*ou entao:
    					contador = 0;
    					while(x.peek()!=EOF={
    						vetor[contador].Read(x);
    						contador++;
    					}*/
    
    
    				x.close();
    				cout << "Ficheiro Jogadores.txt lido com sucesso! " << endl;
    			}
    			else {
    				cout << "ERRO: nao é possivel abrir o ficheiro!!" << endl;
    
    				break;
    			}
    
    		case 6:
    			//apresentar no ecran os dados dos jogadores ordenados pela experiencia
    			jogador vetor[10];
    
    			jogador.SelectionSort(vetor,10);
    			for (int i = 0; i < 10; i++) {
    				cout << vetor[i] << "\n";
    			}
    			cin.get();
    
    		}
    			
    	} while (option != 5); //opção 4 -  sai do jogo
    
    	system("CLS");
    	cout << "Obrigado por jogarem!! :D ";
    	Sleep(5);
    	return 0;
    
    } 

     

    • Curtir 1

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!