በፓይዘን ውስጥ ጨዋታን ከፒጋሜ ጋር (ከስዕሎች ጋር) እንዴት ማዘጋጀት እንደሚቻል

ዝርዝር ሁኔታ:

በፓይዘን ውስጥ ጨዋታን ከፒጋሜ ጋር (ከስዕሎች ጋር) እንዴት ማዘጋጀት እንደሚቻል
በፓይዘን ውስጥ ጨዋታን ከፒጋሜ ጋር (ከስዕሎች ጋር) እንዴት ማዘጋጀት እንደሚቻል

ቪዲዮ: በፓይዘን ውስጥ ጨዋታን ከፒጋሜ ጋር (ከስዕሎች ጋር) እንዴት ማዘጋጀት እንደሚቻል

ቪዲዮ: በፓይዘን ውስጥ ጨዋታን ከፒጋሜ ጋር (ከስዕሎች ጋር) እንዴት ማዘጋጀት እንደሚቻል
ቪዲዮ: How To Install Python, Setup Virtual Environment VENV, Set Default Python System Path & Install Git 2024, ሚያዚያ
Anonim

ይህ Python ን አስቀድመው ለሚያውቁ ሰዎች መግቢያ ነው። ይህ ጽሑፍ ተጫዋቹ የሚንሸራተቱ ኳሶችን የሚያመልጥ ቀለል ያለ ጨዋታ የመገንባት ደረጃዎችን ያስተምርዎታል።

ደረጃዎች

የ 8 ክፍል 1 - ፒጋሜ መጫን

ደረጃ 1. ፒጋምን ያውርዱ።

ለመድረክዎ ከ https://www.pygame.org/download.shtml ያግኙት።

ደረጃ 2. መጫኛውን ያሂዱ።

ደረጃ 3. መጫኑ መሥራቱን ያረጋግጡ።

የ Python ተርሚናል ይክፈቱ። «ፒግሜምን አስመጣ» ብለው ይተይቡ። ምንም ስህተቶች ካላዩ ከዚያ ፒጋሜ በተሳካ ሁኔታ ተጭኗል።

    አስመጪ ፒጋሜ

የ 8 ክፍል 2 - መሰረታዊ መስኮት ማቀናበር

ደረጃ 1. አዲስ ፋይል ይክፈቱ።

ደረጃ 2. Pygame ን ያስመጡ።

ፒጋሜ ለግራፊክስ ተግባራት መዳረሻን የሚሰጥ ቤተ -መጽሐፍት ነው። እነዚህ ተግባራት እንዴት እንደሚሠሩ ላይ ተጨማሪ መረጃ ከፈለጉ በፒጋሜ ድር ጣቢያ ላይ ሊመለከቷቸው ይችላሉ።

    pygame ን ከ pygame ያስመጡ።

ደረጃ 3. የመስኮቱን ጥራት ያዘጋጁ።

በበርካታ የጨዋታው ክፍሎች ውስጥ እንዲጠቀስ ለማያ ገጹ ጥራት ዓለም አቀፋዊ ተለዋዋጭ ያደርጋሉ። በኋላ ላይ ሊለወጥ ስለሚችል በፋይሉ አናት ላይ ማግኘትም ቀላል ነው። ለላቁ ፕሮጄክቶች ፣ ይህንን መረጃ በተለየ ፋይል ውስጥ ማስቀመጥ የተሻለ ሀሳብ ይሆናል።

    ጥራት = (400 ፣ 300)

ደረጃ 4. አንዳንድ ቀለሞችን ይግለጹ።

በፒጋሜ ውስጥ ያሉ ቀለሞች (RBGA ይህም በ 0 እና 255 መካከል ባለው እሴቶች ውስጥ ነው። የአልፋ እሴት (ሀ) አማራጭ ነው ግን ሌሎች ቀለሞች (ቀይ ፣ ሰማያዊ እና አረንጓዴ አስገዳጅ ናቸው)።

    ነጭ = (255 ፣ 255 ፣ 255) ጥቁር = (0 ፣ 0 ፣ 0) ቀይ = (255 ፣ 0 ፣ 0)

ደረጃ 5. ማያ ገጹን ያስጀምሩ።

ቀደም ሲል የተገለጸውን የመፍትሄ ተለዋዋጭ ይጠቀሙ።

    ማያ ገጽ = pygame.display.set_mode (ጥራት)

ደረጃ 6. የጨዋታ ዙር ያድርጉ።

በእያንዳንዱ የጨዋታችን ፍሬም ውስጥ የተወሰኑ እርምጃዎችን ይድገሙ። በእነዚህ ሁሉ ድርጊቶች ውስጥ ሁል ጊዜ ወደ ዑደት የሚደጋገም loop ያድርጉ።

    እውነት እያለ ፦

ደረጃ 7. ማያ ገጹን ቀለም መቀባት።

    ማያ ገጽ ይሙሉ (ነጭ)

ደረጃ 8. ማያ ገጹን ያሳዩ።

ፕሮግራሙን ካሄዱ ማያ ገጹ ነጭ ይሆናል ከዚያም ፕሮግራሙ ይሰናከላል። ይህ የሆነበት ምክንያት ኦፕሬቲንግ ሲስተሙ ክስተቶችን ወደ ጨዋታው ስለሚልክ እና ጨዋታው ከእነርሱ ጋር ምንም ነገር ስለማያደርግ ነው። ጨዋታው ብዙ ያልተያዙ ክስተቶችን ከተቀበለ በኋላ ይሰናከላል።

    እውነት እያለ… pygame.display.flip ()

ደረጃ 9. ዝግጅቶችን ይያዙ።

በእያንዳንዱ ክፈፍ ውስጥ የተከሰቱ የሁሉንም ክስተቶች ዝርዝር ያግኙ። እርስዎ ስለ አንድ ክስተት ብቻ ይጨነቃሉ ፣ የተቋረጠውን ክስተት። ይህ የሚከሰተው ተጠቃሚው የጨዋታውን መስኮት ሲዘጋ ነው። ይህ እንዲሁ በብዙ ክስተቶች ምክንያት ፕሮግራማችን እንዳይሰናከል ይከላከላል።

    እውነት ሆኖ… በፒጋሜ ውስጥ ለዝግጅት.vent.get (): event.type == QUIT: pygame.quit ()

ProgramPygamePart1
ProgramPygamePart1

ደረጃ 10. ይሞክሩት

አሁን ኮዱ ምን መምሰል እንዳለበት እነሆ-

    pygame ን ከ pygame.locals ማስመጣት * ጥራት = (400 ፣ 300) ነጭ = (255 ፣ 255 ፣ 255) ጥቁር = (0 ፣ 0 ፣ 0) ቀይ = (255 ፣ 0 ፣ 0) ማያ ገጽ = pygame.display.set_mode (ጥራት) እውነት ሆኖ ሳለ 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.ccle (ገጽ ፣ ጥቁር ፣ (self.x ፣ self.y) ፣ self.radius)

ደረጃ 3. የመማሪያውን ምሳሌ ያድርጉ እንዲሁም በእያንዳንዱ ዙር ኳሱን ለመሳብ የጨዋታውን ዙር ለመንገር።

    ኳስ = ኳስ () እውነት ሆኖ…… ball.draw (ማያ ገጽ)

ደረጃ 4. ነገሩ እንዲንቀሳቀስ ያድርጉ።

የነገሩን አቀማመጥ የሚያዘምን ተግባር ይፍጠሩ። በእያንዳንዱ የጨዋታ ዑደት ውስጥ ይህንን ተግባር ይደውሉ።

    የክፍል ኳስ:… def update (self): self.x += self.dx self.y += self.dy

ደረጃ 5. የፍሬም መጠንን ይገድቡ።

የጨዋታው ዑደት በሰከንድ በመቶዎች ጊዜ ስለሚሠራ ኳሱ በእውነቱ በፍጥነት ይንቀሳቀሳል። የክፈፉን መጠን ወደ 60 fps ለመገደብ የፒጋሜ ሰዓትን ይጠቀሙ።

    ሰዓት = pygame.time. Clock () እውነት ሲሆን…… clock.tick (60)

ደረጃ 6. ኳሱን በማያ ገጹ ላይ ያቆዩት።

ከማያ ገጹ ጠርዞች አንዱን ቢመታ የኳሱን አቅጣጫ ለመቀልበስ በማዘመን ተግባር ውስጥ ቼኮችን ያክሉ።

    የክፍል ኳስ…… def update (self):… if (self.x <= 0 or self.x> = resolution [0]): self.dx *= -1 if (self.y <= 0 or self.y > = ጥራት [1]): self.dy *= -1

ProgramPygamePart2
ProgramPygamePart2

ደረጃ 7. ይሞክሩት

አሁን ኮዱ ምን መምሰል እንዳለበት እነሆ-

    pygame ን ከ pygame.locals ማስመጣት * ጥራት = (400 ፣ 300) ነጭ = (255 ፣ 255 ፣ 255) ጥቁር = (0 ፣ 0 ፣ 0) ቀይ = (255 ፣ 0 ፣ 0) ማያ ገጽ = pygame.display.set_mode (ጥራት) የክፍል ኳስ: 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 (self, surface): 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 ወይም self.y> = resolution [1]): self.dy *= -1 ball = Ball () clock = pygame.time. Clock () True: screen. (ነጭ) ball.draw (ማያ) ball.update () pygame.display.flip () clock.tick (60) ለ pygame.event.get (): event.type == QUIT: pygame.quit ()

