باشگاه پیچا

باشگاه پیچا

پروژه طراحی و توسعه بازی پکمن به زبان پایتون

پروژه طراحی و توسعه بازی پکمن به زبان پایتون

  • زبان پروژه پکمن

    زبان پروژه زبان برنامه نویسی پایتون است

  • سطح پروژه پکمن: متوسط

    پروژه برای دانش آموزانی که به مفاهیم برنامه نویسی پایتون مسلط هستند مناسب است.

  • مقطع سنی

    دانش آموزان دوره اول متوسطه می‌توانند پروژه را به راحتی انجام دهند

این پکمن ها هیچوقت تمومی ندارن. از وقتی که یادم میاد توی آتاری بازی محبوب بچه ها بودن( حالا اگه نمیدونید آتاری چی هست لازم نیست سن ما روبه رومون بیارید برید از گوگل … نه از chatGPT بپرسید)
داشتم میگفتم این پکمن ها همیشه بودن از وقتی کامپیوتر راه افتاد مشغول خوردن اون ادمک بیچاره شدن. خب حالا برای اینکه به روز باشیم و با روند پیشرفت تکنولوژی همراه باشیم ما یک بازی پکمن ساختیم . شما هم زود ورژن خودتونوبسازید!
کدشم تو سایت گذاشتیم که بتونید مقایسه کنید

ویدیو
کدهای استفاده شده در ویدیو
				
					packmancode.txt
"""Pacman, classic arcade game.

Exercises

۱. Change the board.
۲. Change the number of ghosts.
۳. Change where pacman starts.
۴. Make the ghosts faster/slower.
۵. Make the ghosts smarter.
"""

from random import choice
from turtle import *

from freegames import floor, vector

state = {'score': 0}
path = Turtle(visible=False)
writer = Turtle(visible=False)
aim = vector(5, 0)
pacman = vector(-40, -80)
ghosts = [
    [vector(-180, 160), vector(5, 0)],
    [vector(-180, -160), vector(0, 5)],
    [vector(100, 160), vector(0, -5)],
    [vector(100, -160), vector(-5, 0)],
]
# fmt: off
tiles = [
    ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰,
    ۰, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۰, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۰, ۰, ۰, ۰,
    ۰, ۱, ۰, ۰, ۱, ۰, ۰, ۱, ۰, ۱, ۰, ۰, ۱, ۰, ۰, ۱, ۰, ۰, ۰, ۰,
    ۰, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۰, ۰, ۰, ۰,
    ۰, ۱, ۰, ۰, ۱, ۰, ۱, ۰, ۰, ۰, ۱, ۰, ۱, ۰, ۰, ۱, ۰, ۰, ۰, ۰,
    ۰, ۱, ۱, ۱, ۱, ۰, ۱, ۱, ۰, ۱, ۱, ۰, ۱, ۱, ۱, ۱, ۰, ۰, ۰, ۰,
    ۰, ۱, ۰, ۰, ۱, ۰, ۰, ۱, ۰, ۱, ۰, ۰, ۱, ۰, ۰, ۰, ۰, ۰, ۰, ۰,
    ۰, ۱, ۰, ۰, ۱, ۰, ۱, ۱, ۱, ۱, ۱, ۰, ۱, ۰, ۰, ۰, ۰, ۰, ۰, ۰,
    ۰, ۱, ۱, ۱, ۱, ۱, ۱, ۰, ۰, ۰, ۱, ۱, ۱, ۱, ۱, ۱, ۰, ۰, ۰, ۰,
    ۰, ۰, ۰, ۰, ۱, ۰, ۱, ۱, ۱, ۱, ۱, ۰, ۱, ۰, ۰, ۱, ۰, ۰, ۰, ۰,
    ۰, ۰, ۰, ۰, ۱, ۰, ۱, ۰, ۰, ۰, ۱, ۰, ۱, ۰, ۰, ۱, ۰, ۰, ۰, ۰,
    ۰, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۰, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۰, ۰, ۰, ۰,
    ۰, ۱, ۰, ۰, ۱, ۰, ۰, ۱, ۰, ۱, ۰, ۰, ۰, ۰, ۰, ۱, ۰, ۰, ۰, ۰,
    ۰, ۱, ۱, ۰, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۰, ۱, ۱, ۰, ۰, ۰, ۰,
    ۰, ۰, ۱, ۰, ۱, ۰, ۱, ۰, ۰, ۰, ۱, ۰, ۱, ۰, ۱, ۰, ۰, ۰, ۰, ۰,
    ۰, ۱, ۱, ۱, ۱, ۰, ۱, ۱, ۰, ۱, ۱, ۰, ۱, ۱, ۱, ۱, ۰, ۰, ۰, ۰,
    ۰, ۱, ۰, ۰, ۰, ۰, ۰, ۱, ۰, ۱, ۰, ۰, ۰, ۰, ۰, ۱, ۰, ۰, ۰, ۰,
    ۰, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۱, ۰, ۰, ۰, ۰,
    ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰,
    ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰, ۰,
]
# fmt: on


def square(x, y):
    """Draw square using path at (x, y)."""
    path.up()
    path.goto(x, y)
    path.down()
    path.begin_fill()

    for count in range(4):
        path.forward(20)
        path.left(90)

    path.end_fill()


def offset(point):
    """Return offset of point in tiles."""
    x = (floor(point.x, 20) + 200) / 20
    y = (180 - floor(point.y, 20)) / 20
    index = int(x + y * 20)
    return index


def valid(point):
    """Return True if point is valid in tiles."""
    index = offset(point)

    if tiles[index] == 0:
        return False

    index = offset(point + 19)

    if tiles[index] == 0:
        return False

    return point.x % 20 == 0 or point.y % 20 == 0


def world():
    """Draw world using path."""
    bgcolor('black')
    path.color('blue')

    for index in range(len(tiles)):
        tile = tiles[index]

        if tile > ۰:
            x = (index % 20) * 20 - 200
            y = 180 - (index // 20) * 20
            square(x, y)

            if tile == 1:
                path.up()
                path.goto(x + 10, y + 10)
                path.dot(2, 'white')


def move():
    """Move pacman and all ghosts."""
    writer.undo()
    writer.write(state['score'])

    clear()

    if valid(pacman + aim):
        pacman.move(aim)

    index = offset(pacman)

    if tiles[index] == 1:
        tiles[index] = 2
        state['score'] += 1
        x = (index % 20) * 20 - 200
        y = 180 - (index // 20) * 20
        square(x, y)

    up()
    goto(pacman.x + 10, pacman.y + 10)
    dot(20, 'yellow')

    for point, course in ghosts:
        if valid(point + course):
            point.move(course)
        else:
            options = [
                vector(5, 0),
                vector(-5, 0),
                vector(0, 5),
                vector(0, -5),
            ]
            plan = choice(options)
            course.x = plan.x
            course.y = plan.y

        up()
        goto(point.x + 10, point.y + 10)
        dot(20, 'red')

    update()

    for point, course in ghosts:
        if abs(pacman - point) < 20:
            return

    ontimer(move, 100)


def change(x, y):
    """Change pacman aim if valid."""
    if valid(pacman + vector(x, y)):
        aim.x = x
        aim.y = y


setup(420, 420, 370, 0)
hideturtle()
tracer(False)
writer.goto(160, 160)
writer.color('white')
writer.write(state['score'])
listen()
onkey(lambda: change(5, 0), 'Right')
onkey(lambda: change(-5, 0), 'Left')
onkey(lambda: change(0, 5), 'Up')
onkey(lambda: change(0, -5), 'Down')
world()
move()
done()

source:    https://grantjenks.com/docs/freegames/pacman.html
				
			

سوال داری؟ یا توی اجرای برنامه به مشکل خوردی؟

سوالت رو توی اتاق گفتگوی پیچایی ها مطرح کن. حتما یکی از پیچایی‌ها  بهت جواب میده!

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

سبد خرید
پیمایش به بالا

باشگاه پیچا

Untitled_Artwork-9