Ir para conteúdo

Posts Recomendados

Olá pessoal, sou programador nível intermediário, faço Ciência da Computação na UEL, porém sou novo no fórum....

Gostaria de ter uma ideia do conhecimento dos usuários que frequentam a área de programação e tive a ideia de criar um tópico para que cada usuário que "manje" de programação, faça um jogo e poste-o aqui.

 

Porque VisualG?

 

R:Bom o visualg, para ingressantes na área de programação que não possuem base e não faziam ideia do que significava uma linguagem de programação é uma ótima linguagem para aprender

 

Dicas:Para você que vai participar, utilize vetores, matrizes, laços de iterações, condições, procedimentos, funções, variáveis e sempre, sempre comentando seu código e edentando ele.

 

OBS:Use sua criatividade, você pode fazer até mesmo um rpg.

Bom trabalho!

 

 

 

Vejam alguns exemplos de sources existentes na internet:

 

 

 

Jogo da Forca - Edilson Spalaor

 

 

algoritmo "Jogo da Forca"
// Autor : Edilson Spalaor
// Data : 3/3/2011 à 04/03/2011
var
palavra:vetor[0..2] de caractere
elemento:vetor[1..20] de caractere
posicao:vetor[1..3] de inteiro
restante:vetor[1..3] de caractere
qtdrestante:vetor[1..2] de inteiro
acao:vetor[1..2] de caractere
info:caracter
tentativas,chances:inteiro
escolhida,letra:caractere
aleat,qtdcaracteres,i,pontos,pontosperdidos:inteiro
inicio
palavra[0]<-"oftalmologia"
palavra[1]<-"elemento"
palavra[2]<-"batata"
aleat<- RandI(3)
escolhida<-palavra[aleat]
qtdcaracteres<-compr (escolhida)
chances<-15
para i de 1 ate qtdcaracteres faca
elemento<-"_ "
fimpara
enquanto (pontos<qtdcaracteres) e (tentativas<chances) faca
limpatela
escreval("":35,"A FORCA")
escreval("")
escreva("Palavra: ")
para i de 1 ate qtdcaracteres faca
escreva("":1,Maiusc (elemento) )
fimpara
escreval("")
escreva("Tente uma letra: ")
tentativas<-tentativas+1
leia(letra)
letra<-Minusc (letra)
acao[1]<-"on"
acao[2]<-"on"
para i de 1 ate qtdcaracteres faca
se (letra = (Copia (escolhida ; i, 1))) e (acao[1]="on") entao
acao[1]<-"off"
posicao[1]<-(Pos (letra, escolhida))
se (elemento[posicao[1]]="_ ") entao
elemento[posicao[1]]<-letra
pontos<-pontos+1
fimse
restante[1]<-(Copia (escolhida ; posicao[1]+1, qtdcaracteres-posicao[1]) )
qtdrestante[1]<-compr (restante[1])
para i de 1 ate qtdrestante[1] faca
se (letra = (Copia (restante[1] ; i, 1) )) e (acao[2]="on") entao
acao[2]<-"off"
posicao[2]<-(Pos (letra, restante[1]))
se (elemento[posicao[1]+posicao[2]]="_ ") entao
elemento[posicao[1]+posicao[2]]<-letra
pontos<-pontos+1
fimse
fimse
fimpara
restante[2]<-(Copia (escolhida ; posicao[1]+posicao[2]+1, qtdcaracteres-posicao[2]) )
qtdrestante[2]<-compr (restante[2])
para i de 1 ate qtdrestante[2] faca
se letra = (Copia (restante[2] ; i, 1) ) entao
posicao[3]<-(Pos (letra, restante[2]))
se (elemento[posicao[1]+posicao[2]+posicao[3]]="_ ") entao
elemento[posicao[1]+posicao[2]+posicao[3]]<-letra
pontos<-pontos+1
fimse
fimse
fimpara
fimse
fimpara
fimenquanto
limpatela
escrevaL("":35,"A FORCA")
escreval("")
escreva("Palavra: ")
para i de 1 ate qtdcaracteres faca
escreva("":1,Maiusc (elemento) )
fimpara
se tentativas<chances entao
escreval("")
escreval("Parabens!Você acertou!")
senao
escreval("")
escreval("")
escreval("Você excedeu o número de tentativas! =(")
fimse
escreval("")
escrevaL("FIM DO JOGO")
escreval("")
fimalgoritmo

 

 

 

 

 

 

 

 

 

 

Jogo da Forca - Thiago Aguiar

 

 

algoritmo "Jogo da Forca"

// Autor : Thiago Aguiar
// Data : 12/9/2009