የ 8 ክፍል 4 ጨዋታውን ማደራጀት

ደረጃ 1. ሁሉንም ነገር ለማደራጀት ክፍሎችን ይጠቀሙ።

ጨዋታው ይበልጥ የተወሳሰበ ይሆናል። ኮድዎን ለማደራጀት ነገሮችን-ተኮር ቴክኒኮችን ይጠቀሙ።

ደረጃ 2. የጨዋታው ሽክርክሪት ወደ ክፍል እንዲገባ ያድርጉ።

የእኛ ጨዋታ አሁን የጨዋታ ዕቃዎችዎን እና ተግባሮችዎን ጨምሮ ውሂብ ስላለው ፣ የጨዋታ ዙርዎን ወደ ክፍል ማዞር ምክንያታዊ ነው።

    የክፍል ጨዋታ ():

ደረጃ 3. ገንቢ ያክሉ።

እዚህ አንዳንድ የጨዋታ ዕቃዎችን በቅጽበት ያነቃቃሉ ፣ የእኛን ማያ ገጽ እና ሰዓት ይፍጠሩ እና ፒጋሜን ያስጀምራሉ። እንደ ጽሑፍ ወይም ድምጽ ያሉ የተወሰኑ ባህሪያትን ለመጠቀም ፒጋሜ መጀመር አለበት።

    የክፍል ጨዋታ (): 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. የጨዋታው ሉፕ ተግባር እንዲሆን ያድርጉ።

የክስተቱን አያያዝ ተግባርን በእያንዳንዱ ዙር ይደውሉ።

    የክፍል ጨዋታ ():… def ሩጫ (ራስን): እውነት ሆኖ ሳለ - self.handleEvents () self.screen.fill (ነጭ) ራስን

ደረጃ 6. በርካታ የጨዋታ ዕቃዎችን ይያዙ።

አሁን ይህ ኮድ እያንዳንዱን ክፈፍ በእኛ ነገር ላይ መሳል እና ማዘመን አለበት። ብዙ ዕቃዎች ካሉዎት ይህ ይረበሻል። የእኛን ነገር ወደ አንድ ድርድር እንጨምር እና ከዚያ እያንዳንዱን አደራደር እያንዳንዱን ሉፕ በማዘመን እና በመሳል እንሳል። አሁን ሌላ ነገር በቀላሉ ማከል እና የተለየ የመነሻ ቦታ መስጠት ይችላሉ።

    የክፍል ጨዋታ (): def _init _ (ራስን):… self.gameObjects = self.gameObjects.append (ኳስ ()) self.gameObjects.append (ኳስ (100))… def run (self): while True: self.handleEvents () ለጨዋታ ኦብጅ በራስ -ጨዋታ ጨዋታዎች ውስጥ ነገሮች: gameObj.update () self.screen.fill (ነጭ) ለጨዋታ ኦብጅ በራስ -ጨዋታ ውስጥ ነገሮች ፦ gameObj.draw (self.screen) self.clock.tick (60) pygame.display.ገለብጥ ()

ProgramPygamePart3
ProgramPygamePart3

ደረጃ 7. ይሞክሩት

አሁን ኮዱ ምን መምሰል እንዳለበት እነሆ -

    pygame ን ከ pygame.locals ማስመጣት * ጥራት = (400 ፣ 300) ነጭ = (255 ፣ 255 ፣ 255) ጥቁር = (0 ፣ 0 ፣ 0) ቀይ = (255 ፣ 0 ፣ 0) ማያ ገጽ = pygame.display.set_mode (ጥራት) የክፍል ኳስ: 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 (self, surface): 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 ከሆነ (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 (ኳስ ()) self.gameObjects.append (ኳስ (100)) def handleEvents (ራስን) ለዝግጅት በ pygame.event.get (): event.type == QUIT: pygame.quit () def run (self): True: self.handleEvent s () ለጨዋታ ኦብጅ በራስ -ጨዋታ ጨዋታዎች ውስጥ -ጨዋታ -bd.update () self.screen.fill (ነጭ) ለጨዋታ ኦብጅ በራስ -ጨዋታ ውስጥ ዕቃዎች -gameObj.draw (የራስ ማያ ገጽ) ራስን። ሰዓት። ቁ. ተንሸራታች () ጨዋታ ()። አሂድ ()

የ 8 ክፍል 5 - የተጫዋች ነገር ማከል

ደረጃ 1. የተጫዋች ክፍል እና ገንቢ ያድርጉ።

በመዳፊት ቁጥጥር ስር ያለ ሌላ ክበብ ልታደርግ ነው። በግንባታው ውስጥ ያሉትን እሴቶች ያስጀምሩ። ራዲየስ ብቸኛው አስፈላጊ እሴት ነው።

    የክፍል ተጫዋች def _init _ (ራስን ፣ ራድ = 20): self.x = 0 self.y = 0 self.radius = rad

ደረጃ 2. የተጫዋቹን ነገር እንዴት መሳል እንደሚቻል ይግለጹ።

ሌሎች የጨዋታ ዕቃዎችን እንደሳቡ በተመሳሳይ መንገድ ይሆናል።

    የክፍል ተጫዋች…… def draw (ራስን ፣ ገጽ) pygame.draw.circle (ገጽ ፣ ቀይ ፣ (self.x ፣ self.y) ፣ self.radius)

ደረጃ 3. ለተጫዋቹ ነገር የመዳፊት መቆጣጠሪያን ያክሉ።

በእያንዳንዱ ክፈፍ ውስጥ የመዳፊቱን ቦታ ይፈትሹ እና የተጫዋቾቹን ዕቃዎች ቦታ ወደዚያ ያዋቅሩ።

    የክፍል ተጫዋች ፦… def update (self): 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.locals ማስመጣት * ጥራት = (400 ፣ 300) ነጭ = (255 ፣ 255 ፣ 255) ጥቁር = (0 ፣ 0 ፣ 0) ቀይ = (255 ፣ 0 ፣ 0) ማያ ገጽ = pygame.display.set_mode (ጥራት) የክፍል ኳስ: 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 (self, surface): 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 ከሆነ (self.y <= 0 or self.y> = resolution [1]): self.dy *= -1 class Player: def _init _ (self, rad = 20): self.x = 0 self ። (ራስን): ገመድ = pygame.mouse.get_pos () self.x = ገመድ [0] self.y = ገመድ [1] የክፍል ጨዋታ (): def _init _ (ራስን): pygame.init () self.screen = pygame.ድርግ ሁነታ (ጥራት) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Player ()) self.gameObjects.append (Ball ()) self.gameObjects.append (ኳስ (100))) def handleEvents (self): for pygame.event.get (): event.type == QUIT: pygame.quit () def run (self): true: self.handleEvents () for gameObj in self.ጨዋታ ነገሮች: gameObj.update () self.screen.fill (ነጭ) ለጨዋታ ኦብጅ በራስ -ጨዋታ ውስጥ ነገሮች: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () ጨዋታ ()። አሂድ ()

ክፍል 8 ከ 8 - ነገሮች ከተጫዋቹ ጋር መስተጋብር እንዲፈጥሩ ማድረግ

ደረጃ 1. የማዘመን ተግባሮችን ይለውጡ።

ነገሮች መስተጋብር እንዲፈጥሩ እርስ በእርስ ተደራሽ መሆን አለባቸው። በጨዋታ ዕቃዎች ዝርዝር ውስጥ ለማለፍ ለማዘመን ሌላ ግቤትን እንጨምር። በሁለቱም የተጫዋች ነገር እና የኳስ ዕቃዎች ላይ ማከል አለብዎት። ብዙ የጨዋታ ዕቃዎች ካሉዎት ውርስ ሁሉም ዘዴዎ ፊርማዎች አንድ እንዲሆኑ ሊረዳዎት ይችላል።

    የክፍል ኳስ…… def ዝመና (ራስ ፣ የጨዋታ ነገሮች) ፦… የክፍል ተጫዋች…

