Pygame ашиглан тоглоомыг Python дээр хэрхэн програмчлах вэ (зурагтай)

Агуулгын хүснэгт:

Pygame ашиглан тоглоомыг Python дээр хэрхэн програмчлах вэ (зурагтай)
Pygame ашиглан тоглоомыг Python дээр хэрхэн програмчлах вэ (зурагтай)

Видео: Pygame ашиглан тоглоомыг Python дээр хэрхэн програмчлах вэ (зурагтай)

Видео: Pygame ашиглан тоглоомыг Python дээр хэрхэн програмчлах вэ (зурагтай)
Видео: Opening a Jupyter Notebook from the Command Line! 2024, Дөрөвдүгээр сар
Anonim

Энэ бол Python -ийг мэддэг хүмүүст зориулсан Pygame -ийн танилцуулга юм. Энэхүү нийтлэл нь тоглогч бөмбөгнөөс зайлсхийж буй энгийн тоглоомыг бий болгох алхамуудыг танд заах болно.

Алхам

8 -р хэсгийн 1: Pygame суулгах

Алхам 1. Pygame татаж авах

Үүнийг платформдоо зориулж https://www.pygame.org/download.shtml дээрээс олоорой.

Алхам 2. Суулгагчийг ажиллуулна уу

Алхам 3. Суурилуулалт ажилласан эсэхийг шалгаарай

Python терминал нээнэ үү. "Импортын тоглоом" гэж бичнэ үү. Хэрэв та ямар ч алдаа олж харахгүй бол Pygame амжилттай суулгасан болно.

    pygame импортлох

8 -р хэсгийн 2 -р хэсэг: Үндсэн цонхыг тохируулах

Алхам 1. Шинэ файл нээнэ үү

Алхам 2. Pygame импортлох

Pygame бол график функцэд нэвтрэх боломжийг олгодог номын сан юм. Хэрэв та эдгээр функцууд хэрхэн ажилладаг талаар илүү их мэдээлэл авахыг хүсвэл Pygame вэбсайтаас хайж олох боломжтой.

    pygame -аас pygame импортлох. localals import *

Алхам 3. Цонхны нягтралыг тохируулна уу

Та дэлгэцийн нарийвчлалд зориулж дэлхийн хувьсагч хийх болно, ингэснээр тоглоомын хэд хэдэн хэсэгт лавлаж болно. Файлын дээд хэсэгт олоход хялбар байдаг тул дараа нь өөрчлөх боломжтой. Дэвшилтэт төслүүдийн хувьд энэ мэдээллийг тусдаа файлд оруулах нь илүү зөв санаа байх болно.

    нарийвчлал = (400, 300)

Алхам 4. Зарим өнгийг тодорхойл

Pygame -ийн өнгө нь (RBGA бөгөөд тэдгээр нь 0 -ээс 255 хооронд хэлбэлздэг. Альфа утга (A) нь сонголттой боловч бусад өнгө (улаан, цэнхэр, ногоон заавал байх ёстой).

    цагаан = (255, 255, 255) хар = (0, 0, 0) улаан = (255, 0, 0)

Алхам 5. Дэлгэцийг эхлүүлэх

Өмнө нь тодорхойлсон нарийвчлалын хувьсагчийг ашиглана уу.

    дэлгэц = pygame.display.set_mode (нарийвчлал)

Алхам 6. Тоглоомын хүрд хийх

Тоглоомын бүх хүрээнд тодорхой үйлдлүүдийг давт. Эдгээр бүх үйлдлүүдийг эргүүлэхийн тулд үргэлж давтагдах давталт хий.

    үнэн байхад:

Алхам 7. Дэлгэцийг өнгөөр будна уу

    дэлгэц бөглөх (цагаан)

Алхам 8. Дэлгэцийг харуулна уу

Хэрэв та програмыг ажиллуулбал дэлгэц нь цагаан болж, дараа нь програм унах болно. Учир нь үйлдлийн систем нь тоглоомонд үйл явдал илгээдэг бөгөөд тоглоом нь тэдэнтэй юу ч хийхгүй байна. Тоглоом хэт олон зохицуулагдаагүй үйл явдлыг хүлээн авмагц сүйрэх болно.

    үнэн байхад: … pygame.display.flip ()

Алхам 9. Үйл явдлыг зохицуулах

Хүрээ бүрт болсон бүх үйл явдлын жагсаалтыг аваарай. Та ганцхан үйл явдлыг л орхих болно. Энэ нь хэрэглэгч тоглоомын цонхыг хаах үед тохиолддог. Энэ нь манай хөтөлбөр хэт олон үйл явдлаас болж сүйрэхээс урьдчилан сэргийлэх болно.

    while True:… pygame.event.get () дахь үйл явдлын хувьд: хэрэв event.type == QUIT: pygame.quit ()

ProgramPygamePart1
ProgramPygamePart1

Алхам 10. Үүнийг туршаад үзээрэй

Код одоо ямар байх ёстойг энд харуулав.

    pygame -аас pygame импортлох нарийвчлал) байхад True: screen.fill (цагаан) pygame.display.flip () pygame.event.get () дахь үйл явдлын хувьд:) хэрэв event.type == QUIT: pygame.quit ()