var
frases,respostas: vetor [0..9] de caractere
tamanho
,ind,pergunta,erros,qtd: inteiro
letra
,achou,novojogo,opcao,chute,sexo: caractere
encontrou
: vetor [1..20] de caractere
resposta
: vetor [0..20] de caractere

//Inicio dos Procedimentos
Procedimento "limpa"
inicio
para ind
:= 1 ate tamanho faca
encontrou
[ind]<- "_ "
fimpara
fimprocedimento



Procedimento "inicializa"
inicio
limpatela
erros
<-0
pergunta<- randi(10)
resposta[0]:= respostas[pergunta]
tamanho <- compr(resposta[0])
limpa
novojogo
<- "S"
fimprocedimento


Procedimento "novo_jogo"
inicio
escreval
(" ")
escreva ("Deseja jogar um novo jogo? im ou [N]ão? ")
leia(novojogo)
se novojogo = "S" então
inicializa
senao
escreval
("Pressione ESC para encerrar o jogo.")
fimse
fimprocedimento



Procedimento "fim_de_jogo"
inicio
escreval
("FIM DE JOGO, VOCÊ PERDEU!!")
novo_jogo
fimprocedimento


procedimento
"desenha"
inicio
se erros
= 1 então
escreval
(" ( ) ")
fimse

se erros
= 2 então
escreval
(" ( ) ")
escreval(" _|_ ")
fimse

se erros
= 3 então
escreval
(" ( ) ")
escreval(" _|_ ")
escreval(" | ")
fimse

se erros
= 4 então
se sexo
= "F" então
escreval
(" ________ ")
escreval(" | | ")
escreval(" | mm|mm ")
escreval(" | m(º_º)m ")
escreval(" | mm_Y_mm ")
escreval(" | | ")
escreval(" | / \ ")
escreval(" | ")
escreval(" | ")
escreval(" _______|_______ ")
fim_de_jogo
senao
escreval
(" ________ ")
escreval(" | | ")
escreval(" | | ")
escreval(" | (º_º) ")
escreval(" | _Y_ ")
escreval(" | | ")
escreval(" | / \ ")
escreval(" | ")
escreval(" | ")
escreval(" _______|_______ ")
fim_de_jogo
fimse
fimse
fimprocedimento

procedimento
"sair"
inicio
fimalgoritmo
fimprocedimento


procedimento
"adaptacao"
inicio
se pergunta
= 0 então
resposta
[0]<- "FLAMENGO"
resposta[1]<- "F"
resposta[2]<- "L"
resposta[3]<- "A"
resposta[4]<- "M"
resposta[5]<- "E"
resposta[6]<- "N"
resposta[7]<- "G"
resposta[8]<- "O"
fimse

se pergunta
= 1 então
resposta
[0]<- "FLUMINENSE"
resposta[1]<- "F"
resposta[2]<- "L"
resposta[3]<- "U"
resposta[4]<- "M"
resposta[5]<- "I"
resposta[6]<- "N"
resposta[7]<- "E"
resposta[8]<- "N"
resposta[9]<- "S"
resposta[10]<- "E"
fimse

se pergunta
= 2 então
resposta
[0]<- "PALMEIRAS"
resposta[1]<- "P"
resposta[2]<- "A"
resposta[3]<- "L"
resposta[4]<- "M"
resposta[5]<- "E"
resposta[6]<- "I"
resposta[7]<- "R"
resposta[8]<- "A"
resposta[9]<- "S"
fimse

se pergunta
= 3 então
resposta
[0]<- "CORINTHIAS"
resposta[1]<- "C"
resposta[2]<- "O"
resposta[3]<- "R"
resposta[4]<- "I"
resposta[5]<- "N"
resposta[6]<- "T"
resposta[7]<- "H"
resposta[8]<- "I"
resposta[9]<- "A"
resposta[10]<- "S"
fimse

se pergunta
= 4 então
resposta
[0]<- "CRUZEIRO"
resposta[1]<- "C"
resposta[2]<- "R"
resposta[3]<- "U"
resposta[4]<- "Z"
resposta[5]<- "E"
resposta[6]<- "I"
resposta[7]<- "R"
resposta[8]<- "O"
fimse

se pergunta
= 5 então
resposta
[0]<- "IPATINGA"
resposta[1]<- "I"
resposta[2]<- "P"
resposta[3]<- "A"
resposta[4]<- "T"
resposta[5]<- "I"
resposta[6]<- "N"
resposta[7]<- "G"
resposta[8]<- "A"
fimse

se pergunta
= 6 então
resposta
[0]<- "SPORT"
resposta[1]<- "S"
resposta[2]<- "P"
resposta[3]<- "O"
resposta[4]<- "R"
resposta[5]<- "T"
fimse

