Created
December 11, 2012 02:41
-
-
Save brunoalano/4255470 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Jogo da Velha | |
* | |
* Desenvolvido em D, com intuito de aprendizado e nenhum uso | |
* em aplicações reais. | |
* | |
* @author Bruno Alano Medina < http://brunoalano.me > | |
* @version 0.1 | |
*/ | |
import std.stdio; | |
import std.conv; | |
/** | |
* Exibir mapa | |
* | |
* Exibimos o mapa do jogo contendo os valores | |
* do array. | |
* | |
* @param ubyte[][] (reference) | |
* @return void | |
*/ | |
void showMap( ref ubyte[][] array ) | |
{ | |
foreach( ref line, int line_count; array ) | |
{ | |
write( line_countm, ". "); | |
foreach( ref column; line ) | |
{ | |
write( column, " " ); | |
} | |
write('\n'); | |
} | |
} | |
void main () | |
{ | |
/* | |
* Array multidimensional de elementos | |
* Unsigned Byte (8 bits) com índices de | |
* 0~9[0~9] | |
*/ | |
auto map = new ubyte[][](3, 3); | |
/* | |
* Assert Tests | |
* | |
* Vericiamos se foi criado com sucesso nosso | |
* mapa bidimensional | |
*/ | |
assert( map.length == 3, "O tamanho de linhas está incorreto!" ); | |
assert( map[0].length == 3, "O tamanho de colunas está incorreto!" ); | |
assert( map[0][0] == 0, "O valor padrão está incorreto!" ); | |
/** | |
* Função de Jogar | |
* | |
* Recebemos como parâmetro os índices X,Y e realizamos | |
* testes para verificar se eles estão dentro do padrão. | |
*/ | |
auto joga = delegate bool( int x, int y ) | |
{ | |
assert( x >= 0 && x <= 2 , "Parâmetros incorretos!"); | |
assert( y >= 0 && y <= 2, "Parâmetros incorretos!"); | |
map[x][y] = 1; | |
return true; | |
}; | |
/* | |
* Interação com o usuário | |
* | |
* Recebemos as posições X e Y que serão introduzidas | |
* pelo usuário | |
*/ | |
write( "X: " ); | |
auto x_pos = stdin.readln(); | |
write( "Y: " ); | |
auto y_pos = stdin.readln(); | |
/* | |
* Executamos a função joga | |
*/ | |
bool status = joga( parse!int(x_pos), parse!int(y_pos) ); | |
showMap( map ); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment