Создание игры на Python.
Итак сегодня мы будем писать код для игры на Python.
Начнём с подготовки к написанию кода.
VSC - Visual Studio Code
Создадим папку на рабочем столе чтобы сохранить туда файлы с расширением .py.
Назовём папку как нам нравится.
Найдем кнопку в левом верхнем углу в виде двух файлов с названием Explorer.
Там мы ищем кнопку в виде троеточия, там выбираем раздел folders, нажимаем правой кнопкой мыши и создаем файлы в расширении .py и называем их следующими именами:
Открываем файл с название map, здесь мы будем создавать игровое поле.
Итак приступим к созданию игрового поля.
Нам пригодятся смайлики для обозначения полей.
("🌲 🌊 🚁🟩 🔥 🏥 💛 💵 🧳 🏆 ⚡️⛅️🔲⬛️")
Вот так выглядят смайлики которые нам нужны.
Попробуем ввести такую строку:
print("🌲 🌊 🚁🟩 🔥 🏥 💛 💵 🧳 🏆 ⚡️⛅️🔲⬛️")
Если у вас смайлики выводятся не в таком же виде, а в каком-то непонятном то придется скачать другое приложение под названием: Pycharm
Устанавливаем и выполняем шаги которые были выше.
Код который находиться в файле map.py
1 from utils import randbool, randcell 2 from utils import randcell2 3 # 🌲 🌊 🚁🟩 🔥 🏥 💛 💵 🧳 🏆 ⚡ ️⛅️ 🔲 ⬛️ 4 # 0 - поля 5 # 1 - дерево 6 # 2 - река 7 # 3 - госпиталь 8 # 4 - upgrade shop 9 # 5 - огонь 10 CELL_TYPES = "🟩🎄🌊🏥💵🔥" 11 class Map: 12 def print_map(self): 13 print("⬛" * (self.w + 2)) 14 for row in self.cells: 15 print("⬛", end="") 16 for cell in row: 17 if cell >= 0 and cell < len(CELL_TYPES): 18 print(CELL_TYPES[cell], end="") 19 print("⬛") 20 print("⬛" * (self.w + 2)) 21 22 def check_bounds(self, x, y): 23 if x < 0 or y < 0 or x >= self.h or y >= self.w: 24 return False 25 return True 26 def generate_river(self, l): # генератор расположения рек l - длина реки 27 rc = randcell(self.w, self.h) 28 rx, ry = rc[0], rc[1] 29 self.cells[rx][ry] = 2 30 while l > 0: 31 rc2 = randcell2(rx, ry) 32 rx2, ry2 = rc2[0], rc2[1] 33 if self.check_bounds(rx, ry) and self.check_bounds(rx2, ry2): 34 self.cells[rx2][ry2] = 2 35 rx, ry = rx2, ry2 36 l -= 1 37 def generate_forests(self, r, mxr): # ставим деревья с долей вероятности 38 for ri in range(self.h): 39 for ci in range(self.w): 40 if randbool(r, mxr): 41 self.cells[ri][ci] = 1 42 def __init__(self, w, h): 43 self.w = w 44 self.h = h 45 self.cells = [[0 for i in range(w)] for j in range(h)] 46 tmp = Map(10, 10) 47 tmp.generate_river(5) 48 tmp.generate_river(10) 49 tmp.generate_river(20) 50 tmp.print_map()
Этот код должен быть в файле map.py. Давайте теперь разберемся что за что отвечает.
1 и 2 строки пока что пропустим вернемся к ним позже.
В 3 строке мы вставляем смайлы для удобного копирования их и вставления в сам код.
С 4 по 9 строку мы пишем обозначения смайлов по их индексам для упрощения определения индексов.
В 10 строке задаем переменную в которую включаем все смайлы где они идут по индексу, а так же в последующем это упростит а так же сделает более удобным для чтения наш код.
В 11 строке мы задаем класс Map. (в нём будут все параметры игрового поля)
C 12 по 20 строку мы задаем обводку полям.
С 22 по 25 строку мы то что координаты находятся внутри поля.
С 26 по 36 строку мы создаем реку в рандомном расположении на поле.
С 37 по 41 строку мы создаем деревья в рандомном порядке на поле.
В 46 строке мы обозначаем количество клеток из которого состоит поле.
С 47 по 49 строку мы создаем реки.
В 50 строке мы выводим само поле.
Код который находится в файле utils.py
1 from random import randint as rand 2 def randbool(r, mxr): #r - осечка, mxr - разграничитель 3 t = rand(0, mxr) 4 return t <= r 5 def randcell(w,h): 6 tw = rand(0,w-1) 7 th = rand(0,h-1) 8 return (tw,th) 9 #0 - up, 1 - right, 2 - down, 3 - left 10 def randcell2(x,y): 11 moves = [[-1,0],[0,1],[1,0],[0,-1]] # up right down left Карта передвижений 12 t = rand(0,3) 13 dx, dy = moves[t][0], moves[t][1] 14 return (x + dx, y + dy)
Данный код мы пишем в файле utils.py
В 1 строке мы обращаемся к библиотеке.
С 2 по 4 строку создаем рандомайзер значений для выставления деревьев в рандомном порядке с ограничениями.
С 5 по 8 строку создаем генерацию рек на поле.
С 9 по 14 строку создается карта передвижения.
Итак вернемся к двум первым строкам кода в файле map.py
1 from utils import randbool, randcell 2 from utils import randcell2
Благодаря этим строкам мы обращаемся к файлу units.py чтобы сработал наш код в файле map.py
После всего выше написанного в питоне сделаем вывод. В нём мы увидим следующую картину:
Так будет выглядеть наше игровое поле.
Продолжим написание игры на Python на следующем вебинаре и всем удачи в создании кода, а так же главная ваша задача в том чтобы ваш код работал без ошибок и выводил поле.