Skip to content

Instantly share code, notes, and snippets.

@brunoalano
Created December 11, 2012 02:41
Show Gist options
  • Save brunoalano/4255470 to your computer and use it in GitHub Desktop.
Save brunoalano/4255470 to your computer and use it in GitHub Desktop.
/**
* 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