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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2010, 22:32   #1
ZaVyLoN
 
Регистрация: 22.10.2010
Сообщений: 5
По умолчанию C# Создание стены и флага(финиш)!

Всем hi!
Подскажите как мне реализовать это!
т.е. я двигаюсь в направлении флага, достигаяя его - победа!


есть только движение смайла!

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace HomeWork2_2
{
    class Program
    {
        static void Main(string[] args)
        {

           
            Console.CursorVisible = false;
            int x = 15;
            int y = 15;
            Console.SetCursorPosition(x, y);
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.Write((char)1);
            while (true)
            {
                switch (Console.ReadKey().Key)
                {
                    case ConsoleKey.UpArrow:
                        {
                            y--;
                        } break;
                    case ConsoleKey.DownArrow:
                        {
                            y++;
                        } break;
                    case ConsoleKey.LeftArrow:
                        {
                            x--;
                        } break;
                    case ConsoleKey.RightArrow:
                        {
                            x++;
                        } break;
                    case ConsoleKey.Escape:
                        {
                            return;
                        }
                    default: break;
                }
                Console.Clear();
                Console.SetCursorPosition(x, y);
                Console.Write((char)1);

            }        
            
        }
    }
}
ZaVyLoN вне форума Ответить с цитированием
Старый 23.10.2010, 06:38   #2
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace HomeWork2_2
{
    class Program
    {
        static void Main(string[] args)
        {


            Console.CursorVisible = false;
            int a = 20;
            int b = 20;
            Console.SetCursorPosition(a, b);
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.Write((char)1);
            int x = 15;
            int y = 15;
            Console.SetCursorPosition(x, y);
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.Write((char)1);
            
            while (true)
            {
                switch (Console.ReadKey().Key)
                {
                    case ConsoleKey.UpArrow:
                        {
                            y--;
                        } break;
                    case ConsoleKey.DownArrow:
                        {
                            y++;
                        } break;
                    case ConsoleKey.LeftArrow:
                        {
                            x--;
                        } break;
                    case ConsoleKey.RightArrow:
                        {
                            x++;
                        } break;
                    case ConsoleKey.Escape:
                        {
                            return;
                        }
                    default: break;
                }
                Console.Clear();
                Console.SetCursorPosition(a, b);
                Console.Write((char)1);
                Console.SetCursorPosition(x, y);
                Console.Write((char)1);
                if ((a == x) && (b == y))
                {
                    Console.Clear();
                    Console.WriteLine("Congratulations! You won");
                    break;
                }

            }
            Console.ReadKey();

        }
    }
}
Пользуйся) На самом деле, хотелось бы даже поблагодарить, никогда подобным в консоли этим не занимался - открыл для себя что-то новое.

Алгоритм прост - рисуешь курсором еще одну фигурку с другими координатами, и каждый раз ее перерисовываешь тоже. Координаты совпали - ты победил
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий
Xeonc вне форума Ответить с цитированием
Старый 23.10.2010, 15:45   #3
ZaVyLoN
 
Регистрация: 22.10.2010
Сообщений: 5
По умолчанию

я просто думал если еще раз пропишу
Console.SetCursorPosition,
то мой смайл окажется на месте флажка!

спс, понял свою ошибку!!


еще такой вопрос
вот в с++

я писал такой код
Код:
m1 = _getch();
 if (m1 == 13)
 {
 /// делается то и то
}
т.е считываю нажатие клавиши.
если ентер, то делаю то и то!

как это сделать на C#
ZaVyLoN вне форума Ответить с цитированием
Старый 23.10.2010, 16:21   #4
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

Тут хитрость в том, что рисуется фигурка не курсором, а этой командой
Console.Write((char)1);
Тебе просто сначала надо навести туда курсор

Насчет второй части вопроса - у тебя же у самого программа, которая считывает нажатие клавиш) Внутри switch'a делаешь дополнительный case ConsoleKey.Enter - и дописываешь функционал
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий
Xeonc вне форума Ответить с цитированием
Старый 23.10.2010, 17:08   #5
ZaVyLoN
 
Регистрация: 22.10.2010
Сообщений: 5
По умолчанию

Xeonc
спасибо!!

я просто решил вставить менюшку в игрушку(скоро допишу)

правда перебивать _getch() не стал

нашел в инете
Код:
[DllImport("msvcrt")]
static extern int _getch();
если честно, не знаю как это рабоатет!!

ссылка на тему

http://programmersforum.ru/showthrea...537#post640537

код не влез, пришлось заливать через архив!


если есть время у кого, прошу указать на ошибки!
работает все нормально,
но я еще не дошел до того уровня, чтобы сразу писать оптимальный код!

Последний раз редактировалось ZaVyLoN; 23.10.2010 в 17:23.
ZaVyLoN вне форума Ответить с цитированием
Старый 23.10.2010, 17:10   #6
ZaVyLoN
 
Регистрация: 22.10.2010
Сообщений: 5
По умолчанию

всем спасибо!

http://programmersforum.ru/showthrea...537#post640537

Последний раз редактировалось ZaVyLoN; 23.10.2010 в 17:26.
ZaVyLoN вне форума Ответить с цитированием
Старый 23.10.2010, 17:23   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я наверное код создам в новой теме,
Если та тема будет перекрещиваться с этой я ее удалю как кросспост - имей это ввиду.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод развевающегося флага AndAsh Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 12.10.2010 05:39
Создание ОС misher Операционные системы общие вопросы 2 17.07.2010 00:32
Необходимо отсортировать по возрастанию без флага перестановки матрицу defol-2009 Общие вопросы C/C++ 0 28.07.2009 17:28