se pergunta
= 7 então
resposta
[0]<- "NAUTICO"
resposta[1]<- "N"
resposta[2]<- "A"
resposta[3]<- "U"
resposta[4]<- "T"
resposta[5]<- "I"
resposta[6]<- "C"
resposta[7]<- "O"
fimse

se pergunta
= 8 então
resposta
[0]<- "GREMIO"
resposta[1]<- "G"
resposta[2]<- "R"
resposta[3]<- "E"
resposta[4]<- "M"
resposta[5]<- "I"
resposta[6]<- "O"
fimse

se pergunta
= 9 então
resposta
[0]<- "INTERNACIONAL"
resposta[1]<- "I"
resposta[2]<- "N"
resposta[3]<- "T"
resposta[4]<- "E"
resposta[5]<- "R"
resposta[6]<- "N"
resposta[7]<- "A"
resposta[8]<- "C"
resposta[9]<- "I"
resposta[10]<- "O"
resposta[11]<- "N"
resposta[12]<- "A"
resposta[13]<- "L"
fimse
fimprocedimento

inicio
escreva
("Você é do sexo [M]asculino ou [F]eminino? ")
leia(sexo)
achou<- "N"
novojogo<- "S"

frases[0]:="É UM TIME DE FUTEBOL DO RIO DE JANEIRO"
frases[1]:="É UM TIME DE FUTEBOL DO RIO DE JANEIRO"
frases[2]:="É UM TIME DE FUTEBOL DE SÃO PAULO"
frases[3]:="É UM TIME DE FUTEBOL DE SÃO PAULO"
frases[4]:="É UM TIME DE FUTEBOL DE MINAS GERAIS"
frases[5]:="É UM TIME DE FUTEBOL DE MINAS GERAIS"
frases[6]:="É UM TIME DE FUTEBOL DE PERNAMBUCO"
frases[7]:="É UM TIME DE FUTEBOL DE PERNAMBUCO"
frases[8]:="É UM TIME DE FUTEBOL DO RIO GRANDE DO SUL"
frases[9]:="É UM TIME DE FUTEBOL DO RIO GRANDE DO SUL"

respostas[0]:="FLAMENGO"
respostas[1]:="FLUMINENSE"
respostas[2]:="PALMEIRAS"
respostas[3]:="CORINTHIAS"
respostas[4]:="CRUZEIRO"
respostas[5]:="IPATINGA"
respostas[6]:="SPORT"
respostas[7]:="NAUTICO"
respostas[8]:="GREMIO"
respostas[9]:="INTERNACIONAL"
inicializa
repita
se novojogo
= "S" então
adaptacao
limpatela
escreval
("Jogo da Forca V1.0")
escreval(frases[pergunta])
se erros > 0 então
desenha
fimse
para ind
:= 1 ate tamanho faca
escreva
(encontrou[ind])
fimpara
escreval
(" ")
escreval(" ")
escreval("[1] Quero chutar uma letra")
escreval("[2] Quero chutar a palavra")
escreval("[3] Sair")
escreva("A opção escolhida é: ")
leia(opcao)
se opcao = "2" então
escreva
("Digite a palavra: ")
leia(chute)
se resposta[0] = chute então
escreval
("Parabens, você acertou!")
novo_jogo
senao
escreval
("Infelizmente, você errou!")
erros<- 4
desenha
fimse
fimse
se opcao
= "3" então
sair
fimse
se opcao
= "1" então
escreva
("Digite uma letra: ")
leia(letra)
para ind:= 1 ate tamanho faca
se letra
= resposta[ind] então
achou
<- "S"
encontrou[ind]<- letra
qtd
<- qtd+1
se tamanho = qtd então
escreval
(resposta[0])
escreval("Parabéns, você acertou!")
novo_jogo
fimse
fimse
fimpara
fimse
se achou
= "N" então
erros
<- erros+1
desenha
fimse
achou
<- "N"
fimse
se novojogo
= "N" então
sair
fimse
fimrepita ate novojogo
= "N"
fimalgoritmo

 

 

 

 

 

 

 

 

 

 

 

 

Jogo da Velha

 

 

  1. var
  2. nome:vetor[1..2] de caractere