8 -р хэсгийн 3 -р хэсэг: Тоглоомын объект хийх

Алхам 1. Шинэ анги, байгуулагч хийх

Объектын бүх шинж чанарыг тохируулна уу. Та мөн бүх өмч хөрөнгийн анхдагч утгыг өгч байна.

    анги Бөмбөг: def _init _ (өөрөө, xPos = нарийвчлал [0] / 2, yPos = нарийвчлал [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos өөрөө.dx = xVel self.dy = yVel self.radius = rad self.type = "ball"

Алхам 2. Объектыг хэрхэн зурахаа тодорхойл

Бөмбөгийг тойрог хэлбэрээр зурах, мөн объектыг зурах функцэд гадаргууг дамжуулахын тулд бүтээгчид тодорхойлсон шинж чанаруудыг ашиглана уу. Гадаргуу нь өмнө нь нарийвчлалыг ашиглан бүтээсэн дэлгэцийн объект байх болно.

    def draw (өөрөө, гадаргуу): pygame.draw.circle (гадаргуу, хар, (self.x, self.y), өөрөө.радиус)

Алхам 3. Ангийн жишээг гаргаж, тоглоомын хүрдэнд бөмбөгийг давталт бүрт зурахыг хэл

    ball = Ball () байхад True:… ball.draw (дэлгэц)

Алхам 4. Объектыг хөдөлгө

Объектын байрлалыг шинэчлэх функцийг бий болгох. Тоглоомын давталт бүрт энэ функцийг дуудаарай.

    ангийн Бөмбөг:… def update (өөрөө): self.x += self.dx өөрөө.y += өөрөө.dy

Алхам 5. Хүрээний хурдыг хязгаарлах

Тоглоомын хүрд секундэд хэдэн зуун удаа гүйдэг тул бөмбөг үнэхээр хурдан хөдөлдөг. Pygame -ийн цагийг ашиглан хүрээний хурдыг 60 кадр / сек хүртэл хязгаарлаарай.

    цаг = pygame.time. Clock () байхад True:… clock.tick (60)

Алхам 6. Бөмбөгийг дэлгэцэн дээр байлга

Бөмбөг дэлгэцийн аль нэг ирмэг дээр цохигдсон тохиолдолд чиглэлийг нь өөрчлөхийн тулд шинэчлэх функцэд шалгалт оруулна уу.

    ангийн Бөмбөг:… def update (өөрөө):… if (self.x <= 0 эсвэл self.x> = нарийвчлал [0]): self.dx *= -1 if (self.y <= 0 эсвэл self.y) > = нарийвчлал [1]): self.dy *= -1

ProgramPygamePart2
ProgramPygamePart2

Алхам 7. Үүнийг туршаад үзээрэй

Код одоо ямар байх ёстойг энд харуулав.

    pygame -аас pygame импортлох нарийвчлал) анги Бөмбөг: def _init _ (өөрөө, xPos = нарийвчлал [0] / 2, yPos = нарийвчлал [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (өөрөө, гадаргуу): pygame.draw.circle (гадаргуу, хар, (self.x, self.y), self.radius) def update (self): self.x += self.dx self.y += self.dy if (self.x <= 0 or self.x> = resolution [0]): self.dx *= -1 if (self.y <= 0 or self.y> = resolution [1]): self.dy *= -1 ball = Ball () clock = pygame.time. Clock () while True: screen. дүүргэх (цагаан) ball.draw (дэлгэц) ball.update () pygame.display.flip () clock.tick (60) pygame.event.get () дахь үйл явдлын хувьд ()

8 -ийн 4 -р хэсэг: Тоглоомыг зохион байгуулах

Алхам 1. Бүх зүйлийг цэгцлэхийн тулд ангиудыг ашигла

Тоглоом илүү төвөгтэй болох болно. Кодоо цэгцлэхийн тулд объект хандалтат аргыг ашигла.

Алхам 2. Тоглоомын хүрдийг анги болгоно

Манай тоглоом одоо таны тоглоомын объект, функцийг агуулсан өгөгдөлтэй болсон тул тоглоомын хүрдийг анги болгон хувиргах нь зүйтэй юм.

    ангийн тоглоом ():

Алхам 3. Конструктор нэмнэ үү

Энд та тоглоомын зарим объектуудыг үүсгэж, бидний дэлгэц, цагийг бүтээж, Pygame -ийг эхлүүлэх болно. Текст эсвэл дуу гэх мэт зарим онцлог шинж чанарыг ашиглахын тулд Pygame -ийг эхлүүлэх шаардлагатай.

    ангийн тоглоом (): def _init _ (өөрөө): pygame.init () self.screen = pygame.display.set_mode (нарийвчлал) self.clock = pygame.time. Clock ()

Алхам 4. Үйл явдлыг функцээр зохицуулах

    ангийн тоглоом ():… def handleEvents (өөрөө): pygame.event.get () дахь үйл явдлын хувьд: хэрэв event.type == QUIT: pygame.quit ()

Алхам 5. Тоглоомын хүрдийг функц болгоно

Үйл явдал зохицуулах функцийг давталт болгон дуудаарай.

    class game ():… def run (self): while True: self.handleEvents () self.screen.fill (white) self.clock.tick (60) pygame.display.flip ()

Алхам 6. Тоглоомын олон объекттой ажиллах

Яг одоо энэ код нь хүрээ тус бүрт манай объектын зурах, шинэчлэлтийг дуудах ёстой. Хэрэв танд олон объект байгаа бол энэ нь эмх замбараагүй болно. Объектоо массивт нэмээд дараа нь массив дахь бүх обьектыг давталт болгон шинэчилж зурна. Одоо та өөр объектыг хялбархан нэмж, өөр өөр байрлал өгөх боломжтой.

    ангийн тоглоом (): def _init _ (өөрөө):… self.gameObjects = self.gameObjects.append (Бөмбөг ()) self.gameObjects.append (Бөмбөг (100))… def гүйлт (өөрөө): харин үнэн: өөрөө. HandleEvents () for gameObj in self.gameObjects: gameObj.update () self.screen.fill (white) for gameObj in self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip ()

ProgramPygamePart3
ProgramPygamePart3

Алхам 7. Үүнийг туршаад үзээрэй

Код одоо ямар байх ёстойг энд харуулав.

    pygame -аас pygame импортлох нарийвчлал) анги Бөмбөг: def _init _ (өөрөө, xPos = нарийвчлал [0] / 2, yPos = нарийвчлал [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (өөрөө, гадаргуу): pygame.draw.circle (гадаргуу, хар, (self.x, self.y), self.radius) def update (self): self.x += self.dx self.y += self.dy if (self.x <= 0 or self.x> = resolution [0]): self.dx *= -1 if (self.y <= 0 or self.y> = resolution [1]): self.dy *= -1 class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (нарийвчлал) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100)) def handleEvents (өөрийгөө): pygame.event.get () дахь үйл явдлын хувьд: хэрэв event.type == QUIT: pygame.quit () def run (өөрөө): байхад Үнэн: self.handleEvent s () for gameObj in self.gameObjects: gameObj.update () self.screen.fill (white) for gameObj in self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display. flip () тоглоом (). ажиллуулах ()

8 -ийн 5 -р хэсэг: Тоглогчийн объект нэмэх

Алхам 1. Тоглогчийн анги, бүтээгч хий

Та хулганаар удирддаг өөр тойрог хийх гэж байна. Үүсгэгч дэх утгыг эхлүүлэх. Радиус бол цорын ганц чухал утга юм.

    ангийн тоглогч: def _init _ (өөрөө, рад = 20): өөрөө.x = 0 өөрөө.y = 0 өөрөө.радиус = рад

Алхам 2. Тоглогчийн объектыг хэрхэн зурахаа тодорхойл

Тоглоомын бусад объектуудыг зурсантай адил байх болно.

    ангийн тоглогч:… def draw (өөрөө, гадаргуу): pygame.draw.circle (гадаргуу, улаан, (self.x, self.y), өөрөө.радиус)

Алхам 3. Тоглогчийн объектын хулганы хяналтыг нэмнэ үү

Хүрээ болгон дээр хулганы байрлалыг шалгаж, тоглогчдын объектын байршлыг тэр цэг рүү тохируулна уу.

    ангийн тоглогч:… def update (өөрөө): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1]

