5
Introdução à Lógica e Programação
UFOP
44
Introdução à Lógica e Programação
UFOP
19
Introdução à Lógica e Programação
UFOP
1
Introdução à Lógica e Programação
UFOP
22
Introdução à Lógica e Programação
UFAL
35
Introdução à Lógica e Programação
UFAL
18
Introdução à Lógica e Programação
UFAL
1
Introdução à Lógica e Programação
UMG
33
Introdução à Lógica e Programação
UFAL
7
Introdução à Lógica e Programação
UFAL
Texto de pré-visualização
Universidade Federal de Ouro Preto UFOP Instituto de Ciˆencias Exatas e Biologicas ICEB Departamento de Computacao DECOM Disciplina Introducao a Programacao BCC201 Professores Puca Huachi Pablo Munhoz Trabalho Pratico Campo Minado Campo minado e um popular jogo de computador para um jogador Foi inventado por Robert Donner em 1989 e tem como objetivo revelar um campo de minas sem que alguma seja detonada Este jogo tem sido reescrito para as mais diversas plataformas sendo a sua versao mais popular a que vinha nativamente em edicoes do WindowsFonte httpsptwikipediaorgwikiCampo minado Figura 1 Exemplo do campo minado para windows 1 O jogo O Campo Minado e um jogo simples de memoria e raciocınio que consiste em um campo de quadrados O objetivo do jogo e revelar todos os quadrados vazios e com numeros evitando aqueles que escondem minas bombas Cada quadrado pode ser revelado clicando sobre ele Durante o jogo 4 situacoes podem acontecer o jogador seleciona uma posicao que contem uma mina O jogo acaba e todas as posicoes sao reveladas o jogador seleciona uma posicao com numero o numero e revelado indicando a quantidade de quadrados adjacentes que contˆem minas o jogador seleciona uma posicao vazia os espacos vazios em volta sao automaticamente revelados ou seja aqueles que nao contˆem minas ou numeros o jogador marca com uma bandeira uma posicao que acredita que possui uma mina nenhuma posicao e aberta e a posicao clicada e marcada com uma bandeira indicando uma mina Como jogar em modo texto O jogador pode revelar o que existe em um quadrado digitando a sua posicao linha e coluna respectivamente Introducao a Programacao BCC201 Pagina 1 de 5 versao 10 O numero que aparece no quadrado indica o numero total de bombas nos quatro quadrados que o cercam O jogador pode usar esse numero para ajudalo a deduzir se e seguro revelar um quadrado Quadrados vazios indicam que nao existem minas nos quadrados adjacentes ou seja nos 8 quadrados que o cercam Conforme o jogador vai revelando os quadrados apresente na tela o resultado da sua escolha O jogo termina quando todas as posicoes sao reveladas sendo que Se o jogador conseguir abrir todas posicoes exceto as minas ele ganha Se o jogador selecionar uma posicao com uma bomba ele perde O Trabalho Pratico Vocˆe deve implementar o jogo para um unico jogador em linguagem C Como nao e exigido o funcionamento dos cliques de mouse leiam os comandos do usuario pelo teclado A interface do jogo e livre porem o jogador deve ser capaz de entender o estado do jogo a cada jogada Para o jogo e necessario que seja feito um menu inicial com as seguintes opcoes 0 Sair Perguntar se deseja sair SimNao Se a resposta for nao deve voltar ao menu 1 Novo jogo padrao F Facil jogo 9x9 e 10 minas M Medio Jogo 15x15 e 25 minas D Difıcil Jogo 20x20 e 45 minas 2 Novo jogo personalizado Jogo com qualquer tamanho e qualquer quantidade de minas 3 Voltar para o jogo atual Continua o jogo de onde parou caso ja tenha comecado um jogo Caso contrario continua no menu 4 Carregar um jogo salvo Carrega um jogo salvo em um arquivo 5 Salvar o jogo atual Salva o jogo atual em arquivo O nome do arquivo deve ser solicitado 6 Mostrar Ranking Mostra o ranking salvo 7 Ajuda com as instrucoes de como jogar Ao comecar um jogo o jogador deve digitar um dos comandos a seguir ate finalizar o jogo ou voltar para o menu inicial lin col Posicao linha e coluna que deseja abrir m lin col Marcar a posicao linha e coluna com uma bandeira d lin col Desmarcar a posicao linha e coluna previamente marcada com uma ban deira desistir Mostra o jogo com todas as posicoes abertas Com este comando o jogador nao pode continuar a jogar e so pode voltar ao menu inicial voltar Volta para o menu inicial Introducao a Programacao BCC201 Pagina 2 de 5 versao 10 Importante seu programa deve proibir que o usuario execute comandos invalidos O usuario deve ser alertado com uma mensagem de erro caso digite um valor invalido Nos menus podem ser aceitas letras maiusculas ou minusculas O programa tambem deve detectar quando o jogador que ele venceu Alem disso vocˆe nao pode alterar os nomes dos comandos tao pouco os valores que devem ser digitadas nos menus Criando um novo jogo Se o usuario selecionar o jogo padrao deve ser solicitado o seu nome e o modo FMD Em seguida o jogo de iniciar e o tempo comecara a ser contado Caso o jogador selecione o jogo personalizado deve ser solicitado o nome as dimensao do tabuleiro linhas e colunas e quantidade de minas Em seguida iniciar o jogo Se a opcao for de comecar um jogo salvo deve ser solicitado o nome do arquivo e so depois continuar o jogo Observe que no arquivo do jogo tera alem do nome jogador o tempo que ele ja jogou Esse tempo de ser somado a jogada atual Caracterısticas do programa A interface nao precisa ser grafica ou sofisticada mas o jogador deve ser capaz de entender o estado do jogo a cada jogada Para implementar o jogo vocˆe pode utilizar qualquer funcao da biblioteca padrao alem de structs e alocacao dinˆamica O programa deve possuir um ranking com o nome dos jogadores que ganharem o jogo e sua classificacao A ordem de classificacao sera pelo tempo em ordem crescente O programa deve armazenar o ranking em um arquivo Nao utilize variaveis globais no programa Pode ser usado para definir constantes se necessario Faca o programa bem modular e com funcoes O main deve ser pequeno e organizado Podese utilizar passagem de parˆametros por valor ou referˆencia nas funcoes Coloque comentarios no programa e utilize identificadores que definam com clareza a funciona lidade das funcoes e das variaveis Para selecionar as posicoes aleatorias das minas utilize a funcao rand da biblioteca stdlibh Para medir o tempo utilize a biblioteca timeh Veja um exemplo no Moodle Lendo e salvando um jogo O arquivo com as informacoes do jogo deve ser em formato binario com as informacoes armazenadas como segue Em breve Introducao a Programacao BCC201 Pagina 3 de 5 versao 10 Lendo e salvando o ranking Um arquivo chamado recordestxt deve ser gravado com os 5 melhores tempos para cada nıvel do jogo Padrao e tambem os 5 melhores tempos para o jogo Personalizado No exemplo do arquivo abaixo a primeira linha contem o tipo de tabuleiro e tamanho se for o jogo padrao Padrao 9 e em seguida o numero de recordes ja gravados para esse tabuleiro 2 As proximas duas linhas contem o nome do jogador sem espacos e o tempo que ele conseguiu finalizar o jogo do tabuleiro padrao em segundos Apos isso e saltada uma linha e o novo tipo de tabuleiro e identificado Personalizado e o numero de recordes ja registrados aparece logo em seguida 5 As proximas 5 linhas contem o nome do jogador o tempo que ele conseguiu finalizar o jogo do tabuleiro personalizado em segundos o numero de linhas o numero de colunas e o numero de bombas do tabuleiro personalizado 1 Padrao 9 2 2 Jogador1 2500 3 Jogador2 5001 4 5 Padrao 15 0 6 7 Padrao 20 0 8 9 Personalizado 5 10 Tinky 124 30 50 2 11 Winky 386 30 50 5 12 Dipsy 1505 16 16 40 13 LaaLaa 2871 16 16 40 14 Po 10240 30 16 99 Avaliacao O problema deve ser resolvido por meio de um programa em C Inclua seu nome e numero de matrıcula como comentario em todos os arquivos c e h gerados Funcionamento adequado do programa Atendimento ao enunciado do trabalho Clareza do codigo que deve ser devidamente comentado e identado Utilizacao de funcoes e structs Utilizacao de alocacao dinˆamica Adequacao da estrutura do programa variaveis e comandos utilizados Apresentacao do trabalho Compilacao codigos que nao compilam serao zerados e warnings diminuirao a nota Utiliza remos o compilador GCC Nao serao aceitos trabalhos que caracterizem copia mesma estrutura e algumas pequenas mo dificacoes de outro Entrega Vocˆe devera entregar o codigo fonte se forem varios arquivos compactar em formato ZIP Introducao a Programacao BCC201 Pagina 4 de 5 versao 10 A entrega deve ser feita pelo Moodle ate as 23h59 do dia 31032025 As entrevistas serao feitas preferencialmente durante os horarios da aulas Exemplo de Execucao Vocˆe pode e deve customizar e melhorar as saıdas do programa A seguir segue um exemplo simples apenas para entendimento os dados digitados pelo usuario estao destacados em azul Exemplo 1 Em breve Introducao a Programacao BCC201 Pagina 5 de 5 versao 10
5
Introdução à Lógica e Programação
UFOP
44
Introdução à Lógica e Programação
UFOP
19
Introdução à Lógica e Programação
UFOP
1
Introdução à Lógica e Programação
UFOP
22
Introdução à Lógica e Programação
UFAL
35
Introdução à Lógica e Programação
UFAL
18
Introdução à Lógica e Programação
UFAL
1
Introdução à Lógica e Programação
UMG
33
Introdução à Lógica e Programação
UFAL
7
Introdução à Lógica e Programação
UFAL
Texto de pré-visualização
Universidade Federal de Ouro Preto UFOP Instituto de Ciˆencias Exatas e Biologicas ICEB Departamento de Computacao DECOM Disciplina Introducao a Programacao BCC201 Professores Puca Huachi Pablo Munhoz Trabalho Pratico Campo Minado Campo minado e um popular jogo de computador para um jogador Foi inventado por Robert Donner em 1989 e tem como objetivo revelar um campo de minas sem que alguma seja detonada Este jogo tem sido reescrito para as mais diversas plataformas sendo a sua versao mais popular a que vinha nativamente em edicoes do WindowsFonte httpsptwikipediaorgwikiCampo minado Figura 1 Exemplo do campo minado para windows 1 O jogo O Campo Minado e um jogo simples de memoria e raciocınio que consiste em um campo de quadrados O objetivo do jogo e revelar todos os quadrados vazios e com numeros evitando aqueles que escondem minas bombas Cada quadrado pode ser revelado clicando sobre ele Durante o jogo 4 situacoes podem acontecer o jogador seleciona uma posicao que contem uma mina O jogo acaba e todas as posicoes sao reveladas o jogador seleciona uma posicao com numero o numero e revelado indicando a quantidade de quadrados adjacentes que contˆem minas o jogador seleciona uma posicao vazia os espacos vazios em volta sao automaticamente revelados ou seja aqueles que nao contˆem minas ou numeros o jogador marca com uma bandeira uma posicao que acredita que possui uma mina nenhuma posicao e aberta e a posicao clicada e marcada com uma bandeira indicando uma mina Como jogar em modo texto O jogador pode revelar o que existe em um quadrado digitando a sua posicao linha e coluna respectivamente Introducao a Programacao BCC201 Pagina 1 de 5 versao 10 O numero que aparece no quadrado indica o numero total de bombas nos quatro quadrados que o cercam O jogador pode usar esse numero para ajudalo a deduzir se e seguro revelar um quadrado Quadrados vazios indicam que nao existem minas nos quadrados adjacentes ou seja nos 8 quadrados que o cercam Conforme o jogador vai revelando os quadrados apresente na tela o resultado da sua escolha O jogo termina quando todas as posicoes sao reveladas sendo que Se o jogador conseguir abrir todas posicoes exceto as minas ele ganha Se o jogador selecionar uma posicao com uma bomba ele perde O Trabalho Pratico Vocˆe deve implementar o jogo para um unico jogador em linguagem C Como nao e exigido o funcionamento dos cliques de mouse leiam os comandos do usuario pelo teclado A interface do jogo e livre porem o jogador deve ser capaz de entender o estado do jogo a cada jogada Para o jogo e necessario que seja feito um menu inicial com as seguintes opcoes 0 Sair Perguntar se deseja sair SimNao Se a resposta for nao deve voltar ao menu 1 Novo jogo padrao F Facil jogo 9x9 e 10 minas M Medio Jogo 15x15 e 25 minas D Difıcil Jogo 20x20 e 45 minas 2 Novo jogo personalizado Jogo com qualquer tamanho e qualquer quantidade de minas 3 Voltar para o jogo atual Continua o jogo de onde parou caso ja tenha comecado um jogo Caso contrario continua no menu 4 Carregar um jogo salvo Carrega um jogo salvo em um arquivo 5 Salvar o jogo atual Salva o jogo atual em arquivo O nome do arquivo deve ser solicitado 6 Mostrar Ranking Mostra o ranking salvo 7 Ajuda com as instrucoes de como jogar Ao comecar um jogo o jogador deve digitar um dos comandos a seguir ate finalizar o jogo ou voltar para o menu inicial lin col Posicao linha e coluna que deseja abrir m lin col Marcar a posicao linha e coluna com uma bandeira d lin col Desmarcar a posicao linha e coluna previamente marcada com uma ban deira desistir Mostra o jogo com todas as posicoes abertas Com este comando o jogador nao pode continuar a jogar e so pode voltar ao menu inicial voltar Volta para o menu inicial Introducao a Programacao BCC201 Pagina 2 de 5 versao 10 Importante seu programa deve proibir que o usuario execute comandos invalidos O usuario deve ser alertado com uma mensagem de erro caso digite um valor invalido Nos menus podem ser aceitas letras maiusculas ou minusculas O programa tambem deve detectar quando o jogador que ele venceu Alem disso vocˆe nao pode alterar os nomes dos comandos tao pouco os valores que devem ser digitadas nos menus Criando um novo jogo Se o usuario selecionar o jogo padrao deve ser solicitado o seu nome e o modo FMD Em seguida o jogo de iniciar e o tempo comecara a ser contado Caso o jogador selecione o jogo personalizado deve ser solicitado o nome as dimensao do tabuleiro linhas e colunas e quantidade de minas Em seguida iniciar o jogo Se a opcao for de comecar um jogo salvo deve ser solicitado o nome do arquivo e so depois continuar o jogo Observe que no arquivo do jogo tera alem do nome jogador o tempo que ele ja jogou Esse tempo de ser somado a jogada atual Caracterısticas do programa A interface nao precisa ser grafica ou sofisticada mas o jogador deve ser capaz de entender o estado do jogo a cada jogada Para implementar o jogo vocˆe pode utilizar qualquer funcao da biblioteca padrao alem de structs e alocacao dinˆamica O programa deve possuir um ranking com o nome dos jogadores que ganharem o jogo e sua classificacao A ordem de classificacao sera pelo tempo em ordem crescente O programa deve armazenar o ranking em um arquivo Nao utilize variaveis globais no programa Pode ser usado para definir constantes se necessario Faca o programa bem modular e com funcoes O main deve ser pequeno e organizado Podese utilizar passagem de parˆametros por valor ou referˆencia nas funcoes Coloque comentarios no programa e utilize identificadores que definam com clareza a funciona lidade das funcoes e das variaveis Para selecionar as posicoes aleatorias das minas utilize a funcao rand da biblioteca stdlibh Para medir o tempo utilize a biblioteca timeh Veja um exemplo no Moodle Lendo e salvando um jogo O arquivo com as informacoes do jogo deve ser em formato binario com as informacoes armazenadas como segue Em breve Introducao a Programacao BCC201 Pagina 3 de 5 versao 10 Lendo e salvando o ranking Um arquivo chamado recordestxt deve ser gravado com os 5 melhores tempos para cada nıvel do jogo Padrao e tambem os 5 melhores tempos para o jogo Personalizado No exemplo do arquivo abaixo a primeira linha contem o tipo de tabuleiro e tamanho se for o jogo padrao Padrao 9 e em seguida o numero de recordes ja gravados para esse tabuleiro 2 As proximas duas linhas contem o nome do jogador sem espacos e o tempo que ele conseguiu finalizar o jogo do tabuleiro padrao em segundos Apos isso e saltada uma linha e o novo tipo de tabuleiro e identificado Personalizado e o numero de recordes ja registrados aparece logo em seguida 5 As proximas 5 linhas contem o nome do jogador o tempo que ele conseguiu finalizar o jogo do tabuleiro personalizado em segundos o numero de linhas o numero de colunas e o numero de bombas do tabuleiro personalizado 1 Padrao 9 2 2 Jogador1 2500 3 Jogador2 5001 4 5 Padrao 15 0 6 7 Padrao 20 0 8 9 Personalizado 5 10 Tinky 124 30 50 2 11 Winky 386 30 50 5 12 Dipsy 1505 16 16 40 13 LaaLaa 2871 16 16 40 14 Po 10240 30 16 99 Avaliacao O problema deve ser resolvido por meio de um programa em C Inclua seu nome e numero de matrıcula como comentario em todos os arquivos c e h gerados Funcionamento adequado do programa Atendimento ao enunciado do trabalho Clareza do codigo que deve ser devidamente comentado e identado Utilizacao de funcoes e structs Utilizacao de alocacao dinˆamica Adequacao da estrutura do programa variaveis e comandos utilizados Apresentacao do trabalho Compilacao codigos que nao compilam serao zerados e warnings diminuirao a nota Utiliza remos o compilador GCC Nao serao aceitos trabalhos que caracterizem copia mesma estrutura e algumas pequenas mo dificacoes de outro Entrega Vocˆe devera entregar o codigo fonte se forem varios arquivos compactar em formato ZIP Introducao a Programacao BCC201 Pagina 4 de 5 versao 10 A entrega deve ser feita pelo Moodle ate as 23h59 do dia 31032025 As entrevistas serao feitas preferencialmente durante os horarios da aulas Exemplo de Execucao Vocˆe pode e deve customizar e melhorar as saıdas do programa A seguir segue um exemplo simples apenas para entendimento os dados digitados pelo usuario estao destacados em azul Exemplo 1 Em breve Introducao a Programacao BCC201 Pagina 5 de 5 versao 10