v:vetor[1..3,1..3]de caractere
ctr:caractere
i,j,cont1,cont2,auxc,auxl,controd:inteiro
inicio
escreval (" _|_|_ ***********************")
escreval (" _|_|_ **** JOGO DA VELHA ****")
escreval (" | | ***********************")
escreval
para i de 1 ate 2 faca
escreval ("Digite o Nome do",i,"° Jogador")
leia (nome)
fimpara
escreval ("********************************")
escreval ("* ",nome[1]," Jogador 1 ==> [X] *")
escreval ("* ",nome[2]," Jogador 2 ==> [O] *")
escreval ("********************************")
escreval
escreval ("Efetuando Sorteio do 1° Jogador que irá jogar")
i<-0
repita
para i de 1 ate 3 faca
para j de 1 ate 3 faca
v[i,j]<-"¨"
fimpara
fimpara
i<-0
enquanto (i<1)faca
i<-randi(3)
se (i=0) entao
i<-randi(3)
fimse
fimenquanto
se (i=1) entao
escreval ("*",nome[1]," Jogador 1 Começa *")
senao
escreval ("*",nome[2]," Jogador 2 Começa *")
fimse
escreval (" | | ")
escreval (" 1,1 | 1,2 | 1,3 ")
escreval (" | | ")
escreval (" ___________|__________|__________ ")
escreval (" | | ")
escreval (" 2,1 | 2,2 | 2,3 ")
escreval (" | | ")
escreval (" ___________|__________|__________ ")
escreval (" | | ")
escreval (" 3,1 | 3,2 | 3,3 ")
escreval (" | | ")
escreval (" | | ")
escreval
repita
escreval ("Jogador ",i," Insira a Coordenada desejada [Linha depois a Coluna embaixo]")
leia (auxl,auxc)
se (v[auxl,auxc]="X") ou (v[auxl,auxc]="O") entao
escreval ("Este Lugar já esta sendo usado <=============")
escreval ("Digite Uma Posição Vazia <=================")
senao
se (i=1)entao
v[auxl,auxc]<-"X"
i<-i+1
controd<-controd+1
senao
se (i=2) entao
v[auxl,auxc]<-"O"
i<-1
controd<-controd+1
fimse
fimse
fimse
escreval (" | | ")
escreval (" ",v[1,1]," | ",v[1,2]," | ",v[1,3]," ")
escreval (" | | ")
escreval (" ___________|__________|__________ ")
escreval (" | | ")
escreval (" ",v[2,1]," | ",v[2,2]," | ",v[2,3]," ")
escreval (" | | ")
escreval (" ___________|__________|__________ ")
escreval (" | | ")
escreval (" ",v[3,1]," | ",v[3,2]," | ",v[3,3]," ")
escreval (" | | ")
escreval (" | | ")
escreval
escreval ("PLACAR PARCIAL")
escreval (nome[1]," ===> ",cont1)
escreval (nome[2]," ===> ",cont2)
escreval ("O PLACAR É Atualizado no fim da rodada")
escreval
se (v[1,1]=v[2,2]) e (v[2,2]=v[3,3]) entao
se (v[1,1]="x") entao
escreval ("Jogador 1 Venceu")
escreval (nome[1]," Parabens")
cont1<-cont1+1
controd<-9
senao
se (v[1,1]="O") entao
escreval ("Jogador 2 Venceu")
escreval (nome[2]," Parabens")
cont2<-cont2+1
controd<-9
fimse
fimse
senao
se (v[1,3]=v[2,2]) e (v[2,2]=v[3,1]) entao
se (v[1,3]="x") entao
escreval ("Jogador 1 Venceu")
escreval (nome[1]," Parabens")
cont1<-cont1+1
controd<-9
senao
se (v[1,3]="O") entao
escreval ("Jogador 2 Venceu")
escreval (nome[2]," Parabens")
cont2<-cont2+1
controd<-9
fimse
fimse
senao
se (v[1,1]=v[1,2]) e (v[1,2]=v[1,3]) entao
se (v[1,1]="x") entao
escreval ("Jogador 1 Venceu")
escreval (nome[1]," Parabens")
cont1<-cont1+1
controd<-9
senao
se (v[1,1]="O") entao
escreval ("Jogador 2 Venceu")
escreval (nome[2]," Parabens")
cont2<-cont2+1
controd<-9
fimse
fimse
senao
se (v[2,1]=v[2,2]) e (v[2,2]=v[2,3]) entao
se (v[2,1]="x") entao
escreval ("Jogador 1 Venceu")
escreval (nome[1]," Parabens")
cont1<-cont1+1
controd<-9
senao
se (v[2,1]="O") entao
escreval ("Jogador 2 Venceu")
escreval (nome[2]," Parabens")
cont2<-cont2+1
controd<-9
fimse
fimse
senao
se (v[3,1]=v[3,2]) e (v[3,2]=v[3,3]) entao
se (v[3,1]="x") entao
escreval ("Jogador 1 Venceu")
escreval (nome[1]," Parabens")
cont1<-cont1+1
controd<-9
senao
se (v[3,1]="O") entao
escreval ("Jogador 2 Venceu")
escreval (nome[2]," Parabens")
cont2<-cont2+1
controd<-9
fimse
fimse
senao
se (v[1,1]=v[2,1]) e (v[2,1]=v[3,1]) entao
se (v[1,1]="x") entao
escreval ("Jogador 1 Venceu")
escreval (nome[1]," Parabens")
cont1<-cont1+1
controd<-9
senao
se (v[1,1]="O") entao
escreval ("Jogador 2 Venceu")
escreval (nome[2]," Parabens")
cont2<-cont2+1
controd<-9
fimse
fimse
senao
se (v[1,2]=v[2,2]) e (v[2,2]=v[3,2]) entao
se (v[1,2]="x") entao
escreval ("Jogador 1 Venceu")
escreval (nome[1]," Parabens")
cont1<-cont1+1
controd<-9
senao
se (v[1,2]="O") entao
escreval ("Jogador 2 Venceu")
escreval (nome[2]," Parabens")
cont2<-cont2+1
controd<-9
fimse
fimse
senao
se (v[1,3]=v[2,3]) e (v[2,3]=v[3,3]) entao
se (v[1,3]="x") entao
escreval ("Jogador 1 Venceu")
escreval (nome[1]," Parabens")
cont1<-cont1+1
senao
se (v[1,3]="O") entao
escreval ("Jogador 2 Venceu")
escreval (nome[2]," Parabens")
cont2<-cont2+1
controd<-9
fimse
fimse
senao
se (controd=9) entao
escreval ("IXAAAAAAAAA DEU VELHAAAAAAAAAAAAAA")
fimse
fimse
fimse
fimse
fimse
fimse
fimse
fimse
fimse
ate (controd=9)
escreval ("Deseja Jogar Novamente ,[n]?")
leia (ctr)
ate (ctr="n")
limpatela
escreval ("PLACAR FINAL")
escreval (nome[1]," ===> ",cont1)
escreval (nome[2]," ===> ",cont2)
escreval ("Obrigado Por ter Jogado Velha's Gaming")
fimalgoritmo

 

 

