Малко помощ за играта ми .


1

Играта ми е следната:

 

 

Тъмно синъото е река , зеленото са бреговете а светлосинъото са ледени късове. В момента ледените късове са статични. Искам да направя да се движат всички надясно.

Как ще стане това ето моментния ми код:

http://pastebin.com/dx7z6Uhu

Знам че от този код трябва да променя само часта дето е :

 

Нулите са бряг и вода ,единиците - ледове. Знам че методите които съм написал за оцветяване не трябва да се променят само тази матрица.

static int[,] river = {00000...}

Как да направя така че ледовете да се движат?

 

 

 

 

 

 

 

 

 

 




Отговори



0
Генерираш рандъм стойности(0 или1) за колона 0, а всички останали колони получават стойности на колона-1. Това за всички редове без 0 и последен, там май е брега :)

от penjurov (1466 точки)


-3
Не ми стана много ясно така , малко код ако може....

от Svetoslav1987 (1061 точки)


0
Коментарът е на автора и означава, че не е разбрал какво се опитва да каже колегата Penjurov и моли за малко код... Чети внимателно!

от kalbo_17 (2709 точки)

0
@Емил Венков, това, което цитираш е неговият код :D (създалият темата явно задава въпрос към някой от отговорите - което също е грешно, защото в този случай трябва да го зададе като reply на съответния отговор)




0
Според мен подходящ начин е да сложиш един while(true) цикъл и на определен период от време (примерно 150 милисекунди - с Thread.Sleep(150)) да затриваш всичко от екрана и да изместваш единиците в матрицата с един индекс напред, следкоето да рисуваш отново всичко с променените индекси и всичко ще изглежда динамично. В този случай обаче може би ще ти се получава едно премигване на всеки 20-30 секунди, което може би ще те подразни, обаче ако генерираш нулите и единиците на random-позиции, ще ти се получи така, че ледовете ще изникват и ще изчезват на различни места по реката и няма да изглежда като да се движат, а като да потъват и изплуват отново, а и има вероятност да се получи нещо от рода на 01010001 (примерно) и така ще имаш съвсем мънички ледчета на произволни места из реката.

от kalbo_17 (2709 точки)


0
Как се затрива всичко от екрана?

от Svetoslav1987 (1061 точки)

0
С функцията Console.Clear(); директно се изчиства екранът.

от kalbo_17 (2709 точки)



-1

На зеления бряг имам едно човече в червено както виждате:

 

Как да направя това човече да се движи наляво надясно нагоре надолу  по реката натискайки копчетата на клавиатурата съответно : наляво надясно нагоре надолу?

 

 


от Svetoslav1987 (1061 точки)


0
Ако row и col са ти координатите на човечето, то преместването може да се направи с ReadKey:
switch (Console.ReadKey().Key) { case ConsoleKey.LeftArrow: col--; break; case ConsoleKey.RightArrow: col++; break; case ConsoleKey.UpArrow: row--; break; case ConsoleKey.DownArrow: row++; break; default: break; }
Обикновено в подобни игри се добавя и пауза, така че можеш да добавиш един ред и за нея :)
case ConsoleKey.Spacebar: Console.ReadKey(); break;

от Flystar (1171 точки)


0

Не съм особено запознат със C# и не мога да ти помогна със код, но това са обекти - схемата е ясна ! Правиш една рекурсивна функция (т.е извикваща сама себе си) или функция през период от време (в JavaScript e setInterval - не знам как е в C#) и самата функция трябва да променя позицията спрямо абцисната ос със някаква променлива.

Например имаш си дефиниран speed = 5;

setInterval(MoveTheBlocks(),1500) 

функцията MoveTheBlocks трябва да ти изглежда горе-долу по следният начин :

самите обекти предполагам си ги запазил в един масив.

минаваш с един for цикъл по дължината на масива и променяш позицията им спрямо x със speed

т.е for(var i=0; i<BlocksArr.length; i++) {

BlocksArr[i].x+=speed

}

така постоянно през 1500 ms ще се изместват блокчетата надясно или на където пожелаеш. Надявам се да съм бил полезен до колкото мога, поздрави и за много години :)


от Wasilsarandev (480 точки)