Алхам 4. gameObjects дээр тоглогчийн объектыг нэмнэ үү

Тоглогчийн шинэ жишээ үүсгээд жагсаалтад нэмнэ үү.

    ангийн тоглоом (): def _init _ (өөрөө):… self.gameObjects.append (Тоглогч ())

ProgramPygamePart4
ProgramPygamePart4

Алхам 5. Үүнийг туршаад үзээрэй

Код одоо ямар байх ёстойг энд харуулав.

    pygame -аас pygame импортлох нарийвчлал) анги Бөмбөг: def _init _ (өөрөө, xPos = нарийвчлал [0] / 2, yPos = нарийвчлал [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (өөрөө, гадаргуу): pygame.draw.circle (гадаргуу, хар, (self.x, self.y), self.radius) def update (self): self.x += self.dx self.y += self.dy if (self.x <= 0 or self.x> = resolution [0]): self.dx *= -1 if (self.y <= 0 or self.y> = resolution [1]): self.dy *= -1 class Player: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "тоглогч" def татах (өөрөө, гадаргуу): pygame.draw.circle (гадаргуу, улаан, (self.x, self.y), self.radius) def шинэчлэлт (өөрөө): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_ горим (нарийвчлал) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Тоглогч ()) self.gameObjects.append (Бөмбөг ()) self.gameObjects.append (Бөмбөг (100))) def handleEvents (өөрөө): pygame.event.get дахь үйл явдлын хувьд.gameObjects: gameObj.update () self.screen.fill (white) for gameObj in self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game (). гүйх ()

