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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2014, 20:23   #1
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию Корабль

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

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
using System.Threading.Tasks;

namespace подводная_лодка
	{
	class Class1
    {
		private static System.Timers.Timer aTimer;
		private int mylodkaX;
		private int mylodkaY;
		public Class1()
			{
			}

		public void show( int x, int y )
        {
		    
            this.mylodkaX = x;
			this.mylodkaY = y;
            Console.SetCursorPosition(mylodkaX,mylodkaY);
            aTimer=new Timer(100);
			aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
			aTimer.Interval = 2000;
			aTimer.Enabled = true;
            }
			private  void OnTimedEvent(object source, ElapsedEventArgs e){
			
                
					Console.Clear ();
                    mylodkaX++; 
					Console.CursorVisible = false;
                    Console.BackgroundColor = ConsoleColor.Blue;
                    Console.Write("      ");
					Console.BackgroundColor = ConsoleColor.Black;					
                
				}
                        
        }
		}
mixon-21 вне форума Ответить с цитированием
Старый 16.03.2014, 09:56   #2
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

как сделать так чтоб корабль двигался???
mixon-21 вне форума Ответить с цитированием
Старый 16.03.2014, 12:33   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Весь код проектом выложите и объясните подробнее задачу, ибо в "морском бою" корабли не двигаются.
И что с той темой по крестикам-ноликам ? Забросили ? Наверное, Вам поставили задачу написать простейшую игру и Вы пытаете счастья "по зёрнышку" ?
phomm вне форума Ответить с цитированием
Старый 16.03.2014, 15:32   #4
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

Весь проект: наброски

Код:
using System;
using System.Threading;

namespace ПРОБА
	{
	class Program
		{
		static void Main( string[] args )
			{
			
			int x = 0;
			int y = 0;
			int y1 =22;
			int x1 = 0;
			ConsoleKeyInfo g;
			Console.CursorVisible = false;
			Class1 my = new Class1 ();
			y = 23;
            	do
				{
					
			    Console.SetCursorPosition ( x, y );
					my.show ();
				g = Console.ReadKey (true);
				if( g.Key == ConsoleKey.RightArrow && x < 75 )
					{
					x++;
					}
				if( g.Key == ConsoleKey.LeftArrow && x > 0 )
					{
					x--;
					}
				Console.Clear ();
                y1 = 22;
                x1 = x;
				if( g.Key == ConsoleKey.NumPad5 && y1 > 0 )
					{
					
					do
						{
						Console.SetCursorPosition ( x1 + 2, y1 );
						Console.ForegroundColor = ConsoleColor.Red;
						Console.Write ( "|" );
						Console.ForegroundColor = ConsoleColor.Gray;
							
							y1 -= 1;

						} while( y1 > 0 );
					}
				
				} while( g.Key != ConsoleKey.Escape );
			
			
			}
		}
	}
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ПРОБА
	{
	class Class1
		{
		private int vectorX;
		private int vectorY;
		public Class1()
			{
			}
		public Class1(int x,int y)
			{
			this.vectorX = x;
			this.vectorY = y;
			}
	public static Class1 operator ++	( Class1 x )
			{
			x.vectorX++;
			return x;
			}
		public void show()
			{
			Console.BackgroundColor = ConsoleColor.DarkGray;
			Console.ForegroundColor = ConsoleColor.DarkBlue;
			Console.Write ("__|__");
			Console.BackgroundColor = ConsoleColor.DarkGray;
			}
		}

			
}
mixon-21 вне форума Ответить с цитированием
Старый 16.03.2014, 15:39   #5
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

А задача вот в чем .
Помните в детстве был игровой автомат "Морской бой" пример

http://www.russianamerica.com/common...attle_ship.php


вот так я незнаю как сделать анимацию стрельбы. и как написать движение
корабля с лева на право???
mixon-21 вне форума Ответить с цитированием
Старый 16.03.2014, 15:41   #6
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

"Крестики нолики" пока забросил Будет время допишу.
много домашки задали.
mixon-21 вне форума Ответить с цитированием
Старый 16.03.2014, 17:14   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

нескромный вопрос - а зачем это делать в консоли?!
Это и сложнее, и не так красиво, чем в графике...


p.s. А анимация (хоть в консоли, хоть в графике) на компьютере делается так - выводится изображение. делается малюсенькая пауза. стирается та часть изображения, которая должна быть передвинута (движущиеся части), изменяются координаты для движущихся частей, эти части зановоно выводятся на экран.
Цикл повторяется.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.03.2014, 17:41   #8
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

Цитата:
делается так - выводится изображение. делается малюсенькая пауза. стирается та часть изображения, которая должна быть передвинута (движущиеся части),
Как делается пауза???

а через таймер никак???
mixon-21 вне форума Ответить с цитированием
Старый 16.03.2014, 19:50   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Так. стоп.
Через таймер не только можно, но и нужно!
Именно через таймер и будет происходить пауза.

Код, который выполняется по срабатыванию таймера как раз и должен стирать старое, изменять координаты и рисовать новое изображение.
Без всяких задержек. Ибо событие таймера происходит с заданной периодичность, которая и будет являться задержкой в отрисовке изображения.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.03.2014, 22:25   #10
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

А как правильно отрисовать timer???

вот мой набросок:

Код:
public Mina(int x,int y )
			{
			this.MinaY = y;
			this.MinaX = x;
			
			}
		private static void OnTimedEvent( object source, ElapsedEventArgs e )
			{
			
			Console.Write ( "===");
			//Console.Clear ();
			}
		
		public void show(  )
			{
			ConsoleKeyInfo tor;


			Timer t = new Timer ( 500 ); 
			t.Elapsed += new ElapsedEventHandler(OnTimedEvent);
			
			t.Interval = 500;
			
			t.Enabled = true;
			do
				{
				
				Console.SetCursorPosition ( MinaX , MinaY );
			
				Console.ForegroundColor = ConsoleColor.Red;
			
				Console.ForegroundColor = ConsoleColor.Gray;
				
				tor = Console.ReadKey ( true );
				
				
					Console.Clear ();
						MinaX++;
				} while( MinaX <35 );
			}
		

		}
mixon-21 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как корабль назовешь, так он и поплывет? Alar Свободное общение 32 28.02.2014 22:27
Не уничтожается корабль helpkz Gamedev - cоздание игр: Unity, OpenGL, DirectX 7 15.05.2013 08:57
нарисовать движущийся корабль delphi Фари Мультимедиа в Delphi 4 04.04.2013 06:03
Робот-разведчик и космический корабль Ulq Паскаль, Turbo Pascal, PascalABC.NET 1 05.11.2011 21:03
Корабль в паскале Allemon Паскаль, Turbo Pascal, PascalABC.NET 0 23.12.2010 18:23