Mostrando postagens com marcador Isabella. Mostrar todas as postagens
Mostrando postagens com marcador Isabella. Mostrar todas as postagens

quarta-feira, 3 de novembro de 2010

Os melhores games do Ano!

Isabella Fontes

Olá.


Bem, esse ano praticamente já se foi. E nosso projeto, finalmente chegou ao fim.Neste proximo sabado, dia 27, será a reapresentação dos projetos, e assim, estará terminado nosso projeto de verdade.

O que não significa que não podemos mais postar, daqui para frente, apenas quem quiser postar...

Pesquisando em sites, já que nosso projeto é um jogo, encontrei a lista que sai todo ano dos melhores 'games' .


Todo final de ano, começa a sair as listas, sejam elas de blogs, sites profissionais e até mesmo da indústria, dos games mais tchopitchuras do ano. Um dos principais eventos é o Video Game Awards (VGA), que além de premiar os mlehores games em diversas categorias, também é palco de muitas estréias e revelações do mercado de games.

O VGA ocorrre dia 11 de Dezembro e a lista dos nomeados você pode conferir abaixo, Ah! Mass Effect 2 é o Avatar dos jogos, contando com dez nomeações diferentes, vamos lá:

Jogo do Ano

* Call of Duty: Black Ops
* God of War III
* Halo: Reach
* Mass Effect 2
* Red Dead Redemption

Produtora do Ano

* BioWare
* Blizzard
* Bungie
* Rockstar San Diego

Melhor jogo PC

* Fallout: New Vegas
* Mass Effect 2
* Sid Meier’s Civilization V
* StarCraft II: Wings of Liberty

Melhor jogo PS3

* God of War III
* Heavy Rain
* ModNation Racers
* Red Dead Redemption

Melhor jogo Xbox 360

* Alan Wake
* Fable III
* Halo: Reach
* Mass Effect 2

Melhor jogo Wii

* Donkey Kong Country Returns
* Kirby’s Epic Yarn
* Metroid: Other M
* Super Mario Galaxy 2

Melhor jogo Portátil

* God of War: Ghost of Sparta
* Metal Gear Solid: Peace Walker
* Professor Layton and the Unwound Future
* Super Scribblenauts

Jogos mais Aguardados

* Batman: Arkham City
* BioShock Infinite
* Gears of War 3
* Portal 2





sexta-feira, 29 de outubro de 2010

Semana da Ciência e Tecnologia - Bauru SESI 2010

Isabella Fontes dos Santos

Olá novamente!


Na semana passada, como a Maria Luiza citou em um dos seus post anteriores fomos convidados pelos professores a participar da Feira de Ciências e de Tecnologia que neste ano foi realizada no SESI de Bauru, proximo ao Horto Florestal.

Em termos de projeto, nossa equipe representada por Ananda, Maria Luiza,Wellington e eu na feira, pode encontrar erros / bugs e ter mais ideias e soluções para o nosso jogo.
Na feira teve muitos experimentos bem legais!

Abaixo segue algumas fotos do dia.As fotos foram tiradas pela Maria Luiza ( e a mãe dela, rsrs) e a camera do meu celular, entao perdoe-me pela resolução hehe.


Grupo Aparattus e Spectrum - Da esquerda para direita: Maisa,Wellington, Juliana,Maria Luiza, Paula Fiorini e eu.

Grupo Apparattus e Spectrum - Da esquerda para direita: Maisa,Wellington, Juliana,Maria Luiza, Eu e a Paula Fiorini .

Nosso banner, que a Maria Luiza trouxe.Ficou lindo!

Nosso Banner e o 'Stand' que ficamos.

Equipe Apparattus e Spectrum, junto com nosso orientador, Professor Vitor Simeão.




E mais fotos! Dessa vez, são de outras instituições como o SESI, com a robótica e a ITE com ciencias aeronautica.Também há algumas fotos do projeto do Zoologico, para educação ambiental em parceria com o proprio SESI ( pata de uma onça pintada e um cranio de animal) alem de algumas próteses que são feitas no Centrinho.











Criar Arquivo Temporario no Python para leitura no jogo

Isabella Fontes dos Santos

Olá,

Estamos na reta final !

No jogo, através das ações do usuario ele adquire determinada pontuacao e para que o Blender consiga ler essa informaçao [ no caso, o nome do usuario e o valor da sua pontuacao] criamos um arquivo temporario no diretorio do nosso jogo e a partir disto é feita  a leitura.

No python há um tipo especifico de arquivo I/O para esta finalidade, arquivos temporarios.No entanto, segue abaixo alguns dados importantissimos:

  • Evita colisões com nomes de arquivos que estão em uso;
  • Identifica a área apropriada do sistema de arquivos para temporários (que varia conforme o sistema operacional);
  • Expoe a aplicação a riscos (a área de temporários é utilizada por outros processos).


OBS: O módulo "os" implementa algumas funções para facilitar a criação de arquivos temporários, liberando o desenvolvedor de algumas preocupações, e por isso achei muito mais simples e facil usa-lo.

Para teste, abaixo há o codigo que lê o arquivo e tambem o escreve.É sempre importante lembrar que em todos os projeto o uso de padrões é a forma mais correta e também agradavel, deixando o codigo mais compreensivel.Logo, para este arquivo temporario haverá um cabeçalho.Ex:


            #Spectrum Educar - Arquivo Temporario - NAO REMOVA
            User: Isabella Fontes dos Santos
            Pontuacao: 876


* A função "os.getcwd()" retorna o diretorio corrente.