8 -ийн 6 -р хэсэг: Объект хийх нь тоглогчтой харилцах

Алхам 1. Шинэчлэх функцуудыг өөрчилнө үү

Объектууд хоорондоо харилцан үйлчлэхийн тулд тэд бие биедээ нэвтрэх эрхтэй байх ёстой. GameObjects жагсаалтад оруулахын тулд Update хийх өөр нэг параметрийг нэмж оруулъя. Та үүнийг тоглогчийн объект болон Бөмбөг объектын аль алинд нь нэмэх шаардлагатай болно. Хэрэв танд маш олон тоглоомын объект байгаа бол өв залгамжлал нь таны бүх аргын гарын үсгийг хэвээр хадгалахад тусална.

    ангийн бөмбөг:… def шинэчлэлт (өөрөө, gameObjects):… ангийн тоглогч:… def шинэчлэлт (өөрөө, gameObjects):

Алхам 2. Тоглогч болон бөмбөг хоорондоо мөргөлдөж байгаа эсэхийг шалгаарай

Тоглоомын бүх объектуудыг үзэж, объектын төрөл бөмбөг эсэхийг шалгаарай. Дараа нь хоёр объектын радиус ба зайны томъёог ашиглан мөргөлдөж байгаа эсэхийг шалгаарай. Хүрээлэл нь мөргөлдөөнийг шалгахад үнэхээр хялбар байдаг. Энэ бол та энэ тоглоомонд өөр хэлбэр ашиглаагүйн хамгийн том шалтгаан юм.

    ангийн Тоглогч:… def update (өөрөө, gameObjects):… gameObj in gameObjects -д: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y)) ** 2 <= (gameObj.radius + self.radius) ** 2:

ProgramPygamePart5
ProgramPygamePart5

Алхам 3. Тоглогч "цохилт" авсан бол тоглоомыг дуусга

Одоохондоо тоглоомоос гарцгаая.

    if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: pygame.quit ()

Алхам 4. Үүнийг туршаад үзээрэй

Код одоо ямар байх ёстой вэ:

    pygame -аас pygame импортлох нарийвчлал) анги Бөмбөг: def _init _ (өөрөө, xPos = нарийвчлал [0] / 2, yPos = нарийвчлал [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (өөрөө, гадаргуу): pygame.draw.circle (гадаргуу, хар, (self.x, self.y), self.radius) def update (self, gameObjects): self.x += self.dx self.y += self.dy if (self.x <= 0 or self.x> = resolution [0]): өөрөө.dx *= -1 if (self.y <= 0 or self.y> = resolution [1]): self.dy *= -1 class Player: def _init _ (өөрөө, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "тоглогч" -ын сугалаа (өөрөө, гадаргуу): pygame.draw.circle (гадаргуу, улаан, (self.x, self.y), өөрөө.радиус) def update (өөрөө, gameObjects): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] gameObj for gameObjects: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: pygame.quit () ангийн тоглоом (): def _init _ (өөрөө): pygame.init () self.screen = pygame.display.set_mode (нарийвчлал) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Тоглогч () self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100)) def handleEvents (self): pygame.event.get () дахь үйл явдлын хувьд: хэрэв event.type == QUIT: pygame.quit () def run (self): while True: self.handleEvents () for gameObj in self.gameObjects: gameObj.update (self.gameObjects) self.screen.fill (white) in gameObj in self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () тоглоом (). ажиллуулах ()

8 -ийн 7 -р хэсэг: Объект үүсгэхийн тулд тоглоомын хянагч нэмэх

Алхам 1. Тоглоомын хянагчийн анги үүсгэнэ үү

Тоглоомын хянагчид тоглоомыг "ажиллуулах" үүрэгтэй. Энэ нь манай бүх объектуудыг зурах, шинэчлэх үүрэгтэй манай тоглоомын ангиас өөр юм. Тоглоомыг хүндрүүлэхийн тулд хянагч үе үе нэг бөмбөгийг дэлгэц дээр нэмж оруулах болно. Конструктор нэмж, зарим үндсэн утгыг эхлүүлнэ үү. Энэ интервал нь өөр бөмбөг нэмэхээс өмнөх хугацаа байх болно.

    ангийн GameController: def _init _ (өөрөө, интервал = 5): self.inter = интервал өөрөө.дэргэд = pygame.time.get_ticks () + (2 * 1000) self.type = "тоглоомын хянагч"

Алхам 2. Шинэчлэх функцийг нэмнэ үү

Энэ нь бөмбөг нэмсэн цагаас хойш эсвэл тоглоомын эхэн үеэс хойш хэр их хугацаа өнгөрснийг шалгах болно. Хэрэв хугацаа нь интервалаас илүү байвал та цагийг дахин тохируулж, бөмбөг нэмнэ.

    class GameController:… def update (өөрөө, gameObjects): хэрэв өөрөө.хойш <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Бөмбөг ())

Алхам 3. Бөмбөгийг санамсаргүй хурдаар өг