ደረጃ 2. በተጫዋቹ እና ኳሶች መካከል ግጭቶችን ይፈትሹ።

በሁሉም የጨዋታ ዕቃዎች ውስጥ ይሂዱ እና የነገሮች ዓይነት ኳስ ከሆነ ያረጋግጡ። ከዚያም የሚጋጩ መሆናቸውን ለመፈተሽ የሁለቱን ዕቃዎች ራዲየስና የርቀት ቀመር ይጠቀሙ። ክበቦች ግጭቶችን ለመፈተሽ በእርግጥ ቀላል ናቸው። ለዚህ ጨዋታ ሌላ ሌላ ቅርፅ ያልተጠቀሙበት ትልቁ ምክንያት ይህ ነው።

    የክፍል ተጫዋች ፦… def ዝመና (ራስ ፣ የጨዋታ ነገሮች) ፦… ለጨዋታ ኦቢ በጨዋታ ዕቃዎች ውስጥ - ጨዋታObj.type == “ኳስ” ከሆነ (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2:

ProgramPygamePart5
ProgramPygamePart5

ደረጃ 3. ተጫዋቹ "መታ" ካገኘ ጨዋታውን ጨርስ።

ለአሁኑ ጨዋታውን እንተው።

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

ደረጃ 4. ይሞክሩት

አሁን ኮዱ ምን መምሰል እንዳለበት እነሆ-

    pygame ን ከ pygame.locals ማስመጣት * ጥራት = (400 ፣ 300) ነጭ = (255 ፣ 255 ፣ 255) ጥቁር = (0 ፣ 0 ፣ 0) ቀይ = (255 ፣ 0 ፣ 0) ማያ ገጽ = pygame.display.set_mode (ጥራት) የክፍል ኳስ: 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 (self, surface): 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]): self.dx *= -1 ከሆነ (self.y <= 0 ወይም self.y> = resolution [1]): self.dy *= -1 class Player: def _init _ (ራስን ፣ ራድ = 20): self.x = 0 self.y = 0 ራስን def update (self, gameObjects): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] for gameObj in gameObjects: ifObj.type == "ball": ከሆነ (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 (ኳስ ()) self.gameObjects.append (ኳስ (100)) def handleEvents (ራስን) ለዝግጅት በ 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) for gameObj in.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game (). run ()

የ 8 ክፍል 7: ነገሮችን ለመፍጠር የጨዋታ መቆጣጠሪያን ማከል

ደረጃ 1. የጨዋታ መቆጣጠሪያ ክፍል ይፍጠሩ።

የጨዋታ ተቆጣጣሪዎች ጨዋታውን “ለማስኬድ” ኃላፊነት አለባቸው። የእኛን ዕቃዎች ሁሉ ለመሳል እና ለማዘመን ኃላፊነት ካለው የእኛ የጨዋታ ክፍል የተለየ ነው። ጨዋታው ከባድ እንዲሆን ተቆጣጣሪው በየጊዜው ሌላ ኳስ በማያ ገጹ ላይ ያክላል። ገንቢ ያክሉ እና አንዳንድ መሠረታዊ እሴቶችን ያስጀምሩ። ክፍተቱ ሌላ ኳስ ከመጨመሩ በፊት ጊዜው ይሆናል።

    ክፍል GameController: def _init _ (ራስ ፣ ክፍተት = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2 * 1000) self.type = "የጨዋታ ተቆጣጣሪ"

ደረጃ 2. የዝማኔውን ተግባር ያክሉ።

ይህ ኳስ ከተጨመረበት ጊዜ ጀምሮ ወይም ከጨዋታው መጀመሪያ ጀምሮ ምን ያህል ጊዜ እንደሄደ ይፈትሻል። ጊዜው ከትርፍ በላይ ከሆነ ጊዜውን ዳግም ያስጀምሩት እና ኳስ ያክላሉ።

    ክፍል GameController:… def update (self, gameObjects): self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (ኳስ (ኳስ)))

ደረጃ 3. ኳሶቹን የዘፈቀደ ፍጥነቶች ይስጡ።

