This repository was 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 pathexercise-general-week-05-07.py
73 lines (61 loc) · 2.88 KB
/
exercise-general-week-05-07.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
from enum import Enum
import random
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# اینبار بازی سنگ - کاغذ - قیچی را با استفاده از کلاس میسازیم
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# هر بازیکن میتواند چه حالت هایی را انتخاب کند
class Result(Enum):
ROCK = 0
PAPER = 2
SCISSORS = 3
NOT_DEFINED = 4
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# کلاس بازیکن
class Player:
outcome = Result.NOT_DEFINED
name = None
def __init__(self, player_name) -> None:
self.name = player_name
def __str__(self) -> str:
return self.name + " - " + self.outcome.name
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# متد زیر زمانی که اجرا میشود یکی از موارد سنگ، کاغذ یا قیچی
# را بصورت تصادفی انتخاب میکند
def play(self):
self.outcome = random.choice([Result.ROCK, Result.PAPER, Result.SCISSORS])
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# این متد دو بازیکن و نتیجه بازی آنها را دریافت کرده و میگوید کدام
# یک برنده شده است
def who_is_the_winner(p1: Player, p2: Player):
if (
(p1.outcome is Result.ROCK and p2.outcome is Result.SCISSORS)
or (p1.outcome is Result.SCISSORS and p2.outcome is Result.PAPER)
or (p1.outcome is Result.PAPER and p2.outcome is Result.ROCK)
):
return p1
return p2
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# تمرین ۱
# اگر هر دو بازیکن مقدار مساوی بیاورند، بازیکن دوم برنده اعلام میشود
# برنامه را به شکلی تغییر دهید که بتواند حالت مساوی شدن را هم شامل
# شود
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# دو نمونه از روی کلاس بازیکن میسازیم
# پس دو بازیکن داریم
player1 = Player("PLAYER ONE")
player2 = Player("PLAYER TWO")
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# از هر دو بازیکن میخواهیم که بازی کنند و نتیجه بازی آنها را
# نمایش میدهیم
player1.play()
player2.play()
print(player1)
print(player2)
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# نتیجه بازی را اعلام میکنیم
print("Winner:", who_is_the_winner(player1, player2))
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# تمرین ۲
# اگر سه نفر بازیکن داشته باشیم برنامه را چطور باید تغییر دهیم
# راهنمایی: دو بازیکن را با هم مقایسه و برنده را با نفر سوم مقایسه
# کنید