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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2008, 17:58   #1
Mischa
 
Регистрация: 08.03.2008
Сообщений: 3
Вопрос Заполнение двумерного массива прямоугольников случайными изображениями

Язык - C#. Среда - Visual Studio .NET.
Помогите найти ошибку. Следующий код должен заполнить (BeginBattle()) глобальный массив прямоугольников screenNet[6,9] изображением Image grass, а затем (DrawRandomField()) 30 случайных прямоугольников заполнить 1 из 7 случайных изображений. В пошаговом режиме (Debug - Step Into) все работает как должно, но на экране случайные рисунки появляются только по диагонали и 4-5 вместо 30 (1.jpg, 2.jpg).
Прошу прощения если неправильно объяснил.

Код:
private void DrawRandomField()
	{			
		Image image = null;
		Random rImage = new Random();			
		int i = rImage.Next(0,6);
		switch(i)
		{
			case 0:
				image = log;			
				break;
			case 1:
				image = spot;			
				break;
			case 2:
				image = hill;			
				break;
			case 3:
				image = brush;			
				break;
			case 4:
				image = flower;			
				break;
			case 5:
				image = crack;			
				break;
			case 6:
				image = stone;
				break;
		}			
		Random rA = new Random();
		Random rB = new Random();
		short a = (short)rA.Next(0,6);
		short b = (short)rB.Next(0,9);
		Graphics g = this.CreateGraphics();			
		g.DrawImage(image,screenNet[a,b]);			
		g.Dispose();
	}

	public void BeginBattle()
	{			
		Graphics g = this.CreateGraphics();
		Rectangle rect = new Rectangle();
		rect.Width = 64; rect.Height = 64; rect.Y = 65;		
		for(int a=0; a<6; a++)
		{				
			int b = 0;
			for(int i=31; i<607; i+=64)
			{					
				rect.X = i;
				g.DrawRectangle(Pens.Transparent,rect);
				g.DrawImage(grass,rect);
				screenNet[a,b] = rect;	
				b++;
			}
			rect.Y += 64;										   
		}
		for(int i = 0; i<30; i++)
                	DrawRandomField();
		g.Dispose();
	}
Изображения
Тип файла: jpg 1.jpg (18.4 Кб, 132 просмотров)
Тип файла: jpg 2.jpg (19.4 Кб, 124 просмотров)
Mischa вне форума Ответить с цитированием
Старый 11.03.2008, 21:58   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Во первых на этом форуме есть раздел по Созданию игр.

Во вторых как-то странно - при отладке нормально выводит, а так запустишь то ненормально. Должно быть одинаково.

Задача простейшая (для того кто собрался игру делать). Ты вероятно с рандомом напутал что-то, или с координатами отрисовки. Единственная сложность тут это не допусить рисования в одной клетке двух картинок (ввести проверку чтобы клетка была пустая), если не проверять около 20-ти на таком поле полюбому нарисуется.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод двумерного массива Kocapb Общие вопросы C/C++ 4 11.10.2012 11:05
Сортировка двумерного массива Makarov Помощь студентам 8 29.10.2011 11:55
Заполнение массива случайными числами Roomper Помощь студентам 4 12.05.2008 22:34
Поворот двумерного массива Guest_ Общие вопросы C/C++ 6 24.12.2007 23:02
сортировка двумерного массива cornholio Помощь студентам 1 27.11.2007 23:36