Como será o torneio?
Podia ser ao vivo pra gente poder torcer!!!
Este é um espaço para a troca de informações no contexto da disciplina de Lab Prog II
Como será o torneio?
Podia ser ao vivo pra gente poder torcer!!!
Olá, tive alguns problemas para conseguir fazer os testes adequados do servidor/cliente na Etapa2. Como ainda não vi nenhum comentário sobre esta etapa estou preocupado quanto este tópico.
Como deve ser um teste para cliente/servidor?
Onde está o arquivo com o formato de entrega?
Olá Pessoal,
Amanhã, na última aula do curso, teremos a visita do Maurício. Ele é um super especialista em testes e autor de um livro sobre TDD. Para quem quiser ver algo antes da aula, basta procurar
no google pelo nome dele.
Abraço,
Alfredo
Olá Pessoal,
Amanhã teremos um hands-on com o Alexandre Freire no CEC, sala 02 às 10hs.
Quem quiser já dar uma olhada em alguma das palestras dele, basta procurar no google por Alexandre Freire Agile.
Abraço,
Alfredo
ps: Segue a lista com as senhas para usar amanhã
Acabei de ver no Facebook. Não li direitinho, mas parece bem prático e prazeroso de se usar.
InVision
Spoiler: Permite múltiplos cursores nomeados em tempo real, durante o chat!
Olá pessoal!
Vocês sabem como permitir a visibilidade do servidor para outras máquinas, além do local host?
Tentamos "app.run('0.0.0.0', 8080)" e 'app.run('0.0.0.0', debug=False)'
mas ocorrem erros com o cliente.
Alguém sabe como resolver?
Olá, usei a biblioteca lxml para validar o XSD e fiz duas alterações para funcionar e modifiquei o nome pra battle_state.xsd. Já que se trata de um estado de batalha e não um pokémon.
Estão corretas estas modificações? Posso mantê-las?
Outro detalhe é a instalação do lxml e do flask. Consegui instalar o lxml apenas no python3.2 e o flask apenas no 3.4. Obviamente isso não está dando certo e pretendo substituir o flask e continuar trabalhando com o lxml. Alguém fez isso, tem alguma sugestão?
Olá pessoas.
Temos uma dúvida sobre o arquivo .xsd, no modelo fornecido temos o seguinte código para se referir à vida do pokemon:
<xs:element name="health" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="255"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Porém não temos o valor deste atributo, assim como em todos os outros. Supusemos que o arquivo dado era apenas o modelo e logo, nós deveríamos inserir os valores, dessa forma, pensamos que bastaria adicionar o campo "value" na estrutura, obtendo algo como:
<xs:element name="health" value="1000" minOccurs="1" maxOccurs="1">
e nesse caso as demais linhas permanecem as mesmas. A pergunta é: é dessa forma mesmo que deve ser feito?
Não consigo usar o FLASK, pq não é possível importá-lo no python 3.2
Queria saber porque foi sugerido usar um pacote instável para essa versão do python (de acordo com o site oficial do FLASK http://flask.pocoo.org/docs/0.10/python3/) e quais possíveis alternativas para o mesmo.
Grato
pra quem quiser um exemplo de xml pode converter o xsd nesses site
http://www.xsd2xml.com/
Gostaria de saber se há algum problema para o curso, utilizar properties nos nossos códigos. Parece que é a maneira pythonica de se trabalhar com as variáveis, tratando de limitadores, etc. com a vantagem de ser uma forma mais intuitiva para o usuário.
Eu sei que teoricamente quebramos o escopo, mas já vimos que em python, na verdade, tudo é público mesmo...
Monitores / Professor,
Na leitura do arquivo XML, posso considerar que o arquivo sempre está correto?
Grata.
Olá, estive pensando em arrumar o meu primeiro código em python para o miniep6. (um reprodutor de eventos de teclado e mouse)
Mas certamente não conseguirei finalizar no prazo.
A etapa2 inteira teve minieps durante o período em que esteve disponível.
Será possível adiar o miniep6 pra semana do break?
Meu projeto possui algumas classes que visavam a ocorrencia de movimentos que não diminuissem HP.
Como isso não será utilizado gostaria de rever as classes envolvidas, mas pra isso é interessante ter a lista de ataques permitidos.
Será que é possível passa-la antes de ter que entregar a etapa 2?
Não sei se todos já viram, mas achei muito bom...
http://stackoverflow.com/questions/101268/hidden-features-of-python
Especialmente, esse aqui...
from __future__ import braces
O código para colocar em algum padrão precisa ser python?
Segue o material que o Rogério passou pra gente hoje na aula de OpenMP.
Pelo que eu entendi o flask não chega a fazer requests só receber e analisa-los, por isso usei um outro modulo (requests) para fazer isso. Quando uso uma rota gerada pelo flask para fazer um request (get ou post) em outras páginas tudo ocorre bem, mas usando em uma URL gerada pelo próprio flask a página fica em loading e nada acontece.
Tentei usar os responses do flask mas também não funcionou. Alguem pode me ajudar?
Criei um exemplo simples de XML, no caso tem 2 pokemons , mas pode facilmente ser testado com 1 só.
Fiz o teste de validação com o arquivo .xsd disponibilizado e funcionou, mas tenho algumas duvidas:
1- No trecho:
<xs:element name="power" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Não tenho certeza, mas o power dos moves dos pokemons não pode ser maior que 100?
2- Com relação ao HP, eu estava utilizando o valor bruto, no caso HP = 400, mas aparentemente existe uma fórmula que calcular o valor do HP de acordo com um valor entre 0-255. Não tinha visto isso antes.
3- No caso dos ataques:
<xs:element name="type" minOccurs="1" maxOccurs="2">
Cada ataque tem somente 1 tipo ou existem ataques de 2 tipos?
De qualqer forma o arquivo em anexo é compativel com o pokemon.xsd
Oi pessoas.
Não sabemos se estamos fazendo a interação cliente-servidor corretamente. O enunciado não ficou claro, então seria:
1- o servidor é iniciado primeiro,ele lê o próprio pokemon e fica aguardando
2- o cliente é iniciado, lê o proprio pokemon e o envia para o servidor via POST em um objeto battle_state contendo apenas o proprio pokemon (do cliente)
3- servidor responde com objeto battle_state contendo dois pokemons com o ataque cliente-servidor já contabilizados se o servidor começa (caso contrario devolve os dois pokemons sem alteracao)
4- a partir disso o cliente envia o ataque desejado e o servidor contabiliza e responde com o seu ataque tambem calculado
Se essa for a forma correta nosso programa deve ler (via linha de comando, talvez) se deve inicializar modo servidor ou cliente, certo? Nesta lógica como garantiremos que ao inicializar como cliente o oponente iniciará como servidor e vice-versa?
Olá! Estamos com dúvida com relação ao arquivo XML. Quem é responsável por editar? Somente o servidor ou o cliente também pode/deve alterar? Caso ele não possa, como se dá a comunicação entre eles? Além disso, seria possivel postar o material da aula do dia 07/11?
Eu gostaria de conseguir retornar o resultado do analisador e não imprimir. De preferência sem fazer alguma gambiarra mirabolante.
Procurei bastante e não encontrei nada de como fazer isso, alguém sabe?
Estive pensando e números negativos causariam ambiguidade. Por exemplo:
calc> 2 3 4 * - 2 / - 2 *
Poderia resultar tanto em 10 como 16.
Pensei em duas soluções:
Qual solução devo utilizar? Existe alguma outra?
Vai ter alguma aula aprofundando um pouco o assuntos que a etapa 2 abrangem, como os http requests e o flask?
Algumas dúvidas sobre o miniep5,
devo implementar também cálculos com váriaveis?
alem do lex do pacote posso usar o yacc a vontade?
no meu código deve estar bem definido as regras do algoritmo de conversão da para notação posfixa, ou posso fazer como no exemplo do PLY?
Olá Pessoal,
Segue abaixo a mensagem que recebi. Vamos conversar a respeito amanhã na aula.
Alfredo
Olá,
Como struggle é um ataque de certa forma especial, podemos convencionar que o ID 5 na request de ataque indica o uso de struggle?
(supondo que os id significa a posição do ataque numa lista de ataques que normalmente vai de 1 à 4)
Olá!
No post do fórum e na página de entrega do mini EP 5 foi dito que é um EP de flex e Bison, mas o enunciado fala para fazer completamente em Python usando o PLY.
Só para confirmar, é para o EP ser feito com o PLY?
Olá Pessoal,
Segue abaixo uma dica do Hugo para quem quiser usar uma máquina na nuvem.
Abraço,
Alfredo
Abs
Professor... então...
Sabe como dessa vez, diferentemente das outras vezes, o horário de entrega ficou para as 00:00, contra os costumeiros 23:55? Pois é, pensamos que fosse para entregar hoje e nem nos preocupamos em conferir, porque não teria aula hoje nem terça.
Era pra entregar até ontem mesmo? Só nós cometemos esse erro?
Olá Pessoal,
Apenas avisando, as aulas voltam ao normal essa semana. Na quarta vou ensinar mais um padrão de projeto e na sexta, graças a pedidos, combinei uma aula com um guru de
Python, o Luciano Ramalho.
Preparem as suas dúvidas mais profundas de Python!
Abraço,
Alfredo
Como nessa fase nosso programa recebe dois pokemons de uma vez, pois o usuário vai jogar contra ele mesmo com pokemons diferentes a cada turno, eu queria saber se ao invés de usar o stdin:
python3 main.py < pokemon1.txt pokemon2.txt
Eu não posso usar argv, e aí o usuário entra com dois arquivos de pokemons:
python3 main.py pokemon1.txt pokemon2.txt
Pelo menos acho mais ideal para essa fase, até porque eu testei python3 main.py < pokemon1.txt pokemon2.txt e apenas o primeiro é redirecionado para o stdin.
Olá. Estou com um problema e gostaria de saber se alguém tem uma idéia pra me ajudar.
Preciso testar uma função que é basicamente um show(), ou seja, uma coletânia de print()'s.
Para tanto, pensei em redirecionar o stdout da seguinte maneira:
sys.stdout = open('file', 'w')
Então, quando rodo uma função que imprime um texto com print(), o texto vai diretamente para o arquivo file.
Meu problema é que, depois de imprimir as informações, recebo um erro estranho:
AttributeError: '_io.TextIOWrapper' object has no attribute 'getvalue'
Minha dúvida é de onde vem esse erro, pois meu chute é que seja do unittest. Se for isso mesmo, como posso testar valores do stdout com o unittest, sem fazer essa "gambi"?
Bom, depois de ler a respeito, não me contentar e instalar o Pokemon Red no meu celular percebi que alterar a ordem do ataque não é suficiente já que o Quick Attack que gostaríamos de implementar sofre o desempate por velocidade apenas quando ambos pokemons a utilizam.
Então fiz uma classe pra controle do turno que gerencia a ordem de duas habilidades usadas pelos dois pokemons do duelo.
Isso fez com que a ordem de escolha dos ataques seja irrelevante o que me fez alterar um pouco a dinâmica do meu programa (sem a marcação de quem é o turno, já que isso não faz sentido):
26 - Rattata
31 - Charmander
Ataques de Rattata
1 - Tackle (20/20)
2 - Quick Attack (40/40)
Selecione um ataque para Rattata: 1
Ataques de Charmander
1 - SCRATCH (20/20)
2 - GROWL (40/40)
Selecione um ataque para Charmander: 1
Charmander used SCRATCH!
Critical hit!
Rattata fainted!
Batalha encerrada!
Posso manter desta forma? Se não, como fazer pra resolver o problema da prioridade de ataque?
Olá,
O enunciado do EP diz que devemos ler os Pokémons e o ataque desejado, durante a batalha, pela entrada padrão.
Para facilitar a execução do programa, redirecionei a entrada para arquivos contendo as informações sobre os Pokémons, mas ocorre um EOFError quando o primeiro input de ataque é pedido por conta da entrada ter ficado vazia.
Há algum modo de retornar a entrada padrão para o teclado após terminar de ler os arquivos? Ou devo pressupor que redirecionamento não deve ser usado?
A única solução que pensei foi passar os arquivos contendo os dados dos Pokémons por linha de comando, mas isso iria contra o que é pedido no enunciado.
Não entendi o que ocorre quando o usuário é colocado pra dormir ou congelado e nem o que ocorre quando o inimigo usa item de recuperação de HP.
No cálculo do dano, ao calcular o modificador, temos que levar em consideração o tipo do ataque e o tipo do pokemon atacado (ataque de água causa mais dano a um pokemon de fogo e etc). Para tanto, tem uma tabela que estabelece as relações entre os tipos ( http://bulbapedia.bulbagarden.net/wiki/Type/Type_chart#Generation_I ). Porém, na primeira geração tinham alguns erros não intencionais nessa tabela, como o tipo fantasma ter 0x contra psíquicos, quando a intenção era que fosse 2x (dentro do jogo era dito que fantasmas eram bons contra psíquicos, mas o que foi implementado foi diferente). Esses erros foram corrigidos na geração dois. Minha dúvida é se, uma vez que estamos usando apenas as mecânicas da geração 1, também devemos usar a tabela "errada" que ela usava ou se pode ser usada a tabela da geração 2 (obviamente, desconsiderando os tipos dark e steel)
Professor/Monitores/Colegas,
A fórmula do dano passada no enunciado não está clara e encontrei diferentes fórmulas na internet.
Poderia colocar aqui uma explicação para fórmula ou uma nova fórmula que possa ser aplicada?
Grata,
No enunciado está escrito que o pokemon deve ser carregado de um arquivo com a seguinte sintaxe:
<NOME> (do pokemon ou da raça?)
<LVL>
<HP>
<ATK>
<DEF>
<SPD>
<SPC>
<TYP1>
<TYP2>
<NUM ATKS>
<NOME>
<TYP>
<ACU>
<PWR>
<PP>
...
<NOME>
<TYP>
<ACU>
<PWR>
<PP>
No entanto não está claro se o nome é o nome do pokemon ou a raça (se bem que raça no sentido biológico não se aplica a estes nossos amiguinhos virtuais).
Surigiram algumas dúvidas a respeito de encapsulamento. Pelo que eu entendi, devemos usar métodos para acessar os atributos de uma classe, assim não os acessamos diretamente.
Não entendi direito se o problema é acessar os atributos diretamente, ou se é o fato de termos de acessa-los, ou ambos!
Ou seja, se eu tenho uma classe com 5 atributos, seria ruim eu ter getters and setters para todos eles? isso quebraria o encapsulamento?
Gostaria de fazer uma interface gráfica para o ep, pode?
Olá Pessoal,
Segue abaixo o e-mail que o Luciano Ramalho mandou para a lista do CCSL. Vale olhar.
Abraço,
Alfredo
A O'Reilly pediu para eu escrever um blog post com algum assunto do
meu livro, então escrevi esse:
http://radar.oreilly.com/2014/10/python-tuples-immutable-but-potentially-changing.html
O código-fonte da marcação do post está no Github:
https://github.com/fluentpython/orablog/blob/master/changing-tuples.rst
Quem quiser traduzir para compartilhar com alunos pode me mandar um
pull-request que eu publico. A licença é CC-BY-SA.
A mesma historinha pode ser adaptada para Java, Ruby, C++ ou qualquer
linguagem que tenha variáveis de referência.
[ ]s
Luciano
PS. Existe uma tradução bem aceita em português para "aliasing" no
sentido de "apelidamento"? Eu adoraria conhecer!
Há jeito de disponibilizar os arquivos sobre teste da última aula?
Queria saber se é possível deixarem aqui as fórmulas que a gente precisa usar pra calcular dano, como vai usar accuraccy, etc, porque como estamos nos baseando na gen1-2 eu fui procurar fórmula pra usar aquele stat Special e não achei como ele entra dentro do dano que o atk vai causar... É possível deixar as fórmulas aqui pra gente usar? Valeu
Pessoal,
Não sei se mais alguém reparou, mas o link para a documentação do unittest que está no pdf está levando para a documentação da versão 2.* do python.
De qualquer forma, segue o link para a documentação da versão 3 do python
https://docs.python.org/3/library/unittest.html
Não entendi a função da constante epsilon.
Para truncar um valor, a maneira que prefiro usar é a conversão em string, por exemplo para o número 123.456789:
>>> numero = "%.3f" % 123.456789 >>> numero '123.457'
Onde epsilon não precisaria ser usado.
A exigência do epsilon seria para arredondamento, portanto? Ou devo criar uma função própria de truncamento, utilizando divisões, etc? Se sim, posso usar o módulo math, com funções outras, que não as que serão testadas?
- Extra offtopic: Aqui no PACA não tem como eu adicionar um código sem formatação, sem precisar editar código HTML e incluir a tag <pre>?
Olá!
No enunciado do projeto dentre os tipos descritos há um tipo 6:Bird. Esse tipo não existe no jogo, deverá existir no projeto? Além disso, faltam os tipos Steel e Fairy.
Além disso, o enunciado diz que apenas ataques de dano direto devem ser implementados. Ataques com turno de recharge (como Hyper Beam) devem ser implementados? Ataques que tem efeitos secundários como burn, paralysis, poison devem ter o efeito secundário ignorado? Ataques que tem efeitos negativos para o usuário ou alvo além do dano (como Mud Bomb que tem chance de diminuir Accuracy) devem ter os efeitos ignorados? Ataques que tem prioridade (Quick Attack) devem ser ignorados? Afinal, quais ataques devem ser implementados e quais devem ficar de fora, mais especificamente?
Na descrição de ataques, não há um campo para se o ataque é especial ou físico. Isso deve ser ignorado, ou definido apenas pelo tipo como era até a Gen IV?
Na descrição dos Pokémon, há apenas o campo 'especial' que seria a forma obsoleta da gen I/gen II. É para seguir as regras/fórmulas do jogo da gen II? Sobre as fórmulas, é necessário utilizar valores de EV e IV para calcular os valores reais dos stats a partir dos valores base, isso deve ser adicionado? Ou ignorado na fórmula? Ou salvamos os valores diretamente sem usar fórmula nenhuma e uma vez criado o pokémon isso nunca muda (cada pokémon instanciado com valores específicos para os stats, ao invés de pegar os base da espécie e calcular os stats de acordo)? Pelo o enunciado, me parece que o pokémon é criado completamente a partir dos valores passados pela entrada, ou seja, sem ter restrição nenhuma quanto à veracidade dos stats e espécie do pokémon (que nem está nos atributos), é isso mesmo?
No fim do enunciado do ep4 está escrito que devemos usar uma constante eps para testar as respostas das funções matemáticas. Isso dá a entender que precisamos fazer funções fazem as mesmas coisas que a biblioteca matemática faz e depois comparar os resultados, o que, pra mim, não faz sentido, porque se já fizemos essas funções, pra que usar a biblioteca matemática ?
Acho que parece muito mais justo ver se os resultados fazem algum sentindo, como algum outro colega propos num post comparar sen(a+b) usando cos, ou ver se as funções levantam exceções quando mandamos um valor onde a função não está definida.
O que vocês acham?
Olá, posso utilizar outras funções pra teste?
Por exemplo testar sen(a+b) usando cos?
Para quem tiver interesse, uma IDE com várias ferramentas úteis.
Eu não entendi muito bem o enunciado da opção 2 do mini-ep3. O script deve receber somente entradas do tipo A e transformar em PTR, ou ele pode receber entradas PTR que devam ser transformadas em A?
Estou acostumado a ter arquivos de teste para poder testar os eps, mas a gente não vai nos mini-eps?
Por exemplo, nesse mini-ep3, poderiam ter disponibilizado um arquivo de teste para cada opção, não?
Olá Pessoal,
Acabo de descobrir que além do ipython, tem também o ipython notebook que abre um servidor local no navegador e dá um ambiente bem agradável. É útil
inclusive para gerar relatórios. Vocês já conheciam?
Abraço,
Alfredo
Olá, acho que finalizei o EP. Seguem minhas ultimas dúvidas:
Estou criando este tópico para que possamos compartilhar arquivos de teste.
Este arquivo foi do meu projeto final de BD.
Na descrição do EP está dizendo que o arquivo deve ser passado por parâmetro.
Porém, no exemplo dado, parece que um diretório é passado...
O programa recebe o "estruturas.sql" como parametro, ou um diretório que contêm este arquivo?
E tambem
CONSTRAINT '<restricao>' FOREIGNKEY
('camp') REFERENCES 'tabela_de_origem'
('campo_da_tabela_de_origem')
Não deveria ter em algum lugar qual a tabela atual?
Por exemplo, a tabela X tem um campo <idX> e a tabela Y tambem tem um campo <idX> e X deve ser inserido antes de Y.
em estruturas.sql vai ter algo assim:
CONSTRAINT '<restricao>' FOREIGNKEY
('idX') REFERENCES 'X'
('idX')
Eu sei que alguem depende de X, mas quem?
Nao estou conseguindo instalar a biblioteca. sempre retorna ImportError: No module named 'bs4'
Alguma ideia?
Olá pessoal, Tudo bem ?
Só queria deixar um link da palestra sobre engenharia de solfware que vai ocorrer
no Bloco B do IME/USP, sala B-5 no dia 26/09/2014 com David Parnas, mais informações:
http://ccsl.ime.usp.br/pt-br/news/14/09/17/david-parnas-fala-sobre-engenharia-de-software-no-ccsl
Divertido
http://s3.crashworks.org.s3-website-us-east-1.amazonaws.com/if-programming-languages-were-vehicles/
Existe algum guia sobre como fazer esse arquivo? Obrigado
Estou com dificuldade em achar tutoriais/apostilas de shell script ou outros tipos de scripts.
Alguém tem alguma bibliografia boa?
Estou tentando me conectar com as páginas dos cardápios com http.client, mas recebo 403 - Forbidden de status. Com o urllib3, então, quando dou read() e imprimo, tenho uma string vazia... alguém teve problemas semelhantes?
Uma dúvida rápida.
A opção pco, se refere a qual bandex?
Na primeira opção, ao comparar o nome, deve-se considerar que "Fulano Tal" é igual a "Fulano tal" que é igual a "fulano tal"? Ou maiúsculas e minúsculas podem ser consideradas como saídas diferentes? Ou podemos assumir que não haverá tal diferença?
Quanto à primeira opção que podemos escolher do miniEP, devo no começo ler do meu programa um arquivo que contenha todos os demais usuários?
Por ex, faria:
users = open("usuarios.txt", "r")
codigo
?
Caso sim, as linhas desse arquivo também devem seguir o padrão abaixo?
<usuario>:x:<UID>:<GID>:<Nome de usuario>:<home>:<shell>
Ou posso simplesmente ter um arquivo:
<usuario>:<UID>:<Nome de usuario>
que seriam as informações que eu preciso de fato?
Pessoal,
Fiz um pequeno sistema de build para usar nos EPs.
Ele lê um arquivo de configuração, testa o EP (você tem que desenvolver seu teste) e se der tudo certo ele zipa os arquivos para um zip com o nome adequado
O uso é livre e está aberto para colaboração.
Espero que gostem
A ideia que eu passei na aula para criar um Singleton não funciona (deu "certo" porque eu retornei o hash da variável _INSTANCIA ao invés do self, ou seja, ele sempre retornava o mesmo número no print mesmo que os objeto sejam diferente).
Existem diversas maneiras diferentes para se fazer isso em Python. Por exemplo, algo similar ao que eu fiz na aula seria esse link, sobre-escrevendo o método __new__() para fazer da maneira correta (que é o método chamado durante a instância do objeto). Mas ele tem alguns problemas. Outras maneiras diversas existem, mas aparentemente o jeito mais comum de usar o padrão de projeto Singleton é simplesmente criar um módulo: https://stackoverflow.com/questions/6255050/python-thinking-of-a-module-and-its-variables-as-a-singleton-clean-approach e http://lucumr.pocoo.org/2009/7/24/singletons-and-their-problems-in-python/.
E se vocês fizerem uma busca, várias pessoas vão dar uma solução diferente ou vão falar o porque não fazer. Mas se você precisar mesmo, recomendo usando módulos, é o jeito mais simples mesmo.
Estou com problemas para dar o segundo merge. Depois de arrumar os conflitos entre o impl1 e o impl2 fiz um checkout para o branch pentagono e fiz o merge com o impl1. Não ocorreram conflitos, então fiz um add no arquivo pentagono.py e tentei dar commit. Ele diz:
$ git commit -m 'Fazendo merge de impl1 com pentagono. Não existem conflitos'
On branch pentagono
Your branch is ahead of 'origin/pentagono' by 4 commits.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
É isso que eu tenho que fazer? Preciso criar outro branch pra dar merge em pentagono e em impl1?
Pode fazer todos os merges no master ou é preciso fazer a partir do branch que eles foram criados, ou seja, preciso fazer merge entre pentagono, perimetro_pent_reg_impl1 e perimetro_pent_reg_impl2, e depois fazer merge entre master e pentagono ou posso fazer merge entre master e pentagono, depois fazer merge entre master e perimetro_pent_reg_impl1, depois entre master e perimetro_pent_reg_impl2, etc.
Olá pessoal
Quase toda linguagem de programação tem seus padrões de estilo, e Python não é diferente. Escrever código que segue os padrões é importante, pois outros programadores vão entender seu código mais rapidamente. Aqui vão alguns links interessantes para aqueles que quiserem se aprofundar mais nos padrões da linguagem:
O que você quer dizer com: Vocês devem entregar o código fonte final do branch master?
No arquivo pentagono.py na classe Regular(Pentagono) o init não deveria ser:
1 2 |
super().__init__(tamanho, tamanho, tamanho, tamanho, tamanho) // Esse super().__init__(5) // Ao inves desse? |
e o return do perimetro:
1 2 |
return self.num_lados() * self.tamanho //Esse return self.lados * self.tamanho //Ao inves desse? |
Não sei se alguém aqui chegou a jogar algum, mas o melhor na opinião foi o Super Mario Breaker.
Melhor jogabilidade, power-ups, fases.
Parabéns a equipe que desenvolveu. Aliás, parabéns a todas as equipes, dado que tiveram um mês para desenvolver e os resultados sairam super legais
Pra não dizer que eu não postei, aqui estão os docinhos da felicidade:
http://www.hersheys.com/reeses/products.aspx#/REESE'S-Peanut-Butter-Cups
Dica: tem pacotes gigantes de reese's minis!
Olá pessoal,
Se alguém tiver interesse por algum tema específico e queira que o professor Valdemar Setzer fale sobre ele, por favor, escrevam suas sugestões aqui.
Conheça um pouco mais sobre o professor Valdemar Setzer em:
http://www.ime.usp.br/~vwsetzer
Olá Pessoal,
Esse é um espaço para discussões e para tirar dúvidas de Lab Prog II. Além dos alunos e do professor, também adicionei vários alunos mais experientes, que podem ajudar com as dificuldades técnicas, são
eles (Diego, Diogo, Rafael e Thiago).
Abraço,
Alfredo