pedromiguelfaria Posted October 25, 2013 at 11:30 AM Report #530552 Posted October 25, 2013 at 11:30 AM Boas pessoal, estou num CET de programação, e estamos a dar a linguagem pascal, coisinhas simples e tal, mas para o final deste mês tenho de apresentar um programa, diferente daqueles que fizemos nas aulas, em que precisávamos de pesquisar e tentar "desenrascar nos o máximo possível" eu queria fazer algo do género: Pedir o numero de jogadores que vão jogar, guardo isso numa variável, tudo muito bem Peço o nome dos jogadores e guardo num vector, também sem problemas. Peço para o utilizador escolher o seu símbolo para meter no tabuleiro de jogo e aqui surge o problema... Por exemplo queria fazer algo deste genero: >& $ # * e quero que aquela setinha que está atras do simbolo, ande para cima e para baixo, e quando o utilizador carregar ENTER isto ficar guardado e associado ao jogador, posteriormente desaparecendo para não poder voltar a ser escolhida, é possível?
I-NOZex Posted October 25, 2013 at 11:47 AM Report #530558 Posted October 25, 2013 at 11:47 AM eu ja tou um pouco frouxo em pascal puro, mas sei-te dizer que consegues fazer com isto: http://www.freepascal.org/docs-html/rtl/crt/window.html eu fiz algo do genero no 11º ano, com um menu, estilo menu dropdown, em que com as setas andava pro lado e para cima/baixo... no maximo, posso tentar procurar a fonte e deixar-te ai, mas decerto alguem te conseguirá ser mais especifico no entanto explora a funçao window pois é com ela que dá para fazer 😉 B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net
nunopicado Posted October 25, 2013 at 12:30 PM Report #530568 Posted October 25, 2013 at 12:30 PM Para isso vais precisar de (assim por alto): - Unit CRT - Readkey (para ler as teclas, por exemplo, as setas para seleccionar o simbolo, e o enter para validar a selecção) - Repeat Until (para repetir a leitura de teclas até que a tecla enter seja pressionada) - GotoXY (para escrever a seta '>' na posição desejada, e para a eliminar, escrevendo no mesmo local um ' ' - Write (para escrever no ecrã, sem ser afectado pelo CR-LF do Writeln) Começa por aqui, e vai pondo as tuas dúvidas... 2 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
pedromiguelfaria Posted October 29, 2013 at 06:11 PM Author Report #531099 Posted October 29, 2013 at 06:11 PM (edited) For i:=1 to jogadores do begin writeln ('Introduza o nome do jogador ',i); readln (nomes[i]); writeln ('Jogador ',nomes[i],' selecione o seu s¡mbolo de jogo:'); //Código para as peças do tabuleiro gotoxy(1,linha); write (''); gotoxy(5,linha); writeln ('¸'); gotoxy(5,linha); writeln('$'); gotoxy (5,linha); writeln('õ'); gotoxy(5,linha); writeln('þ'); ch:=READKEY; If (ch=chr(80)) and (linha>=5) and (linha<=8) then begin gotoxy(1,linha+1); writeln(''); gotoxy(1,linha); writeln (''); end; Estou no bom caminho? Edited October 29, 2013 at 06:52 PM by nunopicado Adicionada linguagem GeShi
nunopicado Posted October 29, 2013 at 06:52 PM Report #531107 Posted October 29, 2013 at 06:52 PM Mais ou menos... 🙂 Estás a tentar, o que já é bom. As teclas especiais, como as setas, precisam de um prefixo primeiro. Assim, quando fores fazer o readkey, deves verificar antes de mais se o código lido é o #0. Se for, vais testar então o código da seta (#72, #75, #77 e #80, se não me falha a memória, para as quatro setas) Depois usas um case para fazer esse teste. O IF não ajuda. Precisarás também de uma variável que te indique em que posição está o cursor (opção 1, 2 3 ou 4). Conforme a opção, escreverás na posição do ecrã correspondente um espaço ' ', depois moves o cursor para a proxima posição indicada pela seta (se a actual é 1, a proxima é 2, e sucessivamente), e finalmente escreves nessa posição a seta '>' que indica a opção escolhida. Outra coisa que recomendo. Como vais usar muitas vezes o conjunto GotoXY(x,y);Write(z);, sugiro-te que cries um procedimento que aceite 3 parametros, 1 do tipo string e 2 do tipo byte. La dentro, metes um GotoXY (usando os parametros do tipo Byte), e depois o Write, usando o restante parametro. Ex.: procedure WriteXY(Text:String; X,Y:Byte); begin GotoXY(x,y); Write(Text); end; Assim, em vez de usares o conjunto: GotoXY(5,linha); Write(','); ... basta-te escrever: WriteXY(',',5,linha); Dúvidas? "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
pedromiguelfaria Posted October 30, 2013 at 03:26 PM Author Report #531194 Posted October 30, 2013 at 03:26 PM Desde já um grande obrigado pela tua ajuda, contudo eu não sou um grande expert nisto, e tem coisas ai que eu não percebi bem o que elas fazem, para que servem, e como funcionam. como por exemplo aquele procedure que colocas te. eu sei o que é um procedure, não entendi foi o writeXY nem o que ele faz.
pwseo Posted October 30, 2013 at 03:48 PM Report #531196 Posted October 30, 2013 at 03:48 PM pedromiguelfaria, Quais são os teus conhecimentos da linguagem Pascal? Parece-me inútil progredirmos esta thread sem sabermos a resposta a esta pergunta. De qualquer modo, se leres o conteúdo do procedimento writexy facilmente deduzes qual é a sua função...
nunopicado Posted October 30, 2013 at 04:02 PM Report #531200 Posted October 30, 2013 at 04:02 PM (edited) como por exemplo aquele procedure que colocas te. eu sei o que é um procedure, não entendi foi o writeXY nem o que ele faz. Aquele procedure não é obrigatório. No entanto, poupa-te de estar sempre a escrever GotoXY antes de cada Write. Com ele, numa só instrução, posicionas o cursor e escreves o texto. Mas responde à questão que o Pedro te colocou, pois será mais fácil depois direccionar correctamente a ajuda para o teu nível de conhecimento. Indica-nos em linhas gerais, o quê que já aprendeste a fazer em Pascal. Edited October 30, 2013 at 04:02 PM by nunopicado "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
pedromiguelfaria Posted October 30, 2013 at 04:21 PM Author Report #531202 Posted October 30, 2013 at 04:21 PM sei um pouco mais que o básico. conheço os ciclos If, repeat, Case, For. conheço os gotoxy, mudar cores, etc. Conheço os procedures mas nunca os utilizei, demos isso relativamente a dois dias na aula. Relativamente ao jogo da glória, eu tenho de o entregar ainda hoje, decidi fazer um pouco mais simples mas funcional para apresentar na aula. Contudo, gostaria de poder tornar o programa mais complexo, e da maneira que o tinha idealizado, se poderem continuar a ajudar me e a dar me algumas dicas, agradecia
pwseo Posted October 30, 2013 at 04:27 PM Report #531203 Posted October 30, 2013 at 04:27 PM (edited) O básico é, a meu ver: Tipos de dados simples Variáveis Condições Ciclos Procedimentos e funções E digo isto de uma forma genérica, ou seja, não chega simplesmente conhecer alguns procedimentos específicos (ex.: gotoxy e writeln), é preciso saber criar procedimentos e funções novos. Se não te sentes à vontade nesse último ponto, então tens 2 soluções: aprender procedimentos (como criar, como usar) ou não os utilizas no teu código (ou seja, ignoras a sugestão do Nuno, caso contrário não saberás defender o teu código se alguém te questionar). De qualquer modo, o Nuno explicou muito bem a sugestão que deu, pelo que se compreenderes a justificação, poderás de facto incluir esse código no teu programa, sem medo. Relativamente ao problema específico de mostrares uma lista de símbolos e deixares o utilizador utilizar as setas... Não seria mais adequado utilizares uma solução mais simples para já? (visto não teres ainda um domínio da linguagem). Algo assim: Escolha o símbolo: 1) & 2) % 3) $ 4) # Com uma escolha adequada de cores (números a cinza e símbolos a branco, bold) podes criar um interface intuitivo sem necessidade de te preocupares com a leitura das teclas de direcção, e a própria construção em código do aspecto do menu dos símbolos... EDIT: Vi agora que tens que entregar isso hoje. Se é o caso, e se o código que tens já funciona, faz cópias de segurança! Depois podes pensar em melhorar o que já tens 🙂 Edited October 30, 2013 at 04:32 PM by pwseo 1 Report
nunopicado Posted October 30, 2013 at 04:29 PM Report #531204 Posted October 30, 2013 at 04:29 PM (edited) Contudo, gostaria de poder tornar o programa mais complexo, e da maneira que o tinha idealizado, se poderem continuar a ajudar me e a dar me algumas dicas, agradecia Se há coisa que o pessoal aqui gosta é malta com vontade de aprender. 😉 Então, como o teu professor te deve ter dito, um procedimento é um bloco de código, que poderás repetir quantas vezes quiseres. É extremamente útil por vários motivos, mas digo-te já os 3 principais: - Cansa menos: Em vez de estares sempre a repetir um bloco de n linhas, repetes apenas uma, que é a chamada ao procedimento. - Organização: Ao estar reunido um bloco de código que tem um objectivo definido, irá tornar-se mais fácil para ti organizares-te, sabendo que "o código que faz isto, esta aqui" em vez de teres de dizer "o código que faz isto está aqui, e ali, e acoli, e acolá..." - Correcção de erros: Se te enganares num bloco de código, e ele estiver num procedimento, só terás de alterar o procedimento para corrigir esse bloco em todo o programa. Se em vez de procedimentos fores fazendo copy/paste, terás de corrigir o engano em todos os lados onde copiaste o código. Na prática: Ao colocar o GotoXY e o Write dentro do procedimento, a que chamei carinhosamente WriteXY, poderás numa só instrução escrever um determinado texto (parametro Text:String) na posição desejada (parâmetros X e Y). Edited October 30, 2013 at 04:32 PM by nunopicado "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
pedromiguelfaria Posted October 30, 2013 at 04:52 PM Author Report #531206 Posted October 30, 2013 at 04:52 PM O pessoal é incrível aqui, obrigado pela vossa ajuda, eu vou tentar melhorar o programa com as sugestões que me deram, e tentar aplicar essas dicas que foram dadas. Quando surgirem duvidas eu posto aqui, e quando finalizar o programa eu mando para receber um feedback da vossa parte Obrigado mais uma vez
nunopicado Posted October 30, 2013 at 04:55 PM Report #531208 Posted October 30, 2013 at 04:55 PM (edited) O pessoal é incrível aqui, obrigado pela vossa ajuda, eu vou tentar melhorar o programa com as sugestões que me deram, e tentar aplicar essas dicas que foram dadas. Quando surgirem duvidas eu posto aqui, e quando finalizar o programa eu mando para receber um feedback da vossa parte Das dicas que andam lá em cima, é natural que tenhas dificuldades em algumas. Se assim for, diz o que te causa confusão, que alguém te explicará. E bom trabalho... Edited October 30, 2013 at 04:56 PM by nunopicado "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
thoga31 Posted October 30, 2013 at 05:03 PM Report #531209 Posted October 30, 2013 at 05:03 PM Acho interessante darem cores e gotoXY antes mesmo de procedimentos e funções. É grave, IMO. Mesmo que não os utilizes neste teu programa, aconselho-te a, logo após enviares o código ao professor, estudares os procedimentos e as funções. Pascal sem estas dois meninos não é Pascal, é apenas uma mera massa negra informe dispersa e perdida algures neste universo sem fim. Continua com o espírito de aprendizagem, e não hesites em esclarecer as tuas dúvidas, nós preferimos mil vezes ensinar a quem quer aprender do que ver pedidos de trabalho feito, que felizmente não é o caso (os meus parabéns, fazes parte daquela que é cada vez mais a minoria dos que vêm aqui e não despejam um enunciado sem mais nada, that's the spirit!). E não vale a pena acrescentar mais nada para já, o @nuno e o @pwseo já deram um empurrão. 1 Report Knowledge is free!
passarito Posted October 31, 2013 at 02:39 PM Report #531292 Posted October 31, 2013 at 02:39 PM (edited) Logo à noite, SE me lembrar, SE tiver tempo e SE conseguir vou proporcionar uma surpresa à muito prometida! 😉 Edited October 31, 2013 at 02:39 PM by passarito
thoga31 Posted October 31, 2013 at 04:38 PM Report #531314 Posted October 31, 2013 at 04:38 PM (edited) Logo à noite, SE me lembrar, SE tiver tempo e SE conseguir vou proporcionar uma surpresa à muito prometida! 😉 Tanto "se" 😛 LATE EDIT: é "há" e não "à" (realçado) 😄 Edited October 31, 2013 at 08:39 PM by thoga31 Knowledge is free!
passarito Posted October 31, 2013 at 10:33 PM Report #531357 Posted October 31, 2013 at 10:33 PM (edited) LATE EDIT: é "há" e não "à" (realçado) 😄 Tás com umas piadas do caraças..... lol Bom vamos lá. Joguinho da Gloria de 1995.. ou para aí assim! Não liguem aos créditos, o objectivo não era para eu ficar com os créditos... ehehehe Screenshot: https://www.dropbox.com/s/punnqa0gjs3gc35/Jogo_da_Gloria.png Versão 64 bits (também funciona em 32): https://www.dropbox.com/s/5vtl2d9g87z0bow/JGLO_X64.EXE Versão 32 Bits : https://www.dropbox.com/s/rsd5ee3w4sedu7i/JGLO_X86.EXE Have fun everybody! @Thoga: Isto era o que eu te tinha prometido à ou há (escolhe) 10 anos atrás @ pedromiguelfaria: só para poderes tirar umas ideias.... Edited October 31, 2013 at 11:03 PM by passarito
pwseo Posted October 31, 2013 at 10:35 PM Report #531359 Posted October 31, 2013 at 10:35 PM Só faltava mesmo era compilares isso para linux 😛 Caso contrário fico apenas com a screenshot lool
passarito Posted October 31, 2013 at 10:42 PM Report #531360 Posted October 31, 2013 at 10:42 PM Só faltava mesmo era compilares isso para linux 😛 Caso contrário fico apenas com a screenshot lool Linux, Android, Mac... Tenho aí as compilações. Não sei se numa diskette de baixa densidade transformada em alta quando lhe fiz o furito do lado direito para levar uns enormes 1.44Mb ou se num disco disco flexivel... Sim que eu já não uso a fita prefurada! 😄
I-NOZex Posted October 31, 2013 at 11:26 PM Report #531366 Posted October 31, 2013 at 11:26 PM so faltava um cursor off, de resto ta muito bem 😄 B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now