Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2020, 16:13   #1
bambarbia
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 44
По умолчанию тетрис начинающий c#

Дратути Написал небольшой кодик для консольного приложения. Смысл в том, что пытаюсь повернуть фигурку по часовой, или наоборот. По часовой все идет нормально, а назад не хочет и не пойму в чем моя ошибка. Не можете помочь?
Код:
using System;

namespace Tetris {
    class Program {
        int[][] arr;
        static void Main(string[] args) {
            Program ro = new Program();
            ro.program();
            Console.ReadKey();
        }

        void program() {
            arr = new int[3][];
            arr[0] = new int[] { 1, 1, 1 };
            arr[1] = new int[] { 0, 1, 0 };
            arr[2] = new int[] { 0, 0, 0 };

            while (true){
                var input = Console.ReadKey();
                switch (input.Key) {
                    case ConsoleKey.A:
                        ArrReverseMinus();
                        break;
                    case ConsoleKey.D:
                        ArrReversePlus();
                        break;
                }
                for (int i = 0; i < arr.Length; i++) {
                    for (int j = 0; j < arr.Length; j++) {
                        Console.Write($"{arr[i][j],5}");
                    }
                    Console.WriteLine("");
                }
            }
        }
        void ArrReversePlus() {
            int[][] tempparseX = new int[3][], tempparseY = new int[3][];
            for (int i = 0; i < arr.Length; i++) {
                tempparseX[i] = arr[i];
            }
            for (int i = 0; i < 3; i++) {
                tempparseY[i] = new int[3];
                for (int j = 0; j < tempparseY[i].Length; j++) {
                    tempparseY[i][j] = tempparseX[j][i];
                }
            }
            for (int i = 0; i < 3; i++) {
                Array.Reverse(tempparseY[i]);
                arr[i] = tempparseY[i];
            }
        }
        void ArrReverseMinus() {
            int[][] tempparseX = new int[3][], tempparseY = new int[3][];
            for (int i = 0; i < arr.Length; i++) {
                tempparseX[i] = arr[i];
            }
            for (int i = 0; i < 3; i++) {
                tempparseY[i] = new int[3];
                for (int j = 0; j < tempparseY[i].Length; j++) {
                    tempparseY[i][j] = tempparseX[j][i];
                }
            }
            for (int i = 0; i < 3; i++) {
                arr[i] = tempparseY[i];//здесь не поворачиваю
            }
        }
    }
}
Смысл в том что если мне надо повернуть, то я массив разворачиваю, а если назад то он должен сам повернуться

Последний раз редактировалось bambarbia; 17.05.2020 в 16:17.
bambarbia вне форума Ответить с цитированием
Старый 17.05.2020, 17:21   #2
bambarbia
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 44
По умолчанию

Нашел ответ в интернете
Код:
for (int i = 0; i < 3; i++) {
                arr[i] = tempparseY[2 - i];//здесь не поворачиваю
            }
bambarbia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C тетрис Цукер Помощь студентам 0 21.11.2011 22:53
Тетрис на си фыф123 Помощь студентам 1 22.06.2011 10:48
Тетрис Александр123456 Общие вопросы C/C++ 1 02.12.2010 23:15
Тетрис k1r1ch Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 02.01.2010 12:20
Тетрис на VBA TheHolyDemon Microsoft Office Excel 4 30.05.2009 11:37