Написать игру "Кубики" - 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();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы