Jwèt Koulèv nan Sèvi ak Modil Python

Mwen gen konfyans ke redaksyon sa a pral itil pou ou si ou se yon fanatik nan jwèt la nan koulèv. Mwen pral fè ou atravè etap yo nan kreye yon jwèt senp nan pòs sa a ke menm newbies Python pral jwenn fasil yo kreye.. Bibliyotèk PyGame nan Python, ki se yon pake Python nou itilize pou devlope jwèt, se youn nan apwòch yo divès kalite konsepsyon jwèt la.

Sèvi ak tòti bibliyotèk la se yon lòt estrateji. Itilizatè yo ka jenere grafik ak trase fòm sou yon twal sou entènèt gras a modil sa a, ki deja enstale ak Python. Se konsa,, nan leson patikilye sa a, nou pral sèvi ak bibliyotèk tòti pou konstwi koulèv fondamantal nou an

Jwèt Koulèv nan Python

  • modil tan. Teknik sa a pèmèt nou swiv kantite segonn ki te pase depi tan anvan an.
  • modil o aza jwèt koulèv la – Li kreye nimewo o aza nan Python.

Lòt zouti ou pral mande yo enkli yon editè pou tèks ou pito. Mwen pral itilize VSCode nan pòs sa a. Natirèlman, ou pral mande pou yo mete kanpe Python 3 sou aparèy ou an si ou pa gen li deja enstale. Ou ka telechaje tou pou enstale Geekflare Compiler la. Sa a ta ka yon anpil nan yon eksperyans agreyab!

contents

Ki jan jwèt la koulèv travay

Jwè yo dwe manipile koulèv la pou jwenn manje ki parèt sou ekran an pou yo ka jwenn pi bon nòt posib nan jwèt sa a.. Jwè a dirije koulèv la lè li peze youn nan kat kle direksyon ki montre nan direksyon koulèv la ap deplase..

Yo pral retire koulèv la nan jwèt la si li frape yon jwè oswa yon objè. Pwosedi yo nou pral itilize pou jwe jwèt sa a avanse.

  • Enpòte nan aplikasyon nou yo modil yo pre-enstale (tan tòti, tòti osi byen ke o aza).
  • Ekspozisyon ekran jwèt la kreye ak modil Turtle.
  • Mete kle yo pou kontwole direksyon mouvman koulèv la alantou ekran an.
  • Aplikasyon jwèt la.

Kreye fichye snakegame.py kote nou pral ajoute yon pwogram aplikasyon.

Enpòte modil yo

Seksyon sa a nan pwogram nan chaje tan Python-enstale, tòti, ak modil o aza. Anplis de sa, nimewo default pou premye nòt jwè a, nòt maksimòm yo ka rive jwenn, ak kantite tan jwè a reta ant chak mouvman yo pral defini. Yo nan lòd yo detèmine konbyen tan yo te retade, se modil la tan ki nesesè.

import turtle
import random
import time

player_score = 0
highest_score = 0
delay_time = 0.1

Fè ekran jwèt la

Modil tòti ke nou enstale a pèmèt nou kreye yon ekran vityèl ki pral sèvi kòm ekran fenèt jwèt la. Lè sa a, nou ka bati kò koulèv la, osi byen ke atik manje ki koulèv la pral manje. Ekran an pral montre tou nòt tracker jwè a.

# window screen created
wind = turtle.Screen()
wind.title("Snake Maze")
wind.bgcolor("red")

# The screen size
wind.setup(width=600, height=600)


# creating the snake 
snake = turtle.Turtle()
snake.shape("square")
snake.color("black")
snake.penup()
snake.goto(0, 0)
snake.direction = "Stop"

# creating the food
snake_food = turtle.Turtle()
shapes = random.choice('triangle','circle')
snake_food.shape(shapes)
snake_food.color("blue")
snake_food.speed(0)
snake_food.penup()
snake_food.goto(0, 100)

pen = turtle.Turtle()
pen.speed(0)
pen.shape('square')
pen.color('white')
pen.penup()
pen.hideturtle()
pen.goto(0, 250)
pen.write("Your_score: 0 Highest_Score : 0", align="center", 
font=("Arial", 24, "normal"))
turtle.mainloop()

Kòd ki nan ekstrè susmansyone a etabli ekran tòti an premye anvan li ajoute yon tit inisyal ak koulè twal.. Nou premye chwazi gwosè a anvan trase fòm koulèv la sou twal dijital nou an. Pou anpeche liy yo te fè pandan tòti a ap deplase, metòd penup la ranmase plim tòti a.

Avèk itilizasyon teknik goto li yo, tòti a ka dirije nan yon pozisyon egzak lè l sèvi avèk kowòdone. Se nou ki fè manje koulèv la manje.

Chak fwa koulèv la rasanble manje, nou vle montre nòt chak jwè yo. Nou vle tou montre pi gwo nòt yon moun resevwa pandan jwèt la. Pou rezon sa a, nou itilize plim. Kòm plim la, ekri. Dekri yon metòd pou konplete.

Mete kanpe nan direksyon kle pou koulèv la

Nan egzanp sa a, nou pwograme sèten kle pou kontwole mouvman koulèv la atravè ekran an. Nou pral sèvi ak lèt ​​la “L” kòm kle gòch la, “R” pou goch, “U” pou anlè, ak “D” pou anba. Enstriksyon sa yo pral mete an pratik lè w rele koulèv la lè l sèvi avèk fonksyon direksyon tòti a.

Mete egzanp kòd sa yo nan ou.

# Assigning directions
def moveleft():
    if snake.direction != "right":
        snake.direction = "left"

def moveright():
    if snake.direction != "left":
        snake.direction = "right"

def moveup():
    if snake.direction != "down":
        snake.direction = "up"

def movedown():
    if snake.direction != "up":
        snake.direction = "down"

def move():
    if snake.direction == "up":
        coord_y = snake.ycor()
        snake.sety(coord_y+20)

    if snake.direction == "down":
        coord_y = snake.ycor()
        snake.sety(coord_y-20)

    if snake.direction == "right":
        coord_x = snake.xcor()
        snake.setx(coord_x+20)

    if snake.direction == "left":
        coord_x = snake.xcor()
        snake.setx(coord_x-20)

wind.listen()
wind.onkeypress(moveleft, 'L')
wind.onkeypress(moveright, 'R')
wind.onkeypress(moveup, 'U')
wind.onkeypress(movedown, 'D')

Deplase() fonksyon mansyone pi wo a pèmèt mouvman koulèv la nan pozisyon ki espesifye nan yon kowòdone espesifye. Koute() fonksyone kòm yon koute evènman ki rele sou metòd yo ki dirije koulèv la nan yon sèten direksyon yon fwa itilizatè a peze bouton an..

Aplikasyon an nan jeu jwèt la nan fòm lan nan yon koulèv

Jwèt la ap bezwen konvèti nan yon aksyon vivan apre yo fin etabli estrikti fondamantal la. Sa a se sa li pral genyen ladan li:

  • pwolonje longè koulèv la pa yon koulè diferan chak fwa li konsome manje.
  • chak fwa koulèv la konsome manje, nòt jwè a ogmante, epi yo swiv nòt ki pi wo a.
  • Koulèv la ka kenbe pou pwoteje li kont mi an klakan kont miray la oswa menm pwòp kò li.
  • Apre frape koulèv la, jwèt la ap kontinye.
  • Sou ekran an sepandan, se pi gwo nòt jwè a menmsi nòt jwè a reset a zewo lè jwèt la rekòmanse.
segments = []

#Implementing the gameplay
while True:
    wind.update()
    if snake.xcor() > 290 or snake.xcor() < -290 or snake.ycor() > 290 or snake.ycor() < -290:
        time.sleep(1)
        snake.goto(0, 0)
        snake.direction = "Stop"
        snake.shape("square")
        snake.color("green")

        for segment in segments:
            segment.goto(1000, 1000)
            segments.clear()
            player_score = 0
            delay_time = 0.1
            pen.clear()
            pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

        if snake.distance(snake_food) < 20:
            coord_x = random.randint(-270, 270)
            coord_y = random.randint(-270, 270)
            snake_food.goto(coord_x, coord_y)

            # Adding segment
            added_segment = turtle.Turtle()
            added_segment.speed(0)
            added_segment.shape("square")
            added_segment.color("white")
            added_segment.penup()
            segments.append(added_segment)
            delay_time -= 0.001
            player_score += 5

            if player_score > highest_score:
                highest_score = player_score
                pen.clear()
                pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

    # checking for collisions
    for i in range(len(segments)-1, 0, -1):
        coord_x = segments[i-1].xcor()
        coord_y = segments[i-1].ycor()
        segments[i].goto(coord_x, coord_y)

    if len(segments) > 0:
        coord_x = snake.xcor()
        coord_y = snake.ycor()
        segments[0].goto(coord_x, coord_y)
    move()

    for segment in segments:
        if segment.distance(snake) < 20:
            time.sleep(1)
            snake.goto(0, 0)
            snake.direction = "stop"
            snake.color('white')
            snake.shape('square')

            for segment in segments:
                segment.goto(1000, 1000)
                segment.clear()
                player_score = 0
                delay_time = 0.1
                pen.clear()
                pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

     time.sleep(delay_time)

turtle.mainloop()

Nan snippet kòd ki pi wo a ke nou te itilize, nou te bay yon kote o aza pou manje koulèv la sou ekran an. Chak fwa koulèv la manje nitrisyon an, kò a ap grandi nan yon koulè diferan, blan nan egzanp sa a, pou fè li klè ke kwasans li se diferan.

Lè koulèv la kolekte manje a epi li pa fè kolizyon, manje a parèt nan yon kote owaza nan zòn kowòdone 270 degre gwosè ekran an.. Chak fwa koulèv la pran manje, nòt jwè a ogmante pa 5. Si koulèv la enplike nan yon kolizyon ak jwè a, nòt yo reset a 0 ak ekran an kenbe pi gwo nòt li yo.

konklizyon

Bibliyotèk tòti a se yon fason amizan ak senp pou fè jwèt koulèv ke nou te wè nan leson patikilye sa a.. Ou kapab tou itilize bibliyotèk PyGame nan Python pou aplike menm jwèt la. Chache konnen ki jan ou ka itilize jwèt la yon fason diferan lè w li sa yo PyGame enstriksyon yo.

Download jwèt Snake Rivals plezi koulèv

Koulèv Kouri Ras 3D Kouri jwèt

Telechaje Snake.io – Fun Snake .io jwèt