Vamos Programar? – Introdução à Programação #24
Desafio 2
O mundo está constantemente a evoluir: desde o mais pequeno inseto à espécie Humana. Dentro das palavras que mais ouvimos atualmente, incluímos “evolução”, “mudança”, “futuro”.
A tecnologia tem revolucionado o mundo das mais diversas formas: do mais simples aparelho para medir o tempo ao mais complexo acelerador de partículas. Se quer entrar no mundo da tecnologia e deixar a sua marca, pode começar aqui.
Este é o penúltimo artigo da saga "Introdução à Programação", onde encontra o último desafio final desta série: a criação de um jogo de batalha naval.
No jogo de Batalha Naval a construir são pedidas algumas metas diferentes relativamente às regras reais do jogo. Ora vejamos.
Regras Base
- Num tabuleiro de 5x9, cada utilizador (dos 2) deve colocar os seus 3 navios em três posições diferentes;
- Cada utilizador deve tentar aniquilar os navios do inimigo, colocando as coordenadas da posição a atirar;
- O primeiro utilizador a derrotar os navios adversários, ganha.
Objetivo 1
Construir um tabuleiro de 5 linhas por 9 colunas utilizando o sistema de arrays. Todas as posições do array devem ser do tipo inteiro. Por padrão, o valor de cada posição deve ser -1. Temos os seguintes valores:
- -1 - sem tiros naquele bloco (~)
- 0 - com tiros, mas não existiam navios (*)
- 1 - com tiros e com um navio destruído (X)
- 2 - existe um navio (~)
Objetivo 2
Devem existir dois modos: jogar contra o computador e jogar contra um amigo.
As diferenças entre os dois modos é que no primeiro, jogar contra um computador, este deve colocar os seus navios em locais aleatórios e fazer jogadas aleatórias.
Quando se joga com um amigo, deve-se ter em atenção o conteúdo que aparece na linha de comandos de forma a que o jogador A não veja as posições colocadas pelo jogador B.
Dicas
Para limpar o ecrã, não utilize as funções do sistema. Ao invés imprima uma boa quantidade de linhas novas no ecrã.
Se está a pensar em criar uma função que crie os tabuleiros, lembre-se que estas não podem retornar arrays, mas podem retornar apontadores. Pesquise sobre a função malloc.
A criação de apontadores para apontadores também poderá ser útil e é feita através do operador ** (duplo asterisco).
Atualização: A proposta de resolução pode ser encontrada aqui.
Mais uma vez, gostávamos de saber a sua opinião. Caso tenha alguma dúvida, pode sempre utilizar os comentários para colocar a questão. Caso o faça, pedimos que utilize a keyword [DUVIDA] no início do seu comentários.
Resoluções de exercícios. |
Esta saga |
Henrique Dias |
Mais episódios: [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13][12] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23][24] |
Este artigo tem mais de um ano
Boas…
Este é um bom desafio. Para a faculdade já fiz o jogo do galo com base de dados de users (com password) e também com Player vs Player e Player vs PC.
Este ano fiz um outro jogo mas para o microcontrolador 8051 da Intel que era jogado num LCD. Basicamente era um boneco que, no nível básico, apenas tinha que fugir de uma mina lançada aleatoriamente, e no nível avançado, adicionalmente ao básico, o jogador lançava uma bala para rebentar com a mina.
Foi engraçado mas trabalhoso!
Who the well cares?!
I do.
Deixa o José desabafar
Nice =D
penso que o segundo desafio de programação devia ser algo um pouco mais difícil sem se encontrar no mesmo patamar que o anterior (sinceramente fazer um computador a bombardear random é ridículo), um jogo como o minesweeper por exemplo, cuja a implementação poderia recorrer a recursividade para limpar as áreas do jogo sem minas seria muito mais desafiante.
Nada o impede de fazer uma Batalha Naval onde o computador tem inteligência para escolher se deve atacar o navio, ou não, dependendo de um modo de dificuldade inicialmente escolhido. Fica o desafio 🙂
O meu último programa em C foi no final de 2002: Um filtro para converter texto para impressoras Epson/IBM em PostScript. Gastei horas após o trabalho e fins de semana durante 4 meses, mas continua em utilização…
Excelente 🙂
em guerra c/
http://en.wikipedia.org/wiki/Regular_expression
“^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$”
in linux no ide any tool?
??
ide para quê? queres fazer um processador de expressões regulares é isso?
maquina (sevidor) A —->html—->maquina B
^|——–>html—-> maquinaC (broadcast c/ hub)
A—>B ok
A—>C faill no mem only 64Mb impossivel update. (linux2.4 + DotGNU).
A—>html–>wget http://……
Encoding encoding = Encoding.GetEncoding(charset);
reader = new StreamReader(InputFileName, encoding);
“””
string line;
string match= @”??????????”;
StreamReader sr = new StreamReader(InputFileName, encoding);
string input;
string pattern = @”??????????????” ; // ?????????????????????????
Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
while (sr.Peek() >= 0)
{
input = sr.ReadLine();
MatchCollection matches = rgx.Matches(input);
if (matches.Count > 0)
{
// Console.WriteLine(“{0} ({1} matches):” input, matches.Count);
foreach (Match match in matches)
Console.WriteLine(” ” + match.Value );
}
// Console.WriteLine(“….”+ pattern);
} “”
O obj. é extarir só os valoes “string match= @”??????????”; ” ex: valida 1 email “^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$” So que 1 operario não entede Regualar.Exp.
mas vai haver updates, de todas das forams TK, you.
Boss: http://www.plm.automation.siemens.com/en_us/
É o i7 ok, Microsoft Surface Pro 3
tk, for tip . thebinarysearchtree.
Bom dia Pessoal!!
Tem alguém por aqui que seja bom na linguagem C que possa me ajudar nesta questão?
Numa empresa trabalham até 50 analistas divididos em três grupos:
J(junior) – Atendem até 10 chamadas por mês
P(Pleno) – Atendem de 11 até 20 chamados por mês
S(Sênior) – Atendem mais de 20 chamados por mês
O junior recebe um salário de R$ 700 e não recebe comissão por produção
O pleno recebe R$ 1000 e mais 3% do salário do junior por chamado acima de 16
O Sênior recebe R$ 2000 mais 3% do salário do pleno por chamado acima de 30.
Faça um algoritmo que gerencie os funcionários (CRUD)
por meio de um menu. Campos dos funcionários:
número, nome, número de chamados atendidos por ele no mês.
Crie itens no menu pafa visualizar os pontos abaixo:
– O salário de cada funcionários e sua classe (apresente na tela)
– O Total da folha mensal de pagamento da empresa
– O número total de chamados atendidos por mês
– A média de chamados por cada grupo
– O número e a classe do funcionário de menor salário.
Desde já agradeço, sou leigo ainda, Obrigado