በእያንዳንዱ ጊዜ ጨዋታውን የተለየ ለማድረግ የዘፈቀደ ቁጥሮችን መጠቀም ያስፈልግዎታል። ሆኖም ፣ የኳሶቹ ፍጥነቶች አሁን ከአንድ ኢንቲጀር ይልቅ ተንሳፋፊ ነጥብ ቁጥር ናቸው።

    ክፍል GameController:… def update (self, gameObjects): self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (ኳስ (ኳስ) xVel = የዘፈቀደ ()*2 ፣ yVel = የዘፈቀደ ()*2))

ደረጃ 4. የመሳብ ተግባሩን ያስተካክሉ።

የስዕሉ ተግባር ተንሳፋፊዎችን አይቀበልም። ኳሶቹ ከመሳለቃቸው በፊት የኳሱን አቀማመጥ ወደ ኢንቲጀሮች እንቀይር።

    የክፍል ኳስ…

ደረጃ 5. ለጨዋታው ተቆጣጣሪ የስዕል ዘዴን ይግለጹ።

የጨዋታ ነገር እንደመሆኑ ዋናው ሉፕ እሱን ለመሳል ይሞክራል። ጨዋታው እንዳይሰናከል ምንም የማያደርግ የእድሳት ተግባር መግለፅ ያስፈልግዎታል።

    ክፍል GameController:… def draw (ራስን ፣ ማያ ገጽ): ማለፍ

ደረጃ 6. የጨዋታ መቆጣጠሪያውን ወደ gameObjects ያክሉ እና ሁለቱን ኳሶች ያስወግዱ።

ጨዋታው አሁን በየአምስት ሰከንዱ ኳስ ማፍለቅ አለበት።

    የክፍል ጨዋታ (): def _init _ (ራስን):… self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (ተጫዋች ())

ProgramPygamePart6
ProgramPygamePart6

ደረጃ 7. ይሞክሩት