class CriarArquivoTemporario(object):
    def __init__(self):
        self.name = os.sep.join((os.getcwd(), 'spectrum-educar2010.txt'))
  
    def criar(self):
        """
            TODO: Quando o usuario aluno resolver abrir o exe do blender
            enquanto carrega o jogo e as dlls, criar um arquivo temporario
            de texto com o cabecalho:
          
            file: spectrum-educar2010.txt                      
        """
        arquivo = open(self.name,"w")
        arquivo.write("#Spectrum Educar - Arquivo Temporario - NAO REMOVA\n")
        arquivo.write("User: %s \n" % str(usuario))
        arquivo.write("Pontuacao: %i \n" % pontos)
        arquivo.close()
            
  
    def ler(self):
       try:
        with open(self.name, "r") as arquivo:
            lista_informacoes = [line for line in arquivo.readlines() if not
                    line.startswith("#")]          
            for x in lista_informacoes:              
                if not x.find("Pontuacao:"):
                    a = x.split()              
                    print(a[1])              
       except IOError:
            pass
 

sexta-feira, 22 de outubro de 2010

PyQt - como adicionar valores num objeto QTable

Isabella Fontes dos Santos

Olá,

Ainda sobre a interface grafica, utilizando PyQt, encontrei dificuldades em achar materiais e informações sobre objetos do tipo QTable. Porem, na tentativa e erro consegui compreender um pouco, e criei uma função que insere os valores encontrados no nosso banco e preenche a tabela para mostrar por exemplo, os usuarios na tela de Ranking ou mesmo na tela de pesquisar os usuarios.

Segue abaixo a função.


Bibliotecas usadas:

from PyQt4.QtCore import *
from PyQt4.QtGui import *



def preencher_table(self,indice,nome,pontuacao,colocacao):      
        item = QTableWidgetItem()
        self.tableWidget.setItem(indice, 0, item)
        item = QTableWidgetItem()
        self.tableWidget.setItem(indice, 1, item)
        item = QTableWidgetItem()
        self.tableWidget.setItem(indice, 2, item)
        self.tableWidget.item(indice, 0).setText(QApplication.translate("MainWindow", nome, None, QApplication.UnicodeUTF8))
        self.tableWidget.item(indice, 1).setText(QApplication.translate("MainWindow", str(pontuacao), None, QApplication.UnicodeUTF8))
        self.tableWidget.item(indice, 2).setText(QApplication.translate("MainWindow", str(colocacao), None, QApplication.UnicodeUTF8))

sexta-feira, 15 de outubro de 2010

Telas de Informações sobre Transito.

Isabella Fontes

Olá,



Figura 1:  Aluno Visualiza Informações educacionais - Nesta página ele apenas lê a materia cadastrada.



 Figura 2:  Aluno Visualiza Informações educacionais - Nesta página ele assiste a vídeos cadastrados.



 Figura 3:  Orientador cadastra as informções sobre o Trânsito, para alunos visualizarem.


Python:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from commons.InformacoesCadastroBuilding import Ui_MainWindow
from commons.Database import Pessoa, Usuario
import traceback

import logging
import sys
import os
import time

