Sem resumo de edição
Sem resumo de edição
Linha 1: Linha 1:
= Introdução =
Antes da criação das Game Engines (motores de jogos), os jogos virtuais eram feitos do zero e com códigos específicos para aquela plataforma (vídeo-game), e apenas para aquela, pois era necessário otimizar o uso do hardware daquele eletrônico específico, como display, memória e capacidade de armazenamento de dados. Na época (anos 70), os vídeo-games e computadores em geral tinham uma grande restrição, o baixo poder de processamento. Ainda assim, o rápido desenvolvimento da tecnologia em informática forçava os desenvolvedores de games a praticamente jogar fora seus códigos depois de pouco tempo, já que as novas gerações de hardware permitiriam um Game Design diferente, que seria capaz de aproveitar melhor os recursos extras dessas novas máquinas. Assim, a maioria dos jogos feitos durante a década de 1980 tinham apenas seu código fonte com um número reduzido de fases e gráficos. Com a popularização do Arcade, companias de jogos desenvolveram suas próprias Game Engines, exclusivas para seus vídeo-games, numa tentativa de facilitar o desenvolvimento de jogos para estes. [ARCADE]
No entanto, já em 1980 foram criados sistemas de desenvolvimento de jogos 2D independentes, que consistiam em kits de desenvolvimento que facilitariam a criação de jogos na época.[CONSTRUCTION KITS]
O termo “Game Engine” como conhecemos hoje surgiu na década de 1990 com o advento dos gráficos em três dimensões, o 3D. Essa nova ferramenta permitiu que fossem criados vários jogos diferentes utilizando o mesmo “motor”, o que barateou muito o desenvolvimento de jogos, e o tornou muito mais rápido e fácil. Ao invés de criar um novo conjunto de regras e códigos que cuidariam do funcionamento de recursos-chave do jogo, os desenvolvedores poderiam aproveitar o que já era fornecido pela Engine e apenas criar seu conteúdo específico (como itens, gráficos, personagens e fases), e assim ter um jogo completo e funcional.[DOOM E QUAKE]
<br>
= Conceito =
= Conceito =
  Descrição minuciosa das características do programa proposto, pormenorização com detalhes técnicos e precisos que esclareçam a destinação. Identificar se gera um produto, um serviço ou um processo. Incluir definições, concepções ou caracterizações
  Descrição minuciosa das características do programa proposto, pormenorização com detalhes técnicos e precisos que esclareçam a destinação. Identificar se gera um produto, um serviço ou um processo. Incluir definições, concepções ou caracterizações

Edição das 20h45min de 15 de outubro de 2017

Conceito

Descrição minuciosa das características do programa proposto, pormenorização com detalhes técnicos e precisos que esclareçam a destinação. Identificar se gera um produto, um serviço ou um processo. Incluir definições, concepções ou caracterizações


Softwares

Descrever os softwares usados para esta finalidade. Detalhar, se existir, linguagens, banco de dados e frameworks. 


Código

<syntaxhighlight lang="python3"> Arquivo = "lista_contatos.txt" # Nome do arquivo

def ler_arquivo(): # Função que le o arquivo de texto

   try:                         # Tratamento de erro
       arq = open(Arquivo,"r+") # Abre o arquivo para leitura
       print( '\n'+arq.read() ) # Quebra linha e mostra o conteudo
       arq.close()              # Fecha o arquivo
   except IOError:              # Tratamento de erro
       print('\nArquivo não encontrado!')

def escrever_linhas(texto): # Função que le e escreve no arquivo

   try:                           # Tratamento de erro
       arq = open(Arquivo,"a+")   # Abre o arquivo para gravação no final do arquivo
       arq.writelines('\n'+texto) # Escreve no arquivo o parametro 'texto'
       arq.close()                # Fecha o arquivo
       print('\nLinha gravada com sucesso')
   except IOError:                # Tratamento de erro
       print('\nErro ao abrir o arquivo!') # Mostra na tela uma mensagem de erro

def pesquisar_contato(nome):

   try:
       arq = open(Arquivo, "r+")
       dicionario = {'nome':, 'telefone':, 'email':}
       achei = False
       # lógica ler arquivo e comparar nome
       for cont, s in enumerate(arq.readlines()):
           
           dicionario['nome'], dicionario['telefone'],dicionario['email'] = s.split(' - ')
           if dicionario['nome'] == nome:
               print(cont)
               print('Nome: %s'% dicionario['nome'])
               print('Telefone: %s'% dicionario['telefone'])
               print('Email: %s'% dicionario['email'])
               achei = True
               
       if not achei:
           print('Não existe %s' % (nome))


       # se achou imprime, se não mostra uma mensagem de nao encontrado
       arq.close
       
   except IOError:
       print('\nContato não encontrado')


def excluir_contatos():

   try:
       arq =open('lista_contatos.txt','r+')
       valores = arq.readlines()
       l = []
       splited =[]
       nome = input('Entre com um nome:')
       for x in valores:
           splited=x.split(' - ')
           if splited[0]==nome:
              pass
           else:
               l.append(splited)
       
       arq.close()
       novo_cadastro(l)
   except:
       print('erro')

def novo_cadastro(l):

   arq = open(Arquivo,'w')
   for x in l:
        #print("Nome:%s | Telefone:%s | Email:%s"%(x[0],x[1],x[2]))
        arq.write("%s - %s - %s" %(x[0],x[1],x[2]))
   arq.close()

while(True):

   print('\n        Opcões:')
   print(' ')
   print('1 - Cadastrar contato')
   print('2 - Listar dados')
   print('3 - Pesquisar contato')
   print('4 - Excluir contato')
   print('9 - Sair')
   print(' ')
   Op = int(input('Digite a opção desejada:')) # Entrada da opcao pelo teclado
   if Op == 1:                                     # Se a opcao for 1
       nome = input('\nDigite o nome do contato:')      # Entrada do nome pelo teclado
       fone = input('Digite o número do telefone:')# Entrada do telefone pelo teclado
       email = input('Digite o email:')            # Entrada do telefone pelo teclado
       contato = (nome+' - '+fone+' - '+email)     # Recebe o nome + o telefone
       escrever_linhas(str(contato))               # Chama a função que grava em arquivo
   elif Op == 2:                                   # Se a opcao for 2
       ler_arquivo()                               # Chama a função que le o arquivo
   elif Op == 9:                                   # Se a opcao for 0
       break                                       # Quebra o laço infinito
   elif Op == 3:
       nome = input("Digite o nome: ")
       pesquisar_contato(nome)
   elif Op == 4:
       #nome = input ("Digite o nome: ")
       excluir_contatos()

</syntaxhighlight>

Dar um exemplo de um código-fonte que mostre alguma parte da aplicação final. O código deverá ser curto mas que o leitor consiga enxergar para que serve. Pode-se usar comentários no programa.


Diagrama de Casos de Uso

Desenhar ou plotar  os requisitos funcionais de uma aplicação.


Interações com as tecnologias

Incluir links (internos ou externos) temas que tem relação com este, explicando detalhes sobre. Limite de 3 internos e 2 externos.


Informações adicionais

Descrever detalhes a mais sobre esse tema.


Referências bibliográficas

Relacionar aqui as referências bibliográficas no padrão ABNT. 
Bases de procura: Artigos, publicações acadêmicas, revistas e sites de fornecedores