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))


Scripts de listagem de dados

Maria Luíza Santinho Lima Monteiro

Bom dia!
Essa semana estive desenvolvendo os scripts de algumas listagens necessárias para o controle de dados do sistema. Segue o código abaixo:

def procurarUsuarioPorLoginPorSenha(self, login, senha):
      """
            @params = nome do usuario e senha.
            Retorna o usuarios com login e senha
      """

      logging.debug("%s: Procurando usuário por login (%s) e senha (%s)"%(str(time.asctime()), login, senha))
      cursor = self.connection.cursor()
      cursor.execute("SELECT id_usuario FROM usuario WHERE login=? AND senha=?",(login, senha,))
      usuario = None
      for row in cursor:
            usuario = Usuario(row['id_usuario'])
      return usuario


def listarUsuarioConfiguradorDeJogo(self):
      """
            Retorna lista de usuarios administradores e orientadores (são os que podem configurar o jogo)
      """

      logging.debug("%s: Listando usuários administradores e orientadores (são os que podem configurar o jogo)" %(str(time.asctime())))
      cursor = self.connection.cursor()
      cursor.execute("SELECT id_usuario FROM usuario WHERE id_grupo = 1 OR id_grupo = 2")
      listaUsuarios = []
      for row in cursor:
            usuario = Usuario(row['id_usuario'])
            listaUsuarios.append(usuario)
      return listaUsuarios


def listarTodosUsuariosAdministradores(self):
      """
            Retorna lista de usuários administradores
      """

      logging.debug("%s: Listando todos os administradores" %(str(time.asctime())))
      cursor = self.connection.cursor()
      cursor.execute("SELECT id_usuario FROM usuario WHERE id_grupo = 1")
      usuariosAdministradores = []
      for row in cursor:
            usuario = Usuario(row['id_usuario'])
            usuariosAdministradores.append(usuario)
      return usuariosAdministradores


def listarAdministradoresLogadosPorData(self, data_ultimo_login):
      """
            @params = data do ultimo login
            Retorna lista de administradores que logaram no dia anterior
      """

      logging.debug("%s: Listando administradores logados por data (%s)" %(str(time.asctime(), data_ultimo_login)))
      cursor = self.connection.cursor()
      cursor.execute("SELECT u.id_usuario, p.nome FROM pessoa AS p INNER JOIN usuario AS u WHERE p.id_pessoa = u.id_pessoa AND u.id_grupo = 1 AND u.data_ultimo_login = ?", data_ultimo_login)
      listaAdministradores = []
      for row in cursor:
            administrador = Usuario(row['u.id_usuario'])
            listaAdministradores.append(administrador)
      return listaAdministradores


def listarTodosUsuariosOrientadores(self):
      """
            Retorna lista de usuarios orientadores
      """

      logging.debug("%s: Listando usuários orientadores"%(str(time.asctime())))
      cursor = self.connection.cursor()
      cursor.execute("SELECT id_usuario FROM usuario WHERE id_grupo = 2")
      listaOrientador = []
      for row in cursor:
            usuario = Usuario(row['id_usuario'])
            listaOrientador.append(usuario)
      return listaOrientador


def listarTodosUsuariosAlunos(self):
      """
            Retorna lista de usuarios alunos
      """

      logging.debug("%s: Listando usuários alunos"%(str(time.asctime())))
      cursor = self.connection.cursor()
      cursor.execute("SELECT id_usuario FROM usuario WHERE id_grupo = 3")
      listaAlunos = []
      for row in cursor:
            usuario = Usuario(row['id_usuario'])
            listaAlunos.append(usuario)
      return listaAlunos


def ordenarAlunosPorPontuacao(self):
      """
            Retorna lista de pessoas (alunos) ordenados por pontuacao
      """

      logging.debug("%s: Ordenando alunos por pontuação"%(str(time.asctime())))
      cursor = self.connection.cursor()
      cursor.execute("SELECT u.id_usuario, pe.nome, po.valor_pontuacao FROM pessoa AS pe INNER JOIN pontuacao AS po INNER JOIN usuario AS u WHERE pe.id_pessoa = u.id_pessoa AND u.id_usuario = po.id_usuario AND u.id_grupo = 3 ORDER BY valor_pontuacao DESC")
      listaAlunos = []
      for row in cursor:
            usuario = Usuario(row['u.id_usuario'])
            listaAlunos.append(usuario)
      return listaAlunos

Documentação de ajuda para os usuários

Karl Schiewaldt

Olá!

Agora, no fim do projeto, é necessário que façamos uma documentação de ajuda para o usuário. Essa documentação conterá tudo o que é necessário para o jogador criar seu cadastro, alterar dados caso já esteja cadastrado, controles e elementos que compõem a tela do jogo.
Para os orientadores, teremos tópicos para a configuração de certos parâmetros, exemplos de metodologia que poderão ser utilizadase as regras abordadas, para que os orientadores passem aos alunos.
E para de uso geral, orientadores, alunos e administradores, temos tópicos explicando os grupos de usuários, introdução ao jogo e créditos e agradecimentos.

O documento está em fase de desenvolvimento, ainda faltam alguns tópicos a serem finalizados, em breve ele será postado aqui!

Caso queira nos deixar comentários, clique no título deste post.

Até a próxima! (:

sexta-feira, 17 de setembro de 2010

Capa e Etiqueta de CD

Wellington Moreira da Silva

Bom Dia!
Hoje eu vou postar a capa e a etiqueta escolhidos para serem usados no CD do projeto.

Segue abaixo a capa:


E a seguir a etiqueta:

Filmagem da Apresentação de Aplicativos (03/09)

Vinicius Sato Jacintho

Como foi dito pela Maria Luíza no dia 03 de setembro, a nossa empresa fez uma apresentação de Aplicativos II solicitada pelo Professor Rodrigo (Flash).
Segue abaixo o vídeo da nossa apresentação.

Palavra Chave Mais Importante

Maria Luíza Santinho Lima Monteiro

Bom dia!
Como foi postado pelo Karl, o nosso site possui várias meta tags do tipo keywords. Porém dentre todas as palavras ou expressões utilizadas como palavra chave existe uma de maior importância, que é a primeira que deve ser colocada.
A palavra chave mais importante para o site da nossa Empresa é "jogo de trânsito", porque resume básica e sucintamente sobre o que se trata o nosso projeto.

Classificação no Google

Karl Schiewaldt

Olá!

Como postado anteriormente, nosso site, finalmente, está online no servidor do CTI (http://200.145.153.91/spectrum/site). Mas ainda faltava uma coisa: a Indexação.

Mas o que é indexar um site?

Nos mecanismos de busca, o termo indexar é utilizado para dizer que prepararemos nosso site para ser rastreado pelos robots destes mecanismos, para que, quando seja feita a pesquisa em algum site de buscas, como o Google, utilizando certas palavras-chave, nosso site seja classificado e apareça entre os resultados da pesquisa.

Para que possamos indexar o site, precisamos colocar algumas tags na sessão head do site, são as chamadas Meta Tags. Logo abaixo, colocarei as Meta Tags que utilizamos, e, em seguida, uma breve explicação sobre ela.

META NAME="DESCRIPTION" CONTENT="O jogo tem como finalidade entreter os usuários não deixando de ensiná-los, de forma criativa e responsável. Abrange a necessidade do uso de cinto de segurança, respeito aos semáforos e dos limites de velocidade. O jogo está sendo desenvolvido pelo grupo Spectrum, criado para o projeto de conclusão do curso técnico de informática. Ananda Brasolotto de Santis, Isabella Fontes dos Santos, Karl Schiewaldt, Maria Luíza Santinho Lima Monteiro, Vinícius Sato Jacintho, Wellington Moreira da Silva, CTI, FEB, UNESP, 73B, projeto, 2010"
* A meta tag DESCRIPTION fornece aos mecanismos de busca uma breve descrição do conteúdo do nosso site.

META NAME="KEYWORDS" CONTENT="jogo de trânsito, spectrum, Spectrum, SPECTRUM, grupo Spectrum, educar, EduCar, jogo EduCar, jogo educar,trânsito, carro, leis, leis de trânsito, regras de trânsito, cidade, semáforo, semáforos, velocidade, cinto de segurança, Ananda Brasolotto de Santis, Isabella Fontes dos Santos, Karl Schiewaldt, Maria Luíza Santinho Lima Monteiro, Vinícius Sato Jacintho, Wellington Moreira da Silva, CTI, FEB, UNESP, 73B, projeto, 2010"
* Já a tag KEYWORDS indica aos Robots dos mecanismos de busca as palavras-chave do nosso site, sendo as primeiras palavras as de maior relevância.

META NAME="ROBOT" CONTENT="Index, Follow"
* A tag ROBOTS diz o que os Robots devem fazer neste site. Neste caso, a tag diz para os Robots que o site em questão deve ser indexado e seus links seguidos por eles.

META NAME="LANGUAGE" CONTENT="PT"
* A tag LANGUAGE indica ao mecanismo de busca qual a linguagem predominante do site. No nosso site, a linguagem que predomina é o português.

META HTTP-EQUIV="CONTENT-TYPE" content="text/html; charset=iso-8859-1"
* Já a tag CONTENT-TYPE diz qual é o tipo do conteúdo do site, ou seja, qual a lingaguem que utilizamos no site e sua codificação.

Até mais! (:

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!

Problema e solução - textura X cor

Ananda Brasolotto De Santis

Quando colocamos o jogo-teste da Isabella para rodar, vimos que algumas partes do cenário, como casas e prédios, ficam transparentes. Observando, percebemos que isso acontece quando são misturadas, em um único objeto, textura e cor. Aparece apenas a textura, mas a cor não. Fica uma parede translúcida, e só dá para enxergar o contorno. Mas eu já pensei em uma solução para esse problema: ao invés de adicionar o material de cor nas partes do cenário que precisam de textura também, eu salvo uma imagem só com a cor que queremos adicionar, e ao invés de colocar uma cor no objeto, eu adiciono essa imagem como textura. É uma solução prática e eficaz, e toma quase o mesmo tempo de adicionar uma cor.

sexta-feira, 10 de setembro de 2010

Banner

Wellington Moreira da Silva

Segue abaixo o banner escolhido e aprovado para ser utilizado pela empresa:

Pastas de Aplicativos e de TSPD

Maria Luíza Santinho Lima Monteiro

Bom dia!
Estamos em semana de provas. E além das provas, também é época de fazer as entregas das pastas referentes às matérias de TSPD e Aplicativos. Portanto, ontem (5ª feira, 09/09) o nosso grupo entregou a pasta de TSPD referente ao 3º bimestre e amanhã (sábado, 11/09) será a entrega da pasta de Aplicativos.
Para ter acesso aos conteúdos clique abaixo:
Pasta de TSPD
Pasta de Aplicativos

Semana de provas

Karl Schiewaldt

Olá!
Esta semana entramos em nossa penúltima semana de provas no CTI. E para que tenhamos um bom desempenho nas provas, estamos nos dedicando mais para as provas, não deixando, é claro, nosso jogo de lado.
Então, até dia 14, quando acabam as provas, e boa sorte para nós nessa reta final! :D

Até mais!

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

Teste - carros programados

Ananda Brasolotto De Santis

Eu e a Isabella estávamos testando o jogo com algumas poucas casas e prédios, com carros que tem rota programada por ela. Esses carros serão os "figurantes", já que não há rua em que se ande de carro sem nenhum outro carro transitando. Tem apenas algumas partes do cenário, pois tinha alguma casa específica que travava o jogo, e estamos tentando descobrir qual delas que é.

sexta-feira, 3 de setembro de 2010

Apresentação de Aplicativos - 03/09/2010

Maria Luíza Santinho Lima Monteiro

Bom dia!
Hoje (03/09) faremos mais uma apresentação de Aplicativos, coordenada pelo professor Rodrigo Carvalho (Flash). Nela serão apresentadas, além de informações sobre a nossa empresa, a empresa favorecida, o vídeo e a situação problema que nos motivou a fazer o projeto, também algumas telas de interface do jogo. Segue abaixo o arquivo ".ppt". Lembrando que o vídeo é o mesmo já postado em 21 de maio de 2010 e em 10 de junho de 2010.

Donwload: Apresentação de Slides

Script para envio de e-mail

Karl Schiewaldt

Olá!
Como especificado em nossa proposta e no cronograma, nosso site teria um formulário para contato do usuário com o grupo. E ontem, conseguimos terminar.
Basicamente, encontramos uma classe que envia e-mails, o PHPMailer, onde nós colocamos a pasta com os itens da classe, na pasta onde se encontra nosso site no servidor, e fizemos o script em PHP para pegar os dados do formulário, montar o e-mail, e enviá-lo ao nosso e-mail (empresa.spectrum@gmail.com).

E aqui está nosso script:

    $nome=$_REQUEST['nome'];
    $email=$_REQUEST['email'];
    $assunto=$_REQUEST['assunto'];
    $mensagem=$_REQUEST['mensagem'];

    function Enviar($assunto,$mensagem,$email,$nome)
    {
        require_once('phpmailer/class.phpmailer.php');
        $phpmail = new PHPMailer();
        $phpmail->IsSMTP(); // envia por SMTP
        $phpmail->Host = 'ssl://smtp.gmail.com';
        $phpmail -> Port = 465;
        $phpmail->SMTPAuth = true; // Caso o servidor SMTP precise de
autenticacao
        $phpmail->Username = "empresa.spectrum@gmail.com"; //SMTP
Email
        $phpmail->Password = "projetocti2010"; // SMTP Senha
        $phpmail->IsHTML(true);   
        $phpmail->FromName = "$nome ($email)"; //Nome do remetente
        $phpmail->AddAddress("empresa.spectrum@gmail.com");
//Destinatario
        $phpmail->Subject = $assunto; //Assunto
        $phpmail->Body = $mensagem; //Mensagem
        $send = $phpmail->Send();
    }
    Enviar($assunto,$mensagem,$email,$nome);
?>

Foi retirada a parte de alerta ao usuário, já que o Blogger tem problemas com as tags HTML que são utilizadas aqui.

Até mais! (:

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."

Cenário da cidade

Ananda Brasolotto De Santis

Olá. Eu continuo trabalhando no cenário da cidade. Abaixo, estão três imagens do cenário que eu venho desenvolvendo. São imagens do próprio ambiente do blender, e não renderização ou do próprio jogo. Então, tem dois tipos de imagens abaixo: a no modo texturizado e no modo sólido.



Modo Texturizado - as imagens que são adicionadas aos objetos para dar-lhes texturas e mais proximidade com a realidade.


Modo sólido - quando não se usa textura, se usa as cores, que aparecem nesse modo de visualização.