Link para o comentário
https://xtibia.com/forum/topic/231317-visual-g-gamming/
Compartilhar em outros sites

É bem util pra quem tá começando em programação,principalmente por ser em uma linguagem baseada em "Portugol",porém mesmo sendo útil para iniciantes, ainda prefiro Pascal pois já te ensina a se preparar para outras linguagens como Java,C,C++ e etc..

 

 

Abrç.

Link para o comentário
https://xtibia.com/forum/topic/231317-visual-g-gamming/#findComment-1633429
Compartilhar em outros sites

É bem util pra quem tá começando em programação,principalmente por ser em uma linguagem baseada em "Portugol",porém mesmo sendo útil para iniciantes, ainda prefiro Pascal pois já te ensina a se preparar para outras linguagens como Java,C,C++ e etc..

 

 

Abrç.

De certa forma concordo com você, porém para usuários que não possuem base nenhuma e onde essa maioria ainda nao domina o inglês, uma linguagem em portugês pode facilitar a compreensão da lógica, ponto mais importante para se tornar um programador, pois a preparação para linguagens de alto nível é sim necessária mas se o programador não tiver uma boa lógica não adianta estar preparado para seguir. Devido à isso a maioria das faculdades optam por ensinar primeiramente uma linguagem baseada em "Portugol"...

Abraços

Link para o comentário
https://xtibia.com/forum/topic/231317-visual-g-gamming/#findComment-1633821
Compartilhar em outros sites

Achei interessante o Visual G !

 

Você tem skype? se tiver me add ai kluivert.davi

é só para tirar algumas duvidas sobre o Visual G

Colega, não teria como eu tirar por mensagem privada ou aqui no tópico mesmo? Digo porque meus tempos vagos são poucos e aleatórios, eu trabalho... Mas se não tiver como eu te adiciono lá e quando der conversamos,

Abraços

Link para o comentário
https://xtibia.com/forum/topic/231317-visual-g-gamming/#findComment-1634237
Compartilhar em outros sites

 

Achei interessante o Visual G !

 

Você tem skype? se tiver me add ai kluivert.davi

é só para tirar algumas duvidas sobre o Visual G

Colega, não teria como eu tirar por mensagem privada ou aqui no tópico mesmo? Digo porque meus tempos vagos são poucos e aleatórios, eu trabalho... Mas se não tiver como eu te adiciono lá e quando der conversamos,

Abraços

 

 

Ok!

Link para o comentário
https://xtibia.com/forum/topic/231317-visual-g-gamming/#findComment-1634308
Compartilhar em outros sites

Bom, não conheço VisualG, mas aprendi um pouco de Lua e fui fazendo alguns jogos. No final, juntei tudo e criei meu "Salão de Jogos" =P

