
- •Одномерные массивы
- •Пример 1. Прочитать с клавиатуры 10 целых чисел. Вывести их на экран в обратном порядке.
- •Пример 2. Заполнить массив в соответствии с закономерностью 1, 2, 1, 2, 1….
- •Генератор случайных чисел
- •Пример 3. Заполнить массив случайными числами от 0 до 9 и вывести на экран его элементы через пробел.
- •Константы.
- •Пример 5. Массив из 20 элементов заполнить случайными числами от 0 до 99. Все элементы массива, меньшие 10, заменить нулями.
- •Максимальный элемент массива
- •Пример 6. Заполнить массив случайными числами и вывести на экран наибольший элемент массива и его индекс.
- •Задачи.
- •Использование массивов в играх.
- •Двумерные массивы.
- •Использвание двумерных массивов при создании игр
Задачи.
Заполнить массив случайными числами. Вывести элементы массива на экран. Вывести на экран минимальный элемент массива.
Заполнить массив случайными числами. Вывести элементы массива на экран. Вывести на экран разность между его максимальным и минимальным элементами.
Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
Использование массивов в играх.
Теперь пришло время применить наши знания о массивах для программирования игр. Рассмотрим такую игру. По полю разбросаны золотые самородки. Игрок бегает по полю и собирает их. Если он «пробегает» по самородку на экране, у него растут очки. Их следует изображать в левом верхнем углу экрана.
Решение. Самородки по экрану нужно разбрасывать при помощи генератора случайных чисел. При этом координата x самородка – случайное число от 1 до 79, а координата y – число от 1 до 24. Самородков много, поэтому их координаты следует хранить в массивах. x[i] – координата x самородка с номером i, y[i] – у – координата. Перед игрой отображаем самородки на экране. Работаем в цикле. После этого при движении игрока на экране постоянно проверяем, не попал ли он на какой-нибудь самородок. Здесь тоже нужен цикл при знании текущей позиции игрока и координатам самородков. Если позиция игрока совпадает с координатой одного из самородков, добавляем игроку очки. Остается одна проблема. Если самородок найден, нужно сделать так, чтобы при повторном проходе по этому же месту очки не добавлялись. Для этого можно, например, завести еще один массив – taken, причем taken[i]=1, если самородок i уже взяли и 0 в противном случае. При этом при любых операциях с самородком i нужно проверять значение taken[i].
Задачи
Реализовать описанную игру
Игра становится более интересной и даже оригинальной, если мы к самородкам добавим бандитов, которые узнают о находке и устраивают в месте находки засаду. Таким образом, если игрок еще раз пройдет по месту, в котором был самородок, его деньги-очки обнуляются. Игра становится не очень простой, если после находки самородка место, где он ранее находился, никак не обозначается. Запрограммируйте.
Игра еще более оживляется, если играют два конкурента. Попробуйте запрограммировать.
Запрограммировать движение на экране n независимых объектов, отражающихся от стенок.
Изменить предыдущую задачу: объект, вышедший за границу экрана, «входит» на экран с противоположной стороны. Подумайте, что при этом происходит с координатами?
Двумерные массивы.
Одномерный массив позволяет хранить последовательность чисел. Но как быть, если нужно хранить, например, таблицу умножения? Или, что более важно, символы, которые находятся в каждой клетке экрана? Или позицию на шахматной доске? Для этого нужно использовать двумерную таблицу. В этой таблице ячейка задается номером строки и номером столбца. В паскале для хранения таких таблиц предназначены двумерные массивы, которые описываются так
var a:array[1..4,1..6] of integer;
С
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
мысл всех элементов конструкции такой же, как в одномерном массиве. Единственное отличие – добавился еще один индекс, который может изменяться от 1 до 6. Этому массиву будет соответствовать таблица из 4 строк и 6 столбцов
В теле программы содержимое таблицы можно изменить так
a
3
2
[2,1]:=3;
i:=2;
a[i+1,4]:=a[2,1]-1;
Использование аналогично использованию одномерного массива. Единственное отличие – дополнительный индекс. После выполнения операций в массиве будет записана информация, показанная на рисунке. Поскольку у элементов массива два индекса, для работы с ним приходится использовать вложенные циклы.
Пример. заполнить двумерный массив случайными числами. Вывести его на экран в виде таблицы.
Решение.
const n=5;m=6;
var a:array[1..n,1..m] of integer;
begin
randomize;
for i:=1 to n do
for j:=1 to m do
a[i,j]:=random(20);
for i:=1 to n do
begin
writeln;
for j:=1 to m do write(a[i,j]:3);
end;
end.
Обратите внимание: в операторе write после элемента массива стоит «:3». При использовании этой конструкции компьютер отведет под каждое выводимое число ровно 3 клетки на экране. В результате получится красивая таблица.
Задачи
Заполнить двумерный массив нулями и единицами в шахматном порядке
Вывести на экран самый большой элемент двумерного массива.
Двумерный массив «of char» заполнить случайными маленькими буквами русского алфавита.