አሁን ኮዱ ምን መምሰል እንዳለበት እነሆ -

    pygame ን በዘፈቀደ ማስመጣት በዘፈቀደ ከ pygame.locals ማስመጣት * ጥራት = (400 ፣ 300) ነጭ = (255 ፣ 255 ፣ 255) ጥቁር = (0 ፣ 0 ፣ 0) ቀይ = (255 ፣ 0 ፣ 0) ማያ = ፒጋሜ። ማሳያ ።. ራስን። x) ፣ int (self.y)) ፣ self.radius) def update (self, gameObjects): self.x += self.dx self.y += self.dy if (self.x <= 0 or self. x> = ጥራት [0]): self.dx *= -1 ከሆነ (self.y <= 0 ወይም self.y> = resolution [1]): self.dy *= -1 class Player: def _init _ (ራስን ፣ ራድ = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" def draw (self, surface): pygame.draw.circle (ላዩን ፣ ቀይ ፣ (self.x) ፣ ራስን። ነገሮች: gameObj.type == "ኳስ": ከሆነ (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius)* * 2: pygame.quit () ክፍል GameController: def _init _ (ራስን ፣ ክፍተት = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2 * 1000) self.type = "የጨዋታ ተቆጣጣሪ "def update (self, gameObjects): self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (ኳስ (xVel = የዘፈቀደ) ()*2 ፣ yVel = የዘፈቀደ ()*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): ለፓጋሜ. ክስተት.get (): event.type == QUIT: pygame.quit () def run (self): true: self.handleEvents () for gameObj in self.gameObjects: gameObj.update (self.gameObjects) self.screen.ጨዋታ / ኦብጅ / በራስ -ጨዋታ ውስጥ (ነጭ) ይሙሉ (ነጭ) bjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () ጨዋታ ()። አሂድ ()

የ 8 ክፍል 8 ውጤት እና ጨዋታ አብቅቷል

ደረጃ 1. ለጨዋታ ተቆጣጣሪ ክፍል ነጥብ ያክሉ።

የቅርጸ ቁምፊ ነገር እና የውጤት ተለዋዋጭ ይፍጠሩ። ውጤቱን ለማሳየት በእያንዳንዱ ፍሬም ውስጥ ቅርጸ -ቁምፊውን ይሳሉ እና እያንዳንዱን ፍሬም በዝማኔ ውስጥ ያሳድጉ።

    ክፍል GameController: def _init _ (ራስን ፣ ክፍተት = 5):… self.score = 0 self.scoreText = pygame.font. Font (ምንም ፣ 12) የዴፍ ዝመና (ራስ ፣ የጨዋታ ነገሮች) ፦… self.score += 1 def draw (ራስን ፣ ማያ ገጽ) - ማያ ገጽ። ብልጭታ (የራስ።

ደረጃ 2. ጨዋታው እንዴት እንደሚጠናቀቅ ይቀይሩ።

ተጫዋቹ ግጭትን ሲያገኝ ማቋረጡን እናስወግድ። ይልቁንስ ጨዋታው ሊፈትነው በሚችለው በአጫዋቹ ውስጥ አንድ ተለዋዋጭ ያዘጋጃሉ። GameOver ሲዘጋጅ ዕቃዎችን ማዘመን ያቁሙ። ተጫዋቹ የተከሰተውን ለማየት እና ውጤታቸውን ለመመልከት ይህ በቦታው ላይ ሁሉንም ነገር ያቀዘቅዛል። ልብ ይበሉ ፣ ዕቃዎቹ ገና እየተሳቡ ፣ ዝም ብለው አልዘመኑም።

    የክፍል ተጫዋች: def _init _ (ራስን ፣ ራድ = 20):… self.gameOver = የውሸት መከላከያ ዝመና (ራስ ፣ gameObjects):… ለጨዋታ ኦብጅ በጨዋታ ዕቃዎች ውስጥ: ጨዋታObj.type == “ኳስ”: ከሆነ (gameObj.x - ራስን.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: self.gameOver = እውነተኛ የክፍል ጨዋታ (): def _init _ (ራስን) ፦ … Self.gameOver = የውሸት መከላከያ ሩጫ (ራስ) - እውነት ሆኖ ሳለ - self.handleEvents () ካልሆነ የራስ ጨዋታ: self.gameOver = gameObj.gameOver

ProgramPygameFinal
ProgramPygameFinal

ደረጃ 3. ይሞክሩት

የተጠናቀቀው ኮድ አሁን ምን መሆን እንዳለበት እነሆ-

    pygame ን በዘፈቀደ ማስመጣት በዘፈቀደ ከ pygame.locals ማስመጣት * ጥራት = (400 ፣ 300) ነጭ = (255 ፣ 255 ፣ 255) ጥቁር = (0 ፣ 0 ፣ 0) ቀይ = (255 ፣ 0 ፣ 0) ማያ = ፒጋሜ። ማሳያ. ራስን። x) ፣ int (self.y)) ፣ self.radius) def update (self, gameObjects): self.x += self.dx self.y += self.dy if (self.x <= 0 or self. x> = ጥራት [0]): self.dx *= -1 ከሆነ (self.y <= 0 ወይም self.y> = resolution [1]): self.dy *= -1 class Player: def _init _ (ራስን ፣ ራድ = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" self.gameOver = የውሸት መከላከያ መሳል (ራስ ፣ ወለል) ፦ pygame.draw.circle (ላዩን ፣ ቀይ, (self.x, self.y), self.radius) def update (self, gameObjects): cord = pygame.mouse.get_pos () self.x = ገመድ [0] self.y = ገመድ [1] ለጨዋታ ኦብጅ በጨዋታ ኦብጀክቶች ውስጥ ከሆነ gameObj.type == "ኳስ": ከሆነ (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: self.gameOver = True class GameController: def _init _ (self, interval = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2*1000) self. ዓይነት = "የጨዋታ ተቆጣጣሪ" self.score = 0 self.scoreText = pygame.font. Font (የለም ፣ 12) def update (self, gameObjects): self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter*1000) gameObjects.append (ኳስ (xVel = random ()*2, yVel = የዘፈቀደ ()*2)) self.score + = 1 def draw (ራስን ፣ ማያ): ስክሪን። pygame.display.set_mode (ጥራት) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ()) self.gameOver = ሐሰት def handleEvents (ራስን) ለዝግጅት በ pygame.event.get (): ev ከሆነ ent.type == QUIT: pygame.quit () def run (self): true: self.handleEvents () self.gameOver: for gameObj in.gameObjects: gameObj.update (self.gameObjects) gameObj ከሆነ። ዓይነት == "ተጫዋች": self.gameOver = gameObj.gameOver self.screen.fill (ነጭ) ለጨዋታ ኦብጅ በራስ -ጨዋታ ውስጥ ነገሮች: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () ጨዋታ ()። አሂድ ()

የሚመከር: