Python

 Для повторення перейди за посиланням

Створюємо гру "Перегони"



________________________

Створюємо гру "Pacman"




import random
WIDTH = 500
HEIGHT = 500
direction = "right"
pacman = Actor("pacman")
pacman.pos = 250,250
apple = Actor("apple")
apple.pos = 150,150
def draw():
    screen.clear()
    pacman.draw()
    apple.draw()
def update():
    global direction
    if keyboard.left:
        direction = "left"
    elif keyboard.right:
        direction = "right"
    elif keyboard.up:
        direction = "up"
    elif keyboard.down:
        direction = "down"
    global game
    if direction == "right":
        pacman.x += 2
    elif direction == "left":
        pacman.x -= 2
    elif direction == "up":
        pacman.y -= 2
    elif direction == "down":
        pacman.y +=2
    if apple.colliderect(pacman):
        x=random.randint(10,490)
        y=random.randint(10,490)
        apple.pos=x,y

Створюємо гру "Маріо"

Заготовки:



У цьому проекті головний герой - Маріо, рухається за допомогою кнопок-стрілочок і збирає монети, розміщені над платформами.


На початку проекту задаємо розмір ігрового поля
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=100
y=270
for 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

Доповнення
1) Намалюйте схему взаємодій ігрових об'єктів.
2) Дослідіть роботу проекту та внесіть зміни для відлагодження коректної ігрової логіки.
3) Додайте обрахунок балів, отриманих гравцем та виведення їх на екран:
Команда draw.text у функції draw() виводить на екран вміст змінної points:
screen.draw.text(str(points), (10, 10), color=(200, 200, 200))
Подумайте, де потрібно рахувати очки (і не забудьте, що це має бути глобальна змінна)
4) Створіть кілька рівнів гри з різними конфігураціями цеглинок.

__________________________

Створюємо гру "Арканоїд"

Заготовки:


У цьому проекті м'ячик має відбиватись від рухомої платформи і збивати "цеглинки", розміщені на екрані.

Визначаємо розмір ігрового поля, а також імпортуємо модуль випадкових чисел - він нам знадобиться для гри.

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 Для коректної роботи потрібно вказати, що значення можна змінювати всередині функції 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. Рахуємо гроші. До введеного числа додати напис "гривень", "гривня", "гривні" згідно з правилами української мови
x=int(input('Введіть суму ')) 
a=x%10 
b=x//10%10 
if(a==1) and (b!=1): print (x, 'гривня') 
elif ((a==2)or(a==3)or(a==4))and(b!=1): 
 print (x, 'гривні') 
else: print(x, 'гривень')

Задача 2. Дано температура. Виведіть стан, у якому знаходиться вода при цій температурі
if(a<0): print () 
elif (a>100): print ()
else: print()

Задача 3. Дано вік людини. Напишіть програму, яка аналізує людину за її віком та відносить її до однієї з чотирьох груп: дошкільня, школяр, працівник, пенсіонер.

                                        Циклічні алгоритми

Задача 1. Надрукувати числа від 1 до 10
for chyslo in range(1,11): 
print(chyslo)

Задача 2.Знайти суму чисел від 1 до 20
s=0 
for i in range(1,21):
  s=s+i print(s)

___________________________

Списки


Список - це cтруктура даних, яка зберігає набір елементів. У мові Python список може містити елементи різних типів, і не потрібно попередньо оголошувати розмір такого списку. 
Доступ до окремих елементів списку здійснюється через вказання імені списку і порядкового номера (індекса) конкретного елемента у квадратних дужках. Варто пам'ятати, що нумерація починається з нуля. Можна також нумерувати елементи списку від'ємними числами (з кінця списку).

Завдання:
Склади список своїх улюбленних хобі та дай йому назву змінної ігри. А тепер склади список своїх улюблених страв і назви цю змінну їжа. Обєднай два списки й назви результат улюблене. У кінці надрукуй змінну улюблене.
Додатково:
1. Авторизація і аутентифікація у веб-застосунках з прикладами на Python + Django
Завдання:
Склади список своїх улюбленних хобі та дай йому назву змінної ігри. А тепер склади список своїх улюблених страв і назви цю змінну їжа. Обєднай два списки й назви результат улюблене. У кінці надрукуй змінну улюблене.
Додатково:
1. Авторизація і аутентифікація у веб-застосунках з прикладами на Python + Django

Немає коментарів:

Дописати коментар