Для повторення перейди за посиланням
Створюємо гру "Перегони"
________________________
Створюємо гру "Pacman"
Створюємо гру "Маріо"
Заготовки:
На початку проекту задаємо розмір ігрового поляimport random WIDTH = 500 HEIGHT = 500Завантажимо у проект файли із зображенням Маріо та тла проектуmario = Actor("mario") mario.pos = 50,400 bg=Actor("bg") bg.pos=250,250У функції draw() задаємо показ тла та Маріо. Зверніть увагу на порядок показу: спочатку тло, тоді Маріо (інакше тло перекриватиме зображення персонажа).def draw(): screen.clear() bg.draw() mario.draw()У функції update() задаємо можливість руху персонажу Маріо за натисненням клавіш стрілок праворуч та ліворуч, а також вгору.def update(): if keyboard.left: mario.x -= 5 elif keyboard.right: mario.x += 5 elif keyboard.up: mario.y-=30Важливо обмежити рух - лише в межах ігрового поля. Якщо Маріо має вийти за межі вікна - нехай координати залишаються в межах поля. Наприкінці коду функції update() додайте код if mario.x > 500: mario.x=500 if mario.x < 0: mario.x=0Додамо команди обмеження руху по вертикалі if mario.y > 450: mario.y=450 if mario.y < 0: mario.y=450Створюємо список координат, у яких будуть розміщені цеглинки гри, а також статус видимості монеток. Починаючи із координат x=150 та y=320 створюємо 4 цеглинки, кожні 100 пікселів по горизонталі та 50 по вертикалі. Заносимо всі цеглинки у список game.game=[] x=150 y=320 for k in range(4): wall=Actor("wall") wall.pos=x,y game.append(wall) x=x+100 y=y-50Для кожної цеглинки потрібно забезпечити її виведення на екран. Додайте цей код в кінці функції draw()for k in range(4): game[k].draw()
Завдання. Додати до кожної цеглинки монетку, яка розміщена на 50 пікселів вище за цю цеглинку. Занесіть всі монети в список game_1.
game_1=[]x=100y=270for k in range(4): coin=Actor("coin") coin.pos=x,y game_1.append(coin) x=x+100 y=y-5
Маріо постійно "падає" вниз, поки не обмежений цеглинками. Перебування на цеглинці позначимо змінною move, що рівна 0. Виконаємо перевірку: якщо Маріо торкається хоч однієї цеглинки, ця змінна стає рівною 1. Додайте наступний код в кінці функції update() move=0 for k in range(4): if game[k].colliderect(mario): move=1Якщо ж ця змінна після циклу рівна 0 (Маріо не перебуває на жодній цеглинці), він постійно переміщується вниз. Додайте наступний код в кінці функції update() if move==0: mario.y+=1В кінці функції update() також додамо код збору монеток: перебираємо всі монетки, і якщо Маріо торкається монетки, то переміщуємо її за межі екрану: for k in range(4): if game_1[k].colliderect(mario): game_1[k].pos=-50,-50
Завдання. Додати до кожної цеглинки монетку, яка розміщена на 50 пікселів вище за цю цеглинку. Занесіть всі монети в список game_1.
__________________________
Створюємо гру "Арканоїд"
Визначаємо розмір ігрового поля, а також імпортуємо модуль випадкових чисел - він нам знадобиться для гри.
import random
WIDTH = 500
HEIGHT = 500
Визначаємо випадкові координати розміщення м'яча на початку гри:
x=random.randint(10,490)
y=random.randint(10,490)
Створюємо виконавця м'яч у визначених щойно координатах:
ball = Actor("ball")
ball.pos = x, y
Змінні a та b - визначають переміщення м'яча по горизонталі та вертикалі, це будуть випадкові числа:
a = random.randint(2,5)
b = random.randint(2,5)
У функції малювання очищуємо екран та зображаємо на ньому м'яч:
def draw():
screen.clear()
ball.draw()
У функції оновлення маємо змінити положення м'яча, додаючи a та b до координат поточного розміщення м'яча. Але коли м'яч торкається межі екрану, потрібно відбити його у протилежному напрямку. Це виконує команда a = -a після перевірки if ball.left > WIDTH - 50 or ball.left < 0 Для коректної роботи потрібно вказати, що значення a можна змінювати всередині функції update():
def update():
global a
ball.left += a
if ball.left > WIDTH - 50 or ball.left < 0 :
a = -a
global b
ball.top += b
if ball.top > WIDTH - 50 or ball.top < 0 :
b = -b
Події клавіатури
Створимо виконавця - платформу, яка буде рухатись за клавішами стрілок праворуч-ліворуч в нижній частині ігрового вікна. Для цього на початку проекту додамо
platforma = Actor("platforma")
platforma.pos = x, 470
У функцію draw():
platforma.draw()
У функцію update():
if keyboard.left:
platforma.x -= 5
elif keyboard.right:
platforma.x += 5
Крім того, потрібно вказати, що м'яч має відбиватись від платформи при зіткненні з нею. Доцільно доповнити вже існуючу команду if:
if ball.top > WIDTH - 50 or ball.top < 0 or platforma.colliderect(ball):
Ігрові цеглинки
Створимо набір ігрових цеглинок, які повинен збивати м'яч. Для цього потрібно створити список, який називається game, і в цей список будемо записувати виконавців wall, кожен з яких розміщується у випадковій позиції. Таких виконавців нехай буде 10, і їхні координати будуть по всій ширині (від 10 до 490) та у верхній половині по висоті (від 10 до 250).
game=[]
for k in range(10):
x=random.randint(10,490)
y=random.randint(10,250)
wall=Actor("wall")
wall.pos=x,y
game.append(wall)
У функції draw() додаємо команди виведення ігрових цеглинок на екран:
for k in range(10):
game[k].draw()
У функції update() додамо команди перевірки зіткнення м'яча з цеглинками:
for k in range(10): #перебираємо всі цеглинки
if game[k].colliderect(ball): #якщо м'яч торкнувся цеглинки
game[k].pos=-50,-50 #цю цеглинку переміщуємо за межі екрану
b = -b #м'яч відбивається
Доповнення
Реалізуйте одне або кілька ігрових доповнень, можна також додати власні!
_________________________________________
Функції
Завдання:
1. Надрукувати привітання з днем народження за допомогою функції:
Happy birthday to you!
Happy birthday to you!
Happy birthday , dear....(ім_я користувача)
Happy birthday to you!
2. Напиши програму (з використанням функції), яка б обраховувала твою вагу на Місяці. Як відомо, якби ми зараз були на Місяці, то твоя вага скаладали би 16,5% від твоєї ваги на Землі. Її можна вирахувати, помноживши твою вагу на Землі на 0,165.
Алгоритми
Циклічні алгоритми
Задача 1. Надрукувати числа від 1 до 10Задача 2.Знайти суму чисел від 1 до 20
s=0
Немає коментарів:
Дописати коментар