class InformacoesCadastro(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        app = QApplication(sys.argv)
        Ui_MainWindow.__init__(self)
        QMainWindow.__init__(self, parent)       
        self.setupUi(self)
        """
            TODO: LINKAR COM TODAS AS TELAS
        """           
        self.show()
        sys.exit(app.exec_())      
       
  
if __name__ == '__main__':
    infoCad = InformacoesCadastro()

quinta-feira, 7 de outubro de 2010

Problemas com Sqlite3 no windows!

Isabella Fontes

Olá,

Problemas com Sqlite3 no windows!

Nosso banco é feito todo em sqlite3 e quanto a sua validação era preciso checar se o arquivo local existia, caso contrario seria recriado.Até esse passo, ok.O problema começou qaundo o windows (XP,Vista  e Seven) toda vez que verificava se a função 'os.path.exists' era True ou False, ele recriava o arquivo database.db e sempre retornava que o arquivo existia!

Mas conseguimos a solução!Segue abaixo o que foi feito para solucionar:

Bibliotecas usadas:

import sqlite3
import time
import os
import traceback

Funcoes dentro da Classe Database.py:

""" Nesta função pega-se o cursor e a conexao com o path / endereco do banco"""
def conectar_banco_de_dados():  
    db_connect = sqlite3.connect(config.path_db())
    db_cursor = db_connect.cursor()
    return db_connect, db_cursor   

""" Nesta função é feita a verificação do banco, caso exista verifica o numero de tabelas senao recria-o"""
def verificar_banco_de_dados():
    db_name = config.path_db()  
    logging.warning("Verificar banco de dados")
    if not os.path.isfile(db_name):
        logging.warning("Nao encontrado banco de dados.Criar banco de dados.")       
        try:           
            criar_banco_de_dados()
        except sqlite3.OperationalError:
            trace = traceback.format_exc()
            logging.exception(trace)
    else:         
        """
            TODO: VERIFICAR QTDE DE TABELAS.SE O BANCO NAO FOI CORROMPIDO.
        """
        try:
            logging.warning("Verificando integridade do banco de dados.")
            db_connect, db_cursor = conectar_banco_de_dados()
            query = "select tbl_name from sqlite_master where type='table'"
            db_cursor.execute(query)
            db_connect.commit()
            tables = 0
            for row in db_cursor:
                tables += 1
            print (tables)
            if tables != 8:
                raise sqlite3.IntegrityError
            else:
                logging.warning("Banco esta Ok.")                                          
        except:
            trace = traceback.format_exc()
            logging.error("Erro foi encontrado")
            logging.exception(trace)

sexta-feira, 1 de outubro de 2010

Tela do Orientador e Aluno - Qt e Python

Isabella Fontes

Olá,


Figura 1: Tela do Aluno



Codigo em Python:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from AlunoBuilding import Ui_MainWindow
from commons.DadosCadastrais import TelaUsuario

import logging
import sys
import os


class Aluno(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        app = QApplication(sys.argv)
        Ui_MainWindow.__init__(self)
        QMainWindow.__init__(self, parent)       
        self.setupUi(self)
        """
            TODO: LINKAR COM TODAS AS TELAS
        """       
        self.connect(self.btnDadosCadastrais, SIGNAL("pressed()"), self.abrir_dados_cadastrais)
        self.connect(self.btnInfo, SIGNAL("pressed()"), self.abrir_info)
        self.connect(self.btnJogar, SIGNAL("pressed()"), self.abrir_jogo)
        self.connect(self.btnRanking, SIGNAL("pressed()"), self.abrir_tela_ranking)       
        self.show()
        sys.exit(app.exec_())



Figura 2 : Tela do Orientador






Codigo em Python:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from orientador.OrientadorBuilding import Ui_MainWindow
from commons.Database import Pessoa, Usuario
import traceback

import logging
import sys
import os
import time

class TelaOrientador(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        app = QApplication(sys.argv)
        Ui_MainWindow.__init__(self)
        QMainWindow.__init__(self, parent)      
        self.setupUi(self)
        """
            TODO: LINKAR COM TODAS AS TELAS
        """
        self.connect(self.btnCadastrarInfo, SIGNAL("pressed()"), self.abrir_tela_cadastro_info)
        self.connect(self.btnConfiguracoes, SIGNAL("pressed()"), self.abrir_tela_configuracoes)
        self.connect(self.btnListagemUsuarios, SIGNAL("pressed()"), self.abrir_tela_listagem_alunos)
        self.connect(self.btnRanking, SIGNAL("pressed()"), self.abrir_tela_ranking)              
        self.show()
        sys.exit(app.exec_())

sexta-feira, 24 de setembro de 2010

Tela de Dados Cadastrais Qt e Python

Isabella Fontes,

Olá a todos!

Figura : Dados Cadastrais - Qt e Python


Com essa figura é possivel visualizar a tela de dados cadastrais do nosso sistema.O arquivo QtDesigner .ui foi feito pelos alunos Karl e Vinicius e eu compilei o arquivo e criei as classes para trabalhar com os dados.

Abaixo a classe responsavel por fazer a comunicação entre o layout da tela e as ações que serão executadas:



DadosCadastrais.py (Detalhe: Coloquei apenas a função principal que realmente mostra a tela, as demais função nao consta abaixo):


from PyQt4.QtCore import *
from PyQt4.QtGui import *
from commons.DadosCadastraisBuilding import Ui_MainWindow
from commons.Database import Pessoa, Usuario
import traceback

import logging
import sys
import os
import time

class TelaUsuario(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        app = QApplication(sys.argv)
        Ui_MainWindow.__init__(self)
        QMainWindow.__init__(self, parent)       
        self.setupUi(self)
        """
            TODO: LINKAR COM TODAS AS TELAS
        """       
        self.lblMensagem.setVisible(False)
        self.progressBar.setVisible(False)
        self.connect(self.btnEnviar, SIGNAL("pressed()"), self.enviar_dados_usuario)               
        self.show()
        sys.exit(app.exec_())
       

if __name__ == '__main__':
    t = TelaUsuario()



DadosCadastraisBuilding.py (Arquivo gerado do QtDesigner)

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file '../QT/tela_dados_cadastrais.ui
'


from PyQt4 import QtCore, QtGui
from commons.Configuracoes import Images

imgs = Images()

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 672)
        MainWindow.setMaximumSize(QtCore.QSize(800, 672))
        MainWindow.setCursor(QtCore.Qt.OpenHandCursor)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/imgs/imagens/tamanho certo/logo_empresa.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        MainWindow.setStyleSheet("background-image: url(" + imgs.get_background() + ");")
       
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.widget = QtGui.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(70, 60, 671, 481))
        self.widget.setMaximumSize(QtCore.QSize(671, 671))
        self.widget.setStyleSheet("background-image: url(" + imgs.get_tela_azul() + ");")       
        self.widget.setObjectName("widget")
              
        self.lblNome = QtGui.QLabel(self.widget)
        self.lblNome.setGeometry(QtCore.QRect(60, 130, 61, 16))
        self.lblNome.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.lblNome.setObjectName("lblNome")
               
        self.lblEmail = QtGui.QLabel(self.widget)
        self.lblEmail.setGeometry(QtCore.QRect(60, 170, 61, 16))
        self.lblEmail.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.lblEmail.setObjectName("lblEmail")
       
        self.txtNome = QtGui.QLineEdit(self.widget)
        self.txtNome.setGeometry(QtCore.QRect(120, 130, 471, 21))
        self.txtNome.setMaximumSize(QtCore.QSize(16777215, 21))
        self.txtNome.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.txtNome.setObjectName("txtNome")
              
        self.txtEmail = QtGui.QLineEdit(self.widget)
        self.txtEmail.setGeometry(QtCore.QRect(120, 170, 471, 21))
        self.txtEmail.setMaximumSize(QtCore.QSize(16777215, 21))
        self.txtEmail.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.txtEmail.setObjectName("txtEmail")
       
        self.txtLogin = QtGui.QLineEdit(self.widget)
        self.txtLogin.setGeometry(QtCore.QRect(120, 210, 171, 21))
        self.txtLogin.setMaximumSize(QtCore.QSize(16777215, 21))
        self.txtLogin.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.txtLogin.setObjectName("txtLogin")
       
        self.txtSenha = QtGui.QLineEdit(self.widget)
        self.txtSenha.setGeometry(QtCore.QRect(120, 250, 171, 21))
        self.txtSenha.setMaximumSize(QtCore.QSize(16777215, 21))
        self.txtSenha.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.txtSenha.setEchoMode(QtGui.QLineEdit.Password)
        self.txtSenha.setObjectName("txtSenha")
       
        self.txtNasc = QtGui.QLineEdit(self.widget)
        self.txtNasc.setGeometry(QtCore.QRect(420, 240, 171, 21))
        self.txtNasc.setMaximumSize(QtCore.QSize(16777215, 21))
        self.txtNasc.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.txtNasc.setObjectName("txtNasc")
       
        self.lblLogin = QtGui.QLabel(self.widget)
        self.lblLogin.setGeometry(QtCore.QRect(60, 210, 61, 16))
        self.lblLogin.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.lblLogin.setObjectName("lblLogin")
       
        self.lblNasc = QtGui.QLabel(self.widget)
        self.lblNasc.setGeometry(QtCore.QRect(420, 210, 151, 16))
        self.lblNasc.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.lblNasc.setObjectName("lblNasc")
       
        self.lblSenha = QtGui.QLabel(self.widget)
        self.lblSenha.setGeometry(QtCore.QRect(60, 250, 61, 16))
        self.lblSenha.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.lblSenha.setObjectName("lblSenha")
       
        self.btnEnviar = QtGui.QPushButton(self.widget)
        self.btnEnviar.setGeometry(QtCore.QRect(270, 340, 105, 40))
        self.btnEnviar.setCursor(QtCore.Qt.PointingHandCursor)
        self.btnEnviar.setStyleSheet("background-image: url(" + imgs.get_btn_incluir()+ ");")
        self.btnEnviar.setText("")
        self.btnEnviar.setObjectName("btnEnviar")
       
        self.progressBar = QtGui.QProgressBar(self.widget)
        self.progressBar.setEnabled(False)
        self.progressBar.setGeometry(QtCore.QRect(160, 430, 391, 23))
        self.progressBar.setProperty("value", 0)
        self.progressBar.setTextVisible(True)
        self.progressBar.setOrientation(QtCore.Qt.Horizontal)
        self.progressBar.setObjectName("progressBar")
       
        self.dateEdit = QtGui.QDateEdit(self.widget)
        self.dateEdit.setGeometry(QtCore.QRect(420, 270, 171, 22))
        self.dateEdit.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.dateEdit.setDate(QtCore.QDate(1990, 7, 26))
        self.dateEdit.setObjectName("dateEdit")
       
        self.lblMensagem = QtGui.QLabel(self.widget)
        self.lblMensagem.setEnabled(False)
        self.lblMensagem.setGeometry(QtCore.QRect(170, 410, 481, 16))
        self.lblMensagem.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.lblMensagem.setObjectName("lblMensagem")
       
        self.cboGrupos = QtGui.QComboBox(self.widget)
        self.cboGrupos.setGeometry(QtCore.QRect(120, 290, 171, 22))
        self.cboGrupos.setCursor(QtCore.Qt.PointingHandCursor)
        self.cboGrupos.setObjectName("cboGrupos")
        self.cboGrupos.addItem("")
        self.cboGrupos.addItem("")
        self.cboGrupos.addItem("")
       
        self.lblGrupo = QtGui.QLabel(self.widget)
        self.lblGrupo.setGeometry(QtCore.QRect(60, 290, 61, 16))
        self.lblGrupo.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.lblGrupo.setObjectName("lblGrupo")
       
        self.lblGrupoExplicacao = QtGui.QLabel(self.widget)
        self.lblGrupoExplicacao.setGeometry(QtCore.QRect(80, 310, 381, 16))
        self.lblGrupoExplicacao.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.lblGrupoExplicacao.setObjectName("lblGrupoExplicacao")
       
        self.lblGrupoExplicacao_2 = QtGui.QLabel(self.widget)
        self.lblGrupoExplicacao_2.setGeometry(QtCore.QRect(460, 460, 211, 16))
        self.lblGrupoExplicacao_2.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.lblGrupoExplicacao_2.setObjectName("lblGrupoExplicacao_2")
       
        self.lblTitulo = QtGui.QLabel(self.widget)
        self.lblTitulo.setEnabled(False)
        self.lblTitulo.setGeometry(QtCore.QRect(150, 80, 421, 20))
        self.lblTitulo.setStyleSheet("background-image: url(" + imgs.get_label_login() + ");")
        self.lblTitulo.setObjectName("lblTitulo")
       
        self.lblDadosCadastrais = QtGui.QLabel(self.centralwidget)
        self.lblDadosCadastrais.setGeometry(QtCore.QRect(80, 60, 130, 121))
        self.lblDadosCadastrais.setCursor(QtCore.Qt.PointingHandCursor)
        self.lblDadosCadastrais.setStyleSheet("background-image: url(" + imgs.get_icone_cadastro_usuario() + ");")
        self.lblDadosCadastrais.setInputMethodHints(QtCore.Qt.ImhNone)
        self.lblDadosCadastrais.setText("")
        self.lblDadosCadastrais.setObjectName("lblDadosCadastrais")
       
        self.lblEduCar = QtGui.QLabel(self.centralwidget)
        self.lblEduCar.setGeometry(QtCore.QRect(280, 40, 281, 81))
        self.lblEduCar.setMaximumSize(QtCore.QSize(500, 300))
        self.lblEduCar.setStyleSheet("background-image: url(" + imgs.get_icone_educar() + ");")
        self.lblEduCar.setText("")
        self.lblEduCar.setObjectName("lblEduCar")
       
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "EduCar - Empresa Spectrum 2010 - Cadastro de Usuário", None, QtGui.QApplication.UnicodeUTF8))
        self.lblNome.setText(QtGui.QApplication.translate("MainWindow", "\n"
"\n"
"
NOME
", None, QtGui.QApplication.UnicodeUTF8))
        self.lblEmail.setText(QtGui.QApplication.translate("MainWindow", "\n"
"\n"
"
E-MAIL
", None, QtGui.QApplication.UnicodeUTF8))
        self.lblLogin.setText(QtGui.QApplication.translate("MainWindow", "\n"
"\n"
"
LOGIN
", None, QtGui.QApplication.UnicodeUTF8))
        self.lblNasc.setText(QtGui.QApplication.translate("MainWindow", "\n"
"\n"
"
DATA DE NASCIMENTO
", None, QtGui.QApplication.UnicodeUTF8))
        self.lblSenha.setText(QtGui.QApplication.translate("MainWindow", "\n"
"\n"
"
SENHA
", None, QtGui.QApplication.UnicodeUTF8))
        self.dateEdit.setDisplayFormat(QtGui.QApplication.translate("MainWindow", "dd/MM/yyyy", None, QtGui.QApplication.UnicodeUTF8))
        self.lblMensagem.setText(QtGui.QApplication.translate("MainWindow", "\n"
"\n"
"
CARREGANDO ... AGUARDE
", None, QtGui.QApplication.UnicodeUTF8))
        self.cboGrupos.setItemText(0, QtGui.QApplication.translate("MainWindow", "Aluno", None, QtGui.QApplication.UnicodeUTF8))
        self.cboGrupos.setItemText(1, QtGui.QApplication.translate("MainWindow", "Administrador", None, QtGui.QApplication.UnicodeUTF8))
        self.cboGrupos.setItemText(2, QtGui.QApplication.translate("MainWindow", "Orientador", None, QtGui.QApplication.UnicodeUTF8))
        self.lblGrupo.setText(QtGui.QApplication.translate("MainWindow", "\n"
"\n"
"
GRUPO *
", None, QtGui.QApplication.UnicodeUTF8))
        self.lblGrupoExplicacao.setText(QtGui.QApplication.translate("MainWindow", "\n"
"\n"
"
* Para alterar é necessária a autorização do administrador
", None, QtGui.QApplication.UnicodeUTF8))
        self.lblGrupoExplicacao_2.setText(QtGui.QApplication.translate("MainWindow", "\n"
"\n"
"
Todos os campos são obrigatórios
", None, QtGui.QApplication.UnicodeUTF8))
       
        self.lblTitulo.setText(QtGui.QApplication.translate("MainWindow", "\n"
"\n"
"
DADOS CADASTRAIS
", None, QtGui.QApplication.UnicodeUTF8))


sexta-feira, 17 de setembro de 2010

Estamos Inscritos!

Isabella Fontes

Olá pessoal!




Nossa equipe, graças às participações importantíssimas das professoras Dalcimary e Norma, ambas de Lingua Portuguesa e dos professores Vitor Simeão, André Bicudo e da professora Kátia, todos do ensino técnico, conseguimos nos inscrever no X Prêmio Nacional de Trânsito!

Além dessa enorme oportunidade, eu e a aluna Maria Luíza tivemos uma experiência enriquecedora na tarde de quarta-feira (15/09), na qual também estavam presentes os professores Rodrigo e Andŕe Dalastti.

Enriquecedora porque tivemos que escrever no formato especificado pelo concurso e que é semelhante aos trabalhos de TCC (Trabalho de Conclusão de Curso).

Aprendemos os conceitos básicos, fazer citações e referências de acordo com as normas da ABNT e além disso colocamos o projeto de acordo com os padrões exigidos inclusive na graduação.

Os tópicos que escrevemos foram:
  1. Objetivos
  2. Justificativas
  3. Metodologias
  4. Público-Alvo
  5. Proposta
A importância de escrever e documentar um projeto é um diferencial na escolha de softwares a serem implementados em qualquer lugar, uma vez que eles se tornam utilizáveis às demais pessoas.

Agora, vamos torcer pela equipe Spectrum!

sexta-feira, 10 de setembro de 2010

Denatran abre inscrições para o X Prêmio de Educação no Trânsito

Isabella Fontes

Olá!
Como já tinha dito, nesse mês acontece a Semana Nacional do Trânsito e encontrei no site do Denatran (Departamento Nacional de Trânsito) a abertura do Prêmio de Educação no Trânsito!

Tem diversas categorias e é voltado para todos os públicos de diferentes idades, cada qual com a sua categoria e entao pensei: porque não nos inscrevermos?

Ainda precisamos avaliar se nosso projeto é valido e claro, conversar com nossos orientadores, mas estou bem feliz quanto as chances de premiação!


Para saber mais informações, clique aqui.


Estão abertas as inscrições para a 10ª edição do Prêmio Denatran de Educação no Trânsito que elege anualmente os melhores trabalhos produzidos sobre o tema Trânsito. O concurso, promovido pelo Departamento Nacional de Trânsito (Denatran), tem o objetivo de incentivar diversos setores da sociedade a refletirem sobre aspectos relativos à segurança, ao respeito e à cidadania no trânsito.

Para participar o interessado deve fazer a inscrição na página eletrônica do Denatran até 15 de setembro. Após a confirmação dos dados, o candidato deverá encaminhar o trabalho, juntamente com a ficha de identificação gerada no ato da inscrição, para o endereço do Denatran. Os trabalhos enviados deverão seguir os critérios de cada categoria especificada no edital.

Regulamento e inscrições no site: www.denatran.gov.br

sexta-feira, 3 de setembro de 2010

Semana Nacional de Trânsito 2010

Isabella Fontes

Olá pessoal!

Semana que vem acontecerão por todo o país atividades de conscientização da importância de boas práticas no trânsito.
Como nosso projeto tem o mesmo objetivo e pensando no tema pesquisei algumas informações que seguem abaixo.

TEMA: CINTO DE SEGURANÇA E CADEIRINHA

Fonte: http://www.denatran.gov.br/campanhas/semana/2010/snt2010.htm


Trechos da matéria:
"Apesar disso, o mesmo estudo realizado pela SBOT indica que apenas 11% dos passageiros utilizam o cinto no banco traseiro. O risco de morte de um condutor utilizando o cinto de segurança, como resultado de um passageiro do banco traseiro sem cinto, é cinco vezes maior do que seria se esse passageiro estivesse retido pelo cinto."

"[...]O tema "CINTO DE SEGURANÇA E CADEIRINHA", da Semana Nacional de Trânsito de 2010, possibilitará que os órgãos e entidades do Sistema Nacional de Trânsito promovam, à população em geral, ações de segurança a partir de um aspecto pontual. É uma oportunidade para suscitar reflexões, incentivar discussões e criar atividades que explorem com profundidade a real importância e necessidade do uso do cinto de segurança e dos dispositivos de retenção adequado às condições da criança."

sexta-feira, 27 de agosto de 2010

Classificacao do site no google

Isabella Fontes

Olá a todos!

Conseguimos! O professor Rodrigo, que ministra aplicativos II, nos ensinou técnicas de classificar sites nos mecanismos de pesquisas da internet.
É um fator importante, colaborando com a divulgação do site e do produto. E, no nosso caso, nosso jogo para fins educacionais!


E como ele nos pediu, colocamos as meta-tags e conseguimos colocar nosso site entre os 10 mais procurados sobre o tema.

sexta-feira, 20 de agosto de 2010

PyQT e QtDesigner

Isabella Fontes

Olá,

Durante as férias construi a interface das nossas aplicações em GTK, porém algumas funcionalidades que necessitamos eram mais complexas e não ofereciam tantas bibliotecas quanto pensei.
Então em contrapartida encontrei uma nova solução. Porque não utilizar PyQt?

Software da Nokia, Qt oferece diversos recursos para construção de telas para projetos. No entanto a curva de aprendizagem dela, ou seja, o tempo que se leva para aprender seus componentes, na minha opinião, é muita maior do que GTK.

Particularmente, prefiro fazer tudo por scripts, mas reconheço que a utilização de toolkits gráficos facilita muito. Pensando nisso encontrei o QtDesigner.

*Para maiores informações, acesse Qt Desiner Manual e Produtos Qt Nokia.

sexta-feira, 13 de agosto de 2010

DVD, Etiqueta e Banner do Projeto

Isabella Fontes

Olá a todos,

O professor de aplicativos, Rodrigo Carvalho, pediu para todos os grupos de projetos que entregassem uma interface/layout da capa de CD, DVD e de um Banner do projeto.
E aqui estão os que eu fiz em CorelDraw X4.
O nome EduCar ainda não está definitivo, porém, o utilizamos temporariamente.





sexta-feira, 6 de agosto de 2010

Blog Reformulado!

Isabella Fontes

Olá a todos,

Finalmente terminei o novo design do blog, que sempre foi o desejo do nosso grupo e como estávamos com prioridades em criar a base do nosso projeto, acabei por não terminar o layout do nosso blog.

Ainda podemos melhorar e muito e assim que possivel faremos melhorias!

sexta-feira, 30 de julho de 2010

Arquivos .ui

Isabella Fontes

Olá,

Quando criamos uma interface por uma ferramenta, como exemplo que usamos, QtDesigner, no nosso projeto para que ela nos forneça as informações necessárias são precisos alguns passos.

Passo 1:
Compilar o arquivo de extensao .ui para gerar o código em Python:

#!/usr/bin/env python
import os

command = "pyuic4 -o NOME DO ARQUIVO PYTHON.py NOME DO ARQUIVO.ui"
os.system(command)


Passo 2:
Criar arquivo "principal" e importar a classe do arquivo python traduzido do .ui:

import sys
from PyQt4.QtGui import QApplication
from ui_python import Window

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())


E depois é só começar a programar as classes!

Arquivo traduzido em python de .ui (Exemplo: Tela de Login):

from PyQt4 import QtCore, QtGui
class Ui_mainWindowFundo(object):
    def setupUi(self, mainWindowFundo):
        mainWindowFundo.setObjectName("mainWindowFundo")
        mainWindowFundo.resize(797, 601)
        mainWindowFundo.setCursor(QtCore.Qt.ForbiddenCursor)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("login/logo_empresa.png"),
QtGui.QIcon.Normal, QtGui.QIcon.Off)
        mainWindowFundo.setWindowIcon(icon)
        mainWindowFundo.setStyleSheet("background-image:
url(login/background.png);")
        mainWindowFundo.setLocale(QtCore.QLocale(QtCore.QLocale.Portuguese, QtCore.QLocale.Brazil))
        self.centralwidget = QtGui.QWidget(mainWindowFundo)
        self.centralwidget.setObjectName("centralwidget")
        self.wdgTelaLoginBox = QtGui.QWidget(self.centralwidget)
        self.wdgTelaLoginBox.setGeometry(QtCore.QRect(120, 80, 541, 421))
        self.wdgTelaLoginBox.setStyleSheet("background-image:
url(login/box.png);")
        self.wdgTelaLoginBox.setLocale(QtCore.QLocale(QtCore.QLocale.Portuguese, QtCore.QLocale.Brazil))
        self.wdgTelaLoginBox.setObjectName("wdgTelaLoginBox")
        self.btnLogin = QtGui.QPushButton(self.wdgTelaLoginBox)
        self.btnLogin.setGeometry(QtCore.QRect(250, 300, 71, 31))
        self.btnLogin.setCursor(QtCore.Qt.PointingHandCursor)
        self.btnLogin.setAutoFillBackground(False)
        self.btnLogin.setStyleSheet("image: url(login/btnlogin.png);")
        self.btnLogin.setText("")
        self.btnLogin.setObjectName("btnLogin")
        self.txtLogin = QtGui.QTextEdit(self.wdgTelaLoginBox)
        self.txtLogin.setGeometry(QtCore.QRect(210, 120, 191, 31))
        self.txtLogin.setStyleSheet("background-image:
url(login/txtbox_pw.png);")
        self.txtLogin.setInputMethodHints(QtCore.Qt.ImhUppercaseOnly)
        self.txtLogin.setObjectName("txtLogin")
        self.lblLogin = QtGui.QLabel(self.wdgTelaLoginBox)
        self.lblLogin.setGeometry(QtCore.QRect(100, 100, 81, 61))
        self.lblLogin.setStyleSheet("background-image: url(login/login.png);")
        self.lblLogin.setText("")
        self.lblLogin.setObjectName("lblLogin")
        self.lblSenha = QtGui.QLabel(self.wdgTelaLoginBox)
        self.lblSenha.setGeometry(QtCore.QRect(110, 190, 61, 61))
        self.lblSenha.setStyleSheet("background-image:
url(login/chave.png);")
        self.lblSenha.setText("")
        self.lblSenha.setObjectName("lblSenha")
        self.txtSenha = QtGui.QTextEdit(self.wdgTelaLoginBox)
        self.txtSenha.setGeometry(QtCore.QRect(210, 210, 191, 31))
        self.txtSenha.setStyleSheet("background-image:
url(login/txtbox_pw.png);")
        self.txtSenha.setObjectName("txtSenha")
        self.txtSenha.setProperty("cursor", QtCore.Qt.IBeamCursor)
        self.lblLogoSpectrum = QtGui.QLabel(self.centralwidget)
        self.lblLogoSpectrum.setGeometry(QtCore.QRect(690, 510, 111, 91))
        self.lblLogoSpectrum.setStyleSheet("background-image:
url(login/logo_empresa.png);")
        self.lblLogoSpectrum.setText("")
        self.lblLogoSpectrum.setObjectName("lblLogoSpectrum")
        mainWindowFundo.setCentralWidget(self.centralwidget)
        self.actionLogar = QtGui.QAction(mainWindowFundo)
        self.actionLogar.setObjectName("actionLogar")
        self.retranslateUi(mainWindowFundo)
        QtCore.QObject.connect(self.btnLogin, QtCore.SIGNAL("clicked()"),
self.btnLogin.click)
        QtCore.QMetaObject.connectSlotsByName(mainWindowFundo)
        
        mainWindowFundo.setTabOrder(self.txtLogin, self.txtSenha)
        mainWindowFundo.setTabOrder(self.txtSenha, self.btnLogin)
        QtCore.QObject.connect(self.closeButton,
QtCore.SIGNAL("clicked()"), Window.close)
        QtCore.QObject.connect(self.termsEdit,
QtCore.SIGNAL("returnPressed()"), self.searchButton.animateClick)
        QtCore.QMetaObject.connectSlotsByName(Window)
        Window.setTabOrder(self.fieldCombo, self.termsEdit)
        Window.setTabOrder(self.termsEdit, self.treeWidget)
    def retranslateUi(self, mainWindowFundo):
        mainWindowFundo.setWindowTitle(QtGui.QApplication.translate
("mainWindowFundo", "Jogo - Empresa Spectrum", None,
QtGui.QApplication.UnicodeUTF8))
        self.txtLogin.setHtml(QtGui.QApplication.translate("mainWindowFundo",
"\n"
"\n"
", None, QtGui.QApplication.UnicodeUTF8))
        self.actionLogar.setText(QtGui.QApplication.translate("mainWindowFundo", "logar", None, QtGui.QApplication.UnicodeUTF8))

sexta-feira, 23 de julho de 2010

Create table - Sqlite3

Isabella Fontes

Olá,

Hoje vou postar os scripts essenciais ao nosso projeto.
Detalhe: Também colocarei os imports necessários.

Imports:
#!/usr/bin/env python
import sqlite3
import logging
import configuracoes


Sabendo disso, segue abaixo, o script de criação.
Nome do arquivo: database.py

def criar_banco_de_dados():
    """ Cria o banco de dados no local onde ja definimos, no arquivo
        configuracoes.py
    """

    logging.debug("Executando criar banco de dados")
    #{ CP - Cadastrar Pessoa , EP- Excluir Pessoa, CCF - Cadastrar
Configuracao, });
    sql = """
            CREATE TABLE [usuario] ([id]INTEGER PRIMARY KEY ASC ON
CONFLICT ROLLBACK AUTOINCREMENT,
            [login] VARCHAR (250), [senha] VARCHAR(10), [id_pessoa]
INTEGER, [id_grupo] INTEGER, [data_ultimo_login] INTEGER);
            CREATE TABLE [grupo] ([id]INTEGER PRIMARY KEY ASC ON
CONFLICT ROLLBACK AUTOINCREMENT,
            [nome] VARCHAR(20), [id_permissao] INTEGER);
            CREATE TABLE [permissao] ([id]INTEGER PRIMARY KEY ASC
ON CONFLICT ROLLBACK AUTOINCREMENT,
            [nome] VARCHAR(20),[acoes] VARCHAR(3));
            CREATE TABLE [pessoa] ([id]INTEGER PRIMARY KEY ASC ON
CONFLICT ROLLBACK AUTOINCREMENT,
            [nome] VARCHAR(50), [data_nascimento] INTEGER);
            CREATE TABLE [configuracao] ([id]INTEGER PRIMARY KEY ASC
ON CONFLICT ROLLBACK AUTOINCREMENT,
            [velocidade] BOOLEAN, [cinto] BOOLEAN, [semaforo] BOOLEAN);
            CREATE TABLE [pontuacao] ([id]INTEGER PRIMARY KEY ASC
ON CONFLICT ROLLBACK AUTOINCREMENT,
            [id_usuario] INTEGER, [valor] INTEGER, [data_ultima_missao]
DATE , [versao_ultima_missao] INTEGER)
          """
       
    logging.warn("o banco de dados sera RECRIADO!")
    conn = conectar_banco_de_dados()
    queries = sql.split(';')
    for query in queries:
        conn.execute(query)
    conn.commit()

Observação: O código poderá ser alterado de acordo com a necessidade do banco.

sexta-feira, 9 de julho de 2010

Blender - Semáforo

Isabella Fontes

Olá,

Nesta semana procurei executar os scripts do semáforo, item essencial em nossa aplicação.
Aqui, há um exemplo de como ler e buscar os objetos na cena, sendo que neste exemplo a preocupação maior se deve ao fato de sincronizar as cores de 2 semáforos, e encontrei bastante dificuldade pois há uma lentidão nestes processos.

Exemplo:

import sys
import time
import os
import Blender
import Blender.Image
from Blender import Mesh
import Blender.Object
import Blender.Scene
from Blender import Material

print Material.Get()

print '\n \n'
matAmarelo = "materialAmarelo"
ma = Material.Get(matAmarelo)
matVermelho = "materialVermelho"
mvm = Material.Get(matVermelho)
matVerde = "materialVerde"
mvd = Material.Get(matVerde)

semaforos = {mvm:True,ma:False,mvd:False}

for sinal in semaforos:
      print ma.rgbCol
      print Material.ColorbandMethod.COLOR
      print 'Cor antes'
      print sinal
      print sinal.getRGBCol()
      if sinal.getName() == matAmarelo:
            print 'Trocando a cor do amarelo'
            sinal.setRGBCol([1.0,0.6,0.0])
      time.sleep(9)
      print sinal.getRGBCol()

while True:
      print 'semaforo 1 - verde'
      print 'semaforo 2 - vermelho'
      time.sleep(6)
      print 'semaforo 1 - amarelo'
      print 'semaforo 2 - vermelho'
      time.sleep(3)
      print 'semaforo 1 - vermelho'
      print 'semaforo 2 - verde'
      time.sleep(6)
      print 'semaforo 1 - vermelho'
      print 'semaforo 2 - amarelo'
      time.sleep(3)

print Blender.Get("datadir")
print dir(Blender)
lista_objetos=Blender.Object.Get()

print lista_objetos

lista_objetos = Blender.Mesh.Get()
print "eba"
print '\n \n \n',lista_objetos
meshName = "meshAmarelo"
me = Blender.Mesh.Get(meshName)
ma = Blender.Material.Get("materialAmarelo")
print '\t \n'
print dir(ma)

for x in lista_objetos:
      print (x)
      print str(x.getProperty())
      print (x.game_properties)
      print '\t \n \n'
      print dir(x)
      print x.materials
      print x.getColorLayerNames()
      print '\n \n'

lista_semaforo = {'amarelo':False,'verde':True,'vermelho':False}
print lista_semaforo
for semaforo in lista_semaforo:
      print 'abrindo semaforo',semaforo
      lista_semaforo[semaforo] = True
      time.sleep(3)
      lista_semaforo[semaforo] = False
      print 'fechando semaforo'

print lista_semaforo

sexta-feira, 2 de julho de 2010

Classes do Projeto

Isabella Fontes

Olá,

Hoje postarei sobre as classes do projeto.
Obs.: Para compreender, há uma pasta chamada spectrum na qual são colocados arquivos comuns, compartilhados entre as demais classes. E é deste modulo que sempre importo as classes.

Imports:

import logging
from spectrum.database import Pessoa
from spectrum.database import Usuario
from spectrum.database import Configuracao
from spectrum.database import Grupo
from spectrum.database import Permissao
from spectrum.database import Pontuacao


################################
#  FUNCOES QUE SAO CHAMADAS DA APLICACAO
#

    def btn_logar_clicked_cb(self,widget):
        """
            Usuario insere seu login e senha. [OK]
            Efetuar conexao e busca se usuario existe. [OK]
            Chamar proxima tela, desaparecer esta. [OK]
        """

        logging.debug("Nome do Usuario : %s . Senha do Usuario: %s"%(self.txt_name.get_text(),self.txt_senha.get_text()))
       
        print 'Executando pedido de conexao para ', self.txt_name.get_text(), self.txt_senha.get_text()
        u = Usuario()
        usuario = u.findUsuarioPorNomePorSenha (self.txt_name.get_text(), self.txt_senha.get_text())
        if usuario.get_id() and usuario.get_id_pessoa():
            pessoa = Pessoa (usuario.get_id_pessoa())
            print 'Seja Bem-Vindo %s'%(pessoa.get_name())
        self.txt_senha.set_text("")
        self.txt_name.set_text("")