Тоглоомыг өөр болгохын тулд та санамсаргүй тоог ашиглах хэрэгтэй болно. Гэсэн хэдий ч бөмбөгний хурд нь бүхэл тоо биш харин хөвөгч цэгийн тоо болжээ.

    class GameController:… def update (өөрөө, gameObjects): хэрэв өөрөө.хойш <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Ball (xVel = санамсаргүй ()*2, yVel = санамсаргүй ()*2))

Алхам 4. Draw функцийг засах

Татах функц нь хөвөхийг хүлээж авахгүй. Бөмбөг зурахаас өмнө бөмбөгний байрлалыг бүхэл тоо болгон хөрвүүлье.

    Анги бөмбөг:… зурах (өөрөө, гадаргуу): pygame.draw.circle (гадаргуу, хар, (int (self.x), int (өөрөө.y)), өөрөө.радиус)

Алхам 5. Тоглоомын хянагчийн сугалааны аргыг тодорхойл

Энэ нь тоглоомын объект тул гол давталт үүнийг зурахыг оролдох болно. Тоглоом сүйрэхгүйн тулд юу ч хийдэггүй сугалааны функцийг тодорхойлох шаардлагатай болно.

    ангийн GameController:… def draw (өөрөө, дэлгэц): дамжуулах

Алхам 6. Тоглоомын хянагчийг gameObjects дээр нэмж, 2 бөмбөгийг арилгана

Тоглоом одоо таван секунд тутамд бөмбөг гаргах ёстой.

    ангийн тоглоом (): def _init _ (өөрөө):… self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Тоглогч ())

ProgramPygamePart6
ProgramPygamePart6

Алхам 7. Үүнийг туршаад үзээрэй

Код одоо ямар байх ёстойг энд харуулав.

    pygame -аас санамсаргүй импортоос pygame импортлох display.set_mode (resolution) class Ball: def _init _ (өөрөө, xPos = нарийвчлал [0] / 2, yPos = нарийвчлал [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (өөрөө, гадаргуу): pygame.draw.circle (гадаргуу, хар, (int (өөрөө). x), int (self.y)), self.radius) def update (өөрөө, gameObjects): self.x += self.dx self.y += self.dy if (self.x <= 0 эсвэл өөрөө. x> = нарийвчлал [0]): self.dx *= -1 if (self.y <= 0 or self.y> = resolution [1]): self.dy *= -1 class Player: def _init _ (өөрөө, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "тоглогчийн" зурах (өөрөө, гадаргуу): pygame.draw.circle (гадаргуу, улаан, (self.x), self.y), self.radius) def update (өөрөө, gameObjects): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] gameObj for game Объектууд: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius)* * 2: pygame.quit () ангийн GameController: def _init _ (өөрөө, интервал = 5): өөрөө.интер = интервал өөрөө.дэргэд = pygame.time.get_ticks () + (2 * 1000) self.type = "тоглоомын хянагч "def update (өөрөө, gameObjects): хэрэв өөрөө.хэрэв <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Ball (xVel = random) ()*2, yVel = random ()*2)) def draw (өөрөө, дэлгэц): ангийн тоглоомыг дамжуулах (): def _init _ (өөрөө): pygame.init () self.screen = pygame.display.set_mode (нарийвчлал)) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ()) def handleEvents (self): pygame.event дахь үйл явдлын хувьд..get (): if event.type == QUIT: pygame.quit () def run (self): while True: self.handleEvents () for gameObj in self.gameObjects: gameObj.update (self.gameObjects) self.screen gameObj -ийг self.gameO хэлбэрээр бөглөх (цагаан) bjects: gameObj.draw (өөрөө дэлгэц) self.clock.tick (60) pygame.display.flip () тоглоом (). ажиллуулах ()

8 -ийн 8 -р хэсэг: Оноо нэмж, тоглоом дуусна

Алхам 1. Тоглоомын хянагчийн ангид оноо нэмнэ үү

