В центре экрана находится точка. Каждый ход она может сместиться в одну из окружающих её восьми точек.
Если у центральной точки координаты(x,y), то у соседних к ней клеток получатся такие координаты:
Другими словами точка при смещении может случайно сместиться влево/вправо на 1 клетку, и/или вниз/вверх на одну клетку или не перемещаться по одной(двум) координатам.
Если сразу у точки координаты (x,y) то после "хода" они будут:
x=x+int(3*rnd()-1)
y=y+int(3*rnd()-1)
Другими словами после "хода" к координатам точки прибавится случайное число из набора [-1,0,+1]
На следующем ходе точка опять сместится в любом направлении.
Построим картину из миллиона таких движений.
FreeBASIC позволяет установить режим 800х600, думаю ваш монитор наверняка его поддерживает)))
screen 19
Объявим переменные: целые x,y и длиииинную переменную цикла i(вдруг мы захотим очень много точку рисовать)
dim as long i
Зададим x,y начальные значения - центр экрана.
x=400:y=300
Дальше крутим цикл ... раз. В цикле рисуем точку и вычисляем новые координаты.
for i=1 to 1000000
x=x+int(3*rnd()-1)
y=y+int(3*rnd()-1)
pset(x,y)
next i
sleep
Как видно компилятор FreeBASIC делает программу очень быстрой - картинка строится практически мгновенно. (qbasic делал бы это думаю за полчаса, и это при меньшем разрешении экрана 640х480-максимум что в нём есть)
При десяти миллионах (движений)
А при ста миллионах картина не поменялась - точка улетела за пределы области видимости(экрана)
randomize time
конечно же разнообразит картины.
Чтобы замедлить процесс движения добавим в цикл sleep 5
, например,задержку в 5 миллисекунд.
А чтобы иметь возможность остановить этот процесс добавим опрос нажатой клавиши. и если она будет нажата - прервём цикл for
if inkey<>"" then exit for
screen 19
dim as integer x,y
dim as long i
x=400:y=300
for i=1 to 100000000
x=x+int(3*rnd()-1)
y=y+int(3*rnd()-1)
pset(x,y)
sleep 5
if inkey<>"" then exit for
next i
sleep
Программу можно "доработать". Например:
При нажатии определённой клавиши - продолжать рисовать другим цветом, очищать экран и начинать процесс сначала.
При вылете точки за пределы экрана возвращать её в центр.
Вычислять наибольшее удаление точки от своего первоначального положения.
20 Блуждающая точка
19 "Прыгающие шашки" (графика и процедура)
18 Подпрограммы, процедуры, функции
17 Поиск минимального элемента
16 Игра "Прыгающие шашки"
15 Игра "Быки и коровы"
14 Тасуем карты (массивы-задачи ч2)
13 Массивы(задачи)
12 Массивы
11 Задачки
10 Игра угадай число
09 Случайные числа, RND
08 Случайные числа, RND
07 Циклы
06 Условный оператор
05 Первые простые задачки
04 Графика
03 Текстовые переменные и операции с ними
02 Переменные в Бейсике
01 Начинаем изучать FreeBasic
00 FreeBASIC лучший из диалектов бейсика
✅
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
cats, spinner, aim, ianboil, analise, strecoza, mishka, sergiy, vako, blange, ovchinnikov, polyideic, andrvik, max-max, kanenakat, dikaniovs, harhor, la-bella-vita, kilobucks, shuler, maksina, yurgent71, zlody, dr-boo, arsar, vasilisapor2, nefer, oksi969, turkish-r, renat242, oceanotechnic, markvial, andreyprosto, vict0r, gans91, gromozeka, drim, gryph0n, ladykosha, orezaku, sharps, cepera, retoldname, acidgarry, kvg, aivanouski, igor66, borisss, olga-fink, amelina.elena, dayver, bammbuss, bombo, manavendra, mr-nikola, victorskaz, nerengot, lokkie, now, varja, upper, ili, dignityinside, alexmove, process, chugoi, massatela, nikulinsb, firestarter, vlad1m1r, amalinavia, vsebudethorosho, sansey, izbushka, goldenriver, onur1s, ramin, propoker, zelivsky, html, metadon, vredinka2345, fxmonster, carpe-diem, ivanzar, azarovskiy, brainmechanic, sinilga, kalter, valen-tina, maksh, cryptobandera, maryatekun, lologom, delectat, prezza, sini4ka, worthless-man, elcpa, karabum, olgataul, irkinmick, wmforum, jpigeon84, archual, paulsoul, valdemar777, fatima
Поэтому я тоже проголосовал за него!
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас:
@sergiy привет хорошая статья, апнул Вас, и подписался на ваш канал, надеюсь на взоимность, все кто подписывается на меня я подписываюсь взоимно
✅🤙 🚀