Авторизируйтесь,
чтобы продолжить
Некоторые функции доступны только зарегистрированным пользователям
Неправильный логин или пароль

Внимание! Теперь для входа на форум необходимо вводить единый пароль регистрации сервисов sibnet.ru!

Здравствуйте, гость ( Вход | Регистрация )



 
Ответить в эту темуОткрыть новую тему
> Рисование в консоли C#
BloodSeeker
сообщение 19.5.2016, 7:42
Сообщение #1


Товарищ
Group Icon


Группа: Sibnet-club
Сообщений: 863
Регистрация: 22.6.2007
Из: Барнаул
Пользователь №: 485



Репутация:   49  


Товарищи, такая беда - сестра попросила помочь ей задачки порешать/объяснить на шарпе, а я уже 3 года как не писал ничего, в шарпе порядком подзабыл. Наткнулся на задачку, что-то не получается никак ее решить.
Задача:
Представим себе что в центре экрана сидит жучок, который может перемещаться по прямой на указанное расстояние, и перемещаться налево и направо. У жучка есть перо которое может оставлять след, повторяющий движения жучка. Если перо опущено след остаётся, если перо поднято следа нет. Итак, жучок может выполнять следущие приказы: Forward-переместиться на заданое расстояние; Left-повернуть налево на заданный угол; Right-повернуть направо на заданый угол; PenUp-поднять перо ; PenDown-опустить перо. Реализовать процедуры Forward, Left, Right, PenUp, PenDown. Процедуры должны взаимодействовать через глобальные переменные xPos, yPos-координаты жучка на экране; Pen-признак , говорящий о том поднято перо или опущенно; Angle--угол, который образует текущее направление перемещения жучка с осью абцисс.
Необходимо написать 4 цифры - текущий год

Вот что-то попытался наговнокодить, н голова совсем не варит, может подскажете?

Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _452г
{
    class Program
    {
        static bool pen = true;
        static int xPos = 10, yPos = 10, xNext = 10, yNext = 10;
        static string curSymbol = ".";
        static int angle = 0;


        static void Main(string[] args)
        {
            Console.SetCursorPosition(xPos, yPos);

            left(45);
            forvard(2);
            left(45);
            forvard(2);

        }

        static void tmp()
        {
            xPos = xNext;
            yPos = yNext;
        }

        static void movePos()
        {

            if((xNext > xPos)&&(yNext > yPos))
            {
                tmp();
                xNext++;
                yNext++;
            }

            if((xNext > xPos)&&(yNext < yPos))
            {
                tmp();
                xNext++;
                yNext--;
            }

            if((xNext < xPos)&&(yNext > yPos))
            {
                tmp();
                xNext--;
                yNext++;
            }

            if((xNext < xPos)&&(yNext < yPos))
            {
                tmp();
                xNext--;
                yNext--;
            }

            if ((xNext == xPos) && (yNext > yPos))
            {
                tmp();
                yNext++;
            }
            if ((xNext == xPos) && (yNext < yPos))
            {
                tmp();
                yNext--;
            }
            if ((xNext > xPos) && (yNext == yPos))
            {
                tmp();
                xNext++;
            }
            if ((xNext < xPos) && (yNext == yPos))
            {
                tmp();
                xNext--;
            }
            Console.SetCursorPosition(xPos, yPos);
        }

        static void forvard(int s)
        {

            for (int i = 0; i < s; i++)
            {
                if(pen)
                    Console.Write(curSymbol);
                movePos();
                changeSymbol();
            }
        }

        static void left(int turn_angle)
        {
           angle += turn_angle;
           changeSymbol();
        }

        static void changeSymbol()
        {
            if (angle == 0)
            {
                curSymbol = "--";
                xNext++;
            }

            if (angle == 45)
            {
                curSymbol = "/";
                xNext++;
                yNext--;
            }

            if (angle == 90)
            {
                curSymbol = "|";
                yNext--;
            }

            if (angle == 135)
            {
                curSymbol = "";
                xNext--;
                yNext--;
            }
            if (angle == 180)
            {
                curSymbol = "--";
                xNext--;
            }
            if (angle == 225)
            {
                curSymbol = "/";
                xNext--;
                yNext++;
            }
            if (angle == 270)
            {
                curSymbol = "|";
                yNext++;
            }
            if (angle == 315)
            {
                curSymbol = "";
                xNext++;
                yNext++;
            }
            if (angle == 360)
            {
                curSymbol = "--";
                xNext++;
            }
        }

        static void right(int turn_angle)
        {
            angle -= turn_angle;
            changeSymbol();
        }

        static void penUp()
        {
            pen = false;
        }

        static void penDown()
        {
            pen = true;
        }
    }
}


» Спасибо сказали: «
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. просматривают этот форум (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 21.11.2019, 4:38
Редакция: (383) 347-86-84

Техподдержка: (383) 347-22-44
help.sibnet.ru
Размещение рекламы:
тел: (383) 347-06-78, 347-10-50

Правила использования материалов