Фонтын объект болон онооны хувьсагч үүсгэх. Та оноог харуулахын тулд хүрээ бүрт фонт зурж, хүрээ бүрт оноог нэмэгдүүлэх болно.

    ангийн GameController: def _init _ (өөрөө, интервал = 5):… self.score = 0 self.scoreText = pygame.font. Font (None, 12) def update (self, gameObjects):… self.score += 1 def draw (өөрөө, дэлгэц): screen.blit (self.scoreText.render (str (self.score), үнэн, хар), (5, 5))

Алхам 2. Тоглоом хэрхэн дуусахыг өөрчлөх

Тоглогч мөргөлдөөнийг илрүүлэх үед тамхинаас гарцгаая. Үүний оронд та тоглогчид тоглоом шалгаж болох хувьсагчийг тохируулах болно. GameOver -ийг тохируулах үед обьектуудыг шинэчлэхээ зогсооно уу. Энэ нь тоглогч юу болсныг харж, оноогоо шалгахын тулд бүх зүйлийг байрандаа байлгана. Объектуудыг зурсан хэвээр байгаа бөгөөд зөвхөн шинэчлэгдээгүй байгааг анхаарна уу.

    ангийн тоглогч: def _init _ (өөрөө, rad = 20):… self.gameOver = хуурамч def шинэчлэлт (өөрөө, gameObjects):… gameObj for gameObjects: if gameObj.type == "ball": if (gameObj.x - өөрөө.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: self.gameOver = Жинхэнэ ангийн тоглоом (): def _init _ (өөрөө): … self.gameOver = Худал def ажиллуулах (өөрөө): үнэн байхад: self.handleEvents () өөрөө биш бол.gameOver: gameObj -ийн хувьд өөрөө.gameObjects: gameObj.update (self.gameObjects) бол gameObj.type == "тоглогч": self.gameOver = gameObj.gameOver

ProgramPygameFinal
ProgramPygameFinal

Алхам 3. Үүнийг туршаад үзээрэй

Бэлэн код одоо ямар байх ёстойг энд харуулав.

    pygame -аас санамсаргүй импортоос pygame импортлох display.set_mode (resolution) class Ball: def _init _ (өөрөө, xPos = нарийвчлал [0] / 2, yPos = нарийвчлал [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (өөрөө, гадаргуу): pygame.draw.circle (гадаргуу, хар, (int (өөрөө). x), int (self.y)), self.radius) def update (өөрөө, gameObjects): self.x += self.dx self.y += self.dy if (self.x <= 0 эсвэл өөрөө. x> = нягтрал [0]): self.dx *= -1 if (self.y <= 0 or self.y> = resolution [1]): self.dy *= -1 class Player: def _init _ (өөрөө, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "тоглогч" өөрөө.gameOver = Хуурамч зурах (өөрөө, гадаргуу): pygame.draw.circle (гадаргуу, улаан, (self.x, self.y), self.radius) def update (өөрөө, gameObjects): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] for gameObj in gameObjects: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: self.gameOver = GameController -ийн жинхэнэ анги: def _init _ (өөрөө, интервал = 5): self.inter = интервал өөрөө.дэргэд = pygame.time.get_ticks () + (2*1000) өөрөө. type = "game controller" self.score = 0 self.scoreText = pygame.font. Font (None, 12) def update (self, gameObjects): if self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter*1000) gameObjects.append (Ball (xVel = random ()*2, yVel = random ()*2)) self.score + = 1 def draw (өөрөө, дэлгэц): screen.blit (self.scoreText.render (str (self.score), Үнэн, хар), (5, 5)) ангийн тоглоом (): def _init _ (өөрөө): pygame.init () self.screen = pygame.display.set_mode (нарийвчлал) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Тоглогч ()) self.gameOver = Худал def handleEvents (өөрөө): pygame.event.get () дэх үйл явдлын хувьд: хэрэв ev ent.type == QUIT: pygame.quit () def run (self): while True: self.handleEvents () if not.gameOver: for gameObj in self.gameObjects: gameObj.update (self.gameObjects) if gameObj. type == "player": self.gameOver = gameObj.gameOver self.screen.fill (white) for gameObj in self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () тоглоом (). гүйх ()

Зөвлөмж болгож буй: