quarta-feira, 17 de dezembro de 2008

O Projeto

Hoje vou descrever o projeto que tenho em mente para este mini-curso online. Este consiste em um jogo de damas, que é um dos jogos de tabuleiros mais tradicionais do mundo. Este jogo é ideal por ter regras simples o suficiente para o propósito deste projeto.

Vou descrever os detalhes do jogo, o que facilitará na hora de entender as estruturas de dados utilizadas posteriormente, quando estivermos trabalhando no projeto em si.

  1. O tabuleiro é formado por 8 colunas e 8 linhas. Cada casa do tabuleiro tem uma cor, branca ou preta. As cores das casas são alternadas.
  2. São dois jogadores. Cada jogador tem a sua disposição 12 peças, onde as peças de um jogador tem uma cor diferente da do outro, uma cor mais clara e outra mais escura.
  3. Na posição inicial, os jogadores irão dispor suas peças sobre as casas negras em regiões opostas do tabuleiro, ocupando assim as casas negras das 3 últimas linhas do seu lado do tabuleiro.
  4. O movimento das peças será sempre na diagonal, e sempre ocupando uma casa negra e sempre avançando para frente.
  5. O ato de "comer" uma peça do adversário consiste em pular sobre esta pedra, obedecendo o movimento em diagonal e para frente, desde que a casa que será ocupada ao final do movimento esteja livre.
  6. É permitido "comer" mais de uma peça em um movimento, desde que se obedeça a regra número 5 entre os pulos.
  7. Vence o jogador que eliminar todas as peças do adversário
  8. Caso alguma peça do jogador atinja a última linha do lado oposto do tabuleiro, esta peça automaticamente é convertida em uma "Dama"
  9. As Damas devem obedecer as mesmas regras do movimento que as demais peças, com exceção que estas podem tanto avançar como retroceder no tabuleiro.

Estas são as regras do jogo. Note que, apesar de o jogo ser bastante simples, existem várias regras.

Com o projeto definido, vamos á parte que nos interessa: programar!

Vou começar explicando os tipos de dados que nós temos acesso na linguagem Python. Entre os tipos básicos temos: inteiros, strings e valores reais.

Os dados inteiros são os números inteiros, positivos e negativos, incluindo o zero. String é o tipo de dados que armazena texto. E os valores reais são os dados que armazenam números com casas decimais, conhecidos como de ponto flutuante. Exemplos de inteiros são: 1, 5, 0, -1, 65535, etc. Exemplos de string: "paulo", "maria", "o rato roeu a roupa do rei de roma". E de ponto flutuante: -1.55, 99.9999, 0.12345.

Note que as strings são delimitadas por aspas duplas. No caso da linguagem Python elas também podem ser delimitadas por aspas simples.

Como forma de praticar, podemos utilizar o prompt interativo do interpretador Python:

>>> print 5
5
>>> print 5 + 2
7
>>> print 'Joao Paulo'
Joao Paulo
>>> print 1.5
1.5
>>> print 2.5 * 2
5.0
>>> print 'Joao' + " Paulo"
Joao Paulo

Outros tipos de dados são as listas e tuplas. Listas são, como o nome diz, listas de objetos. Podem conter inteiros, strings, ponto flutuante e qualquer outro tipo de objeto, incluindo listas e tuplas. As tuplas são um tipo especial de listas. Estas são imutáveis, o que significa que uma vez definidas não podem ter seu conteúdo alterado. As listas são definidas com colchetes e as tuplas com parenteses. Vejamos abaixo:

>>> print [1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
>>> print (1, 2, 3, 4, 5)
(1, 2, 3, 4, 5)
>>> print []
[]
>>> print ()
()
>>> print (1,)
(1,)
>>> print [1]
[1]
>>> print [1, [2, 3], 4]
[1, [2, 3], 4]

Podemos notar alguns detalhes acima. Primeiro que podemos definir listas e tuplas vazias. Segundo, para definir uma tupla com apenas um elemento devemos por uma vírgula após o elemento, caso contrário o interpretador entederia isto apenas como um agrupamento normal utilizando parenteses. E, no último exemplo, mostro como incluir uma lista dentro de outra lista. A lista [2, 3] neste caso é o segundo elemento da lista que o contém.

Para terminar o post desta semana, vou introduzir o conceito de variáveis. As variáveis são uma espécie de nome que nós damos aos objetos a fim de identificá-los de forma mais prática. Damos o nome de "atribuição" o ato de ligar um nome a um valor. Vejamos nos exemplos:

>>> nome = 'Joao Paulo'
>>> print nome
Joao Paulo
>>> x = 10
>>> y = 20
>>> print x * y
200
>>> x = 5
>>> print x * y
100
>>> minha_lista = [1, 2, 3, 'Paulo']
>>> print minha_lista
[1, 2, 3, 'Paulo']
>>> print minha_lista[0]
1
>>> print minha_lista[-1]
'Paulo'
>>> minha_lista[1] = 5
>>> print minha_lista
[1, 5, 3, 'Paulo']
>>> del minha_lista[-1]
>>> print minha_lista
[1, 5, 3]

Nos exemplos acima definimos algumas variáveis:

  • nome referenciando a string 'Joao Paulo'
  • x, de valor inteiro, inicialmente 10 e mais a frente alterado para 5
  • y, de valor inteiro 20
  • minha_lista, uma lista com 3 inteiros e uma string

Note que para termos acesso a elementos individuais de uma lista devemos escrever o nome da variável e em seguida o índice do elemento entre colchetes. O índice do primeiro elemento sempre será zero. Como se pode observar, também podemos utilizar índices negativos. Neste caso os índices se referem ao final da lista, sendo que o último item sempre terá índice -1.

Bom, por hoje é isso. Na próxima semana irei descrever como criar scripts e dar uma sequência lógica a um programa.

6 comentários:

Anônimo disse...

Amigo esse negócio de print + variavel não funcionou aqui.
Estou usando o python 3.0 e nos seu exemplo é o 2.5. Tem algum problema?
>>> f ='daniel'
>>> print f
SyntaxError: invalid syntax (pyshell#10, line 1)

Anônimo disse...

descobri. tem que ser: print (f)
COnfere?

João Paulo Farias disse...

Olá Daniel!

Você deve estar utilizando Python 2.6 ou 3.0. Como disse no meu post anterior, estou utilizando Python 2.5, no qual o comando print funciona sem o uso de parenteses.

Na versão 2.6 em diante você realmente precisa utilizar os parenteses.

Até a próxima!

--
JP

Danilo disse...

Tem muita diferença de uma versao do python pra outra?

PhanterJR disse...

Eu estou usando a versão 2.7, e funcionou como foi exposto no post, acredito que a sintaxe com parenteses seja característica da versão 3.0, pois é onde começa haver a incompatibilidade de versões, ou seja, a versão 2.7 (no momento a mais atual das antigas versões) roda todos os códigos feitos em versões anteriores, já a versão 3.0, é um novo projeto, muitos dos módulos python ainda não são compatíveis com essa nova versão. O WXpython (possibilita a criação de interface em python) não é compatível ainda com a versão 3.0, portanto, para o aprendizado, é melhor usar a versão 2.7 ao invés da 3.0.

Unknown disse...

Faz esse curso em vídeo e posta udemy que eu compro ele, só pra ver se funciona mesmo