Написать игру "Кубики" - C#
Формулировка задачи:
Здравствуйте. Мне нужна помощь в решении задач (тема уже заезженная - про кубики). Изучаем С# и соответственно коды нужны именно на нем. У меня есть коды на С++. Сказали, что из С++ в С# не сложно переделать, но зависит от программы. Прошу на примере этих задач показать, как можно изменить код и в чем же специфика языка С#, работа с трехмерным массивом затруднительна. Всем спасибо, кто откликнется.
Решение задачи: «Написать игру "Кубики"»
textual
Листинг программы
using System;
class Program
{
enum Projections { XY, XZ, YZ };
static void Main( string[] args )
{
const int N = 3;
bool[,,] cube = new bool[ N, N, N ];
Random r = new Random();
for ( int i = 0; i < N; i++ )
for ( int j = 0; j < N; j++ )
for ( int l = 0; l < N; l++ )
cube[ i, j, l ] = r.Next( 0, 2 ) == 0 ? true : false;
bool[,] tmp = Projection( cube, Projections.XY );
for ( int i = 1; i < N - 1; i++ )
for ( int j = 1; j < N - 1; j++ )
{
bool flag = true;
if ( tmp[ i, j ] )
for ( int l = 0; l < N; l++ )
if ( cube[ i, j, l ] )
{
flag = false;
break;
}
if ( flag )
Console.WriteLine( "Просвет существует.\nНачальные координаты ( {0}, {1}, {2} ), конечные ( {0}, {1}, {3} )",
i + 1, j + 1, 1, N );
}
Console.ReadKey( true );
}
static bool[,] Projection( bool[ , , ] arr, Projections proj )
{
bool[,] projectionArray = new bool[ arr.GetLength( 0 ), arr.GetLength( 1 ) ];
for ( int i = 0; i < arr.GetLength( 0 ); i++ )
for ( int j = 0; j < arr.GetLength( 1 ); j++ )
switch ( proj )
{
case Projections.XY:
projectionArray[ i, j ] = arr[ i, j, 0 ];
break;
case Projections.XZ:
projectionArray[ i, j ] = arr[ i, 0, j ];
break;
case Projections.YZ:
projectionArray[ i, j ] = arr[ 0, i, j ];
break;
}
return projectionArray;
}
static void PrintArr( bool[ , ] arr )
{
for ( int i = 0; i < arr.GetLength( 0 ); i++ )
{
for ( int j = 0; j < arr.GetLength( 1 ); j++ )
Console.Write( arr[ i, j ] + " " );
Console.WriteLine();
}
}
}