O legal é que cada joguinho foi pra reforçar uma coisa nova que eu aprendia e como foram feitos em momentos diferentes, dá pra ver um pouco de amadurecimento no modo de programar.

 

 

function STARTGAME_ADIVINHE()
	print(" - Adivinhe o numero - ")
	math.randomseed(os.time())

	function jogar()
		numero = 1 + (math.random(1000000000) % 100)
		print("Tente adivinhar o numero que estou pensando! Ele esta entre 1 e 100")
		tentativa = 1
		while true do
			input = io.read()
			if tonumber(input) == false or tonumber(input) == nil or tonumber(input) <= 0 or tonumber(input) > 100 then
				print("Palpite invalido. Digite um numero de 1 a 100.")
			elseif tonumber(input) > numero then
				print("Opa, o numero sorteado eh menor!")
				tentativa = tentativa + 1
			elseif tonumber(input) < numero then
				print("Tah esquentando, mas o numero sorteado eh maior")
				tentativa = tentativa + 1
			else
				print("Parabens, voce acertou!\nNumero de tentativas", tentativa)
				break
			end
		end
		print("Deseja jogar de novo?")
		input = io.read()
		if tostring(input) and tostring(input):lower() == "sim" then
			return jogar()
		else
			print("Fim de jogo\n")
			return true
		end
	end

	jogar()
	return true
end

function STARTGAME_FORCA()
	function isInTable(tab, value)
		for _, v in ipairs(tab) do
			if value == v then
				return _
			end
		end
		return false
	end

	function createTableFromString(str)
		local ret = {}
		for i = 1, str:len() do
			table.insert(ret, str:sub(i, i))
		end
		return ret
	end

	math.randomseed(os.time())
	quit = false

	while not quit do
		-- Palavras possíveis no sorteio
		local words = {{"aquario", "peixes vivem nele"}, {"oraculo", "preve o futuro"}, {"estatua", "figura imovel"}, {"circulo", "figura geometrica"}, {"arara", "animal"}, {"anel", "coloca no dedo"}}
		local rand = (1 + math.random(9999) % #words)
		-- Palavra sorteada
		local word = words[rand][1]
		local tentativas = 5
		print("\nJogo da forca! Voce tem " .. tentativas .. " tentativas restantes!\nA dica eh: " .. words[rand][2] .. ".\n")
		-- O que eh impresso na tela conforme o jogador joga
		local current_word = string.rep(" _",(word:len()))
		print(current_word)
		-- Contagem de palavras acertadas
		local count = 0
		-- Total de letras da palavra sorteada
		local total_letters = word:len()
		-- Tabela com as letras da palavra
		local word_table = createTableFromString(word)
		-- Letras que já foram usadas como palpite
		local used_letters = {}
		
		while not (count >= total_letters or tentativas == 0) do
			local letter = io.read()
			while letter:len() > 1 or not letter:byte() or letter:byte() < 97 or letter:byte() > 122 or isInTable(used_letters, letter) do
				if isInTable(used_letters, letter) then
					print("Opa, voce ja tentou essa letra antes. Por favor, tente outra.\nLetra(s) que voce ja tentou:\n" .. table.concat(used_letters, ", "))
				else
					print("Palpite incorreto. Somente letras minusculas do alfabeto sao palpites aceitaveis")
				end
				letter = io.read()			
			end
			local pos = isInTable(word_table, letter)
			table.insert(used_letters, letter)
			if pos then
				while isInTable(word_table, letter) do
					pos = isInTable(word_table, letter)
					local sub_pos = pos * 2
					word_table[pos] = false
					count = count + 1
					current_word = current_word:sub(1, (sub_pos - 1)) .. letter .. current_word:sub(sub_pos + 1)
				end
				print("Muito bem!")
				print(current_word)
			else
				tentativas = tentativas - 1
				print("Nao, nenhuma letra dessa. Voce tem " .. tentativas .. " tentativa(s) restante(s).")
				print(current_word)
			end
		end
		if count >= total_letters then
			print("Parabens! Voce acertou a palavra! Deseja jogar de novo?")
		else
			print("Ah, voce perdeu. A palavra era " .. word:upper() .. ". Quer jogar de novo?")
		end
		play_again = io.read()
		if play_again:lower() ~= "sim" then
			quit = true
			print("Ok, ate a proxima.")
		end
		print("\n")
	end
	return true
end

function STARTGAME_CONTAS()
	math.randomseed(os.time())
	function newRand(n1, n2)
		return (math.random(n1) % n2) + 1
	end

	local options = {"adicao", "subtracao", "multiplicacao"}
	local symbols = {"+", "-", "*"}

	function getMath()
		local number1 = newRand(33, 9)
		local number2 = newRand(505, 9)

		local math_string = tostring(number1) .. " " .. symbols[newRand(27, #symbols)] .. " " .. tostring(number2)
		local result = loadstring("return " ..math_string)()
		return math_string, result
	end
		
	local quit = false
	local time_to_finish = 30


	print("Bem vindo ao terminal de exercicios matematicos. Voce tera " .. time_to_finish .. " segundos para responder o maximo de contas que puder. Esta pronto?")
	ready = io.read()
	while not ((ready:lower()):find("sim") or (ready:lower()):find("pronto")) do
		print("Tudo bem, eu posso esperar. Diga-me quando estiver pronto.")
		ready = io.read()
	end

	while not quit do
		local count = 0	
		local start_time = os.clock()
		while os.clock() - start_time <= time_to_finish do
			local math_string, true_result = getMath()
			print("A conta que voce deve fazer eh: " .. math_string)
			result = io.read("*n")
			while not result do
				print("Resposta invalida. Por favor, digite um numero valido.")
			end
			if result ~= true_result then
				print("A resposta esta errada. O resultado eh " .. true_result)
			else
				print("Parabens, voce acertou!")
				count = count + 1
			end
		end
		print("\nVoce acertou " .. count .. " contas!\nDeseja jogar novamente?")
		while not play or not play:byte() do
			play = io.read()
		end
		if (play:lower()):find("sim") then
			print("Boa sorte!\n")
		else
			print("\nFim de jogo\n")
			quit = true
		end
	end
	return true
end

function STARTGAME_VELHA()
  math.randomseed(os.time())
  local str_ini = "   |   |   \n___|___|___\n   |   |   \n___|___|___\n   |   |   \n   |   |   "
  local pos = {2, 6, 10, 26, 30, 34, 50, 54, 58}
  local playsCount = 0
  local GAME_STATE = 0
  local str = str_ini
  local random = math.random

  local function markPos(mark, pos)
	str = str:sub(1, pos - 2) .. " " .. mark .. " " .. str:sub(pos + 2)
	return true
  end

  local function wait(time)
	local start = os.clock()
	repeat
	until os.clock() - start >= time
  end

  local function isPosMarked(pos)
	local tmp = str:sub(pos, pos)
	return tmp == "X" or tmp == "O" or false
  end
  
  local function getMarkFromPos(pos)
	  return str:sub(pos, pos)
  end
  
  local function getWinner()
	  local mark = ""
	  local start = 1
	  local winner = false
	  repeat
		  local count = 0
		  for i = start, start + 1 do
			  mark = getMarkFromPos(pos[i])
			  if mark == "X" or mark == "O" then
				  if getMarkFromPos(pos[i+1]) == mark then
					  count = count + 1
				  else
					  break
				  end
			  end
		  end
		  if count == 2 then
			  winner = mark
		  end
		  start = start + 3
	  until start > 7 or winner
	  local start = 1
	  
	  while not winner and start <= 3 do
		  local count = 0
		  for i = start, start + 3, 3 do
			  mark = getMarkFromPos(pos[i])
			  if mark == "X" or mark == "O" then
				  if getMarkFromPos(pos[i+3]) == mark then
					  count = count + 1
				  else
					  break
				  end
			  end
		  end
		  if count == 2 then
			  winner = mark
		  end
		  start = start + 1
	  end
	  
	  local count = 0
	  local mark = getMarkFromPos(pos[5])
	  local isMark = mark == "X" or mark == "O" or false
	  if isMark and getMarkFromPos(pos[1]) == mark and getMarkFromPos(pos[9]) == mark then
		  winner = mark
	  elseif isMark and getMarkFromPos(pos[3]) == mark and getMarkFromPos(pos[7]) == mark then
		  winner = mark
	  end
	  return winner
  end

  local function randomPlay()
	  local randomPos = 0
	  repeat
		  randomPos = pos[random(1, #pos)]
	  until not isPosMarked(randomPos)
	  markPos("X", randomPos)
	  print(str)
  end

  local function AIPlay()
	  local tmp_str = str
	  for i = 1, 9 do
		  local tmp_pos = pos[i]
		  if not isPosMarked(tmp_pos) then
			  markPos("X", tmp_pos)
			  if getWinner() then
				  print(str)
				  return true
			  else
				  str = tmp_str
			  end
		  end
	  end
	  for i = 1, 9 do
		  local tmp_pos = pos[i]
		  if not isPosMarked(tmp_pos) then
			  markPos("O", tmp_pos)
			  if getWinner() then
				  markPos("X", tmp_pos)
				  print(str)
				  return true
			  else
				  str = tmp_str
			  end
		  end
	  end
	  return randomPlay()
  end
	
  local function playerPlay()	
	  local play = false
	  print("Qual posicao voce quer marcar?")
	  repeat
		  local player_pos = io.read()
		  if player_pos and player_pos:byte() and tonumber(player_pos) and pos[tonumber(player_pos)] then
			  player_pos = tonumber(player_pos)
			  if not isPosMarked(pos[player_pos]) then
				  markPos("O", pos[player_pos])
				  play = true
			  else
				  print("Esta posicao ja esta marcada.")
			  end
		  else
			  print("Posicao inexistente.")
		  end
	  until play
	  print(str)
  end

  local function isGameOver()	
	  return playsCount >= 9
  end

  local function startGame()
	  print("Bem-vindo ao jogo da velha. Observe a numeracao das posicoes:")
	  for i = 1, #pos do
		  markPos(tostring(i), pos[i])
	  end
	  print(str .. "\n")
	  str = str_ini
	  wait(1)
	  print("Esta pronto para jogar? {sim/nao}")
	  repeat
		  local decision = io.read()
		  if not decision or not decision:byte() then
			  print("Tudo bem, eu espero voce decidir.")
		  elseif (decision:lower()):find("sim") or (decision:lower()):find("pronto") then
			  print("Ok, vamos la!")
			  GAME_STATE = 1
		  elseif (decision:lower()):find("nao") then
			  print("Ah. Me diga quando estiver pronto.")
		  else
			  print("Nao entendi.")
		  end
	  until GAME_STATE == 1
	  return true
  end



  startGame()

  local VELHA_QUIT = false

  while not VELHA_QUIT do
	  GAME_STATE = 1
	  str = str_ini
	  playsCount = 0
	  repeat
		  playerPlay()
		  playsCount = playsCount + 1
		  if getWinner() then
			  GAME_STATE = 2
			  break
		  elseif isGameOver() then
			  GAME_STATE = 3
			  break
		  end
		  wait(1)
		  AIPlay()
		  playsCount = playsCount + 1
		  if getWinner() then
			  GAME_STATE = 2
			  break
		  elseif isGameOver() then
			  GAME_STATE = 3
			  break
		  end
	  until GAME_STATE > 1
	  
	  if GAME_STATE == 2 then
		  if getWinner() == "X" then
			  print("Ah, voce perdeu!")
		  else
			  print("Parabens! Voce ganhou!")
		  end
	  else
		  print("Velha!")
	  end
	  print("Deseja {sair} ou {jogar} novamente?")
	  repeat
		  local decision = io.read()
		  if decision and decision:byte() then
			  if (decision:lower()):find("sair") then
				  VELHA_QUIT = true
				  print("Tchau!\n\n")
				  break
			  elseif (decision:lower()):find("jogar") then
				  GAME_STATE = 1
				  str = str_ini
				  print("Prepare-se!\n\n" .. str)
				  break
			  end
		  end
		  print("Nao entendi. {jogar}/{sair}")
	  until false
  end
  print("\n")
  return true
end

local games = {
	[1] = {"Adivinhe o Numero", func = STARTGAME_ADIVINHE},
	[2] = {"Jogo da Forca", func = STARTGAME_FORCA},
	[3] = {"Contas Matematicas", func = STARTGAME_CONTAS},
	[4] = {"Jogo da Velha", func = STARTGAME_VELHA},
}

function startGame(str)
	for i, info in pairs(games) do
		if str:find(info[1]:lower()) or tonumber(str) == i then
			local func = info.func
			return func()
		end
	end
	return false
end

MAIN_QUIT = false

while not MAIN_QUIT do
	print('Bem-vindo ao salao de jogos. Escolha um entre os jogos abaixo')
	local str = ""
	for i, info in ipairs(games) do
		str = str .. "["..i.."] - " .. info[1] .. "\n"
	end
	print(str)

	game = io.read()
	while not (game:byte() and startGame(game:lower())) do
		print("Nao entendi qual jogo voce quer.")
		game = io.read()
	end
	print("Voce quer {sair} ou jogar outro {jogo}?")
	DECISION = io.read()
	DECISION = DECISION:lower()
	while not DECISION:find("sair") and not DECISION:find("jogo") do
		print("Nao entendi. Voce quer {sair} ou jogar outro {jogo}?")
		DECISION = io.read()
	end
	if DECISION:find("sair") then
		MAIN_QUIT = true
		print("Ate a proxima, camarada.")
	end
	print("\n")
end

 

 

 

Agora tô tentando aprender C devagarzinho...

Link para o comentário
https://xtibia.com/forum/topic/231317-visual-g-gamming/#findComment-1635970
Compartilhar em outros sites

×
×
  • Criar Novo...