This repository has been archived by the owner on Aug 11, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsimple-2d-game-part2.py
85 lines (74 loc) · 3.74 KB
/
simple-2d-game-part2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
## python -m pip install pygame
import pygame
import random
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# در اینجا نسخه اول بازی را به شکلی تغییر دادیم که یک توپ در صفحه
# بصورت تصادفی به سمت یک نقطه جدید حرکت کند - هر بار توپ به نقطه
# مد نظر میرسد یک نقطه جدید تصادفی دیگر ساخته میشود تا مسیر جدیدی
# باشد که توپ به سمت آن حرکت میکنم
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# یک پنجره میسازیم و عنوان و سایز آن را مشخص میکنیم
screen = pygame.display.set_mode((500, 500))
pygame.display.set_caption("Our Simple Game Part2")
clock = pygame.time.Clock()
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# مشخص میکنیم توپ در کجای صفحه قرار دارد و به چه نقطه جدیدی باید
# تغییر مسیر دهد و با چه سرعتی باید به آن سمت حرکت کند
x, y = 250, 250
nx, ny = None, None
nxp, nyp = None, None
speed = 5
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# یک حلقه نامحدود داریم که در هر چرخه رویدادهای بازی را بررسی کرده
# منطق بازی را بروزرسانی میکند و همینطور صفحه بازی را دوباره رسم
# میکند
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ۶۰ فریم در ثانیه
clock.tick(60)
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# پاکسازی صفحه با یک رنگ دلخواه
screen.fill((255, 0, 127))
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# اگر این شرط برقرار باشد یعنی توپ به مکانی که باید به سمت آن
# حرکت میکرده رسیده است و باید یک نقطه جدید تصادفی در صفحه
# انتخاب کنیم که توپ به آن سمت حرکت کند
if nx is None and ny is None:
nxp = nx = random.randint(0, 500)
nyp = ny = random.randint(0, 500)
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# میخواهیم توپ به سمت یک مکان جدید حرکت کند
# تصمیم میگیریم بر روی محور ایکس چقدر حرکت کنیم تا به مختصات
# مد نظر برسیم
if nx is not None:
if x < nx - speed:
x += speed
elif x > nx + speed:
x -= speed
else:
x = nx
nx = None
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# میخواهیم توپ به سمت یک مکان جدید حرکت کند
# تصمیم میگیریم بر روی محور وآی چقدر حرکت کنیم تا به مختصات
# مد نظر برسیم
if ny is not None:
if y < ny - speed:
y += speed
elif y > ny + speed:
y -= speed
else:
y = ny
ny = None
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# در اخر با مختصات جدید بر روی صفحه دایره رسم میکنیم
pygame.draw.circle(screen, (127, 255, 0), (x, y), 10)
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# یک دایره کوچکتر رسم میکنیم که جایی را نمایش میدهد که توپ
# اصلی باید به سمت آن حرکت کند
pygame.draw.circle(screen, (255, 255, 255), (nxp, nyp), 5)
pygame.display.update()