Создание игры на 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 на следующем вебинаре и всем удачи в создании кода, а так же главная ваша задача в том чтобы ваш код работал без ошибок и выводил поле.