Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Ищу код змейки на python готовый код для моего проекта

  1. Ищу код змейки на python готовый код для моего проекта

    Привет, ребята! Облазил кучу форумов, но никак не могу найти нормальный код змейки на python готовый код, который можно было бы сразу использовать. Хочу добавить эту игру в свой проект, но не хочется писать с нуля. Может, у кого-то уже есть готовый код или ссылки на репозиторий? Заранее спасибо!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Привет! Вот готовый код змейки на Python. Я сам его чуть доделывал для себя, так что должно подойти:

    Программный код:
    import turtle
    import time
    import random

    delay 
    0.1
    score 
    0
    high_score 
    0

    wn 
    turtle.Screen()
    wn.title("Snake Game")
    wn.bgcolor("black")
    wn.setup(width=600height=600)
    wn.tracer(0)

    head turtle.Turtle()
    head.speed(0)
    head.shape("square")
    head.color("white")
    head.penup()
    head.goto(00)
    head.direction "stop"

    food turtle.Turtle()
    food.speed(0)
    food.shape("circle")
    food.color("red")
    food.penup()
    food.goto(0100)

    segments = []

    def go_up():
        if 
    head.direction != "down":
            
    head.direction "up"

    def go_down():
        if 
    head.direction != "up":
            
    head.direction "down"

    def go_left():
        if 
    head.direction != "right":
            
    head.direction "left"

    def go_right():
        if 
    head.direction != "left":
            
    head.direction "right"

    def move():
        if 
    head.direction == "up":
            
    head.ycor()
            
    head.sety(20)
        if 
    head.direction == "down":
            
    head.ycor()
            
    head.sety(20)
        if 
    head.direction == "left":
            
    head.xcor()
            
    head.setx(20)
        if 
    head.direction == "right":
            
    head.xcor()
            
    head.setx(20)

    wn.listen()
    wn.onkey(go_up"w")
    wn.onkey(go_down"s")
    wn.onkey(go_left"a")
    wn.onkey(go_right"d")

    while 
    True:
        
    wn.update()

        if 
    head.xcor() > 290 or head.xcor() < -290 or head.ycor() > 290 or head.ycor() < -290:
            
    time.sleep(1)
            
    head.goto(00)
            
    head.direction "stop"

            
    for segment in segments:
                
    segment.goto(10001000)

            
    segments = []
            
    score 0

        
    if head.distance(food) < 20:
            
    random.randint(-290290)
            
    random.randint(-290290)
            
    food.goto(xy)

            
    new_segment turtle.Turtle()
            
    new_segment.speed(0)
            
    new_segment.shape("square")
            
    new_segment.color("grey")
            
    new_segment.penup()
            
    segments.append(new_segment)

            
    delay -= 0.001
            score 
    += 10

            
    if score high_score:
                
    high_score score

        
    for index in range(len(segments) - 10, -1):
            
    segments[index 1].xcor()
            
    segments[index 1].ycor()
            
    segments[index].goto(xy)

        if 
    len(segments) > 0:
            
    head.xcor()
            
    head.ycor()
            
    segments[0].goto(xy)

        
    move()

        for 
    segment in segments:
            if 
    segment.distance(head) < 20:
                
    time.sleep(1)
                
    head.goto(00)
                
    head.direction "stop"

                
    for segment in segments:
                    
    segment.goto(10001000)

                
    segments = []

                
    score 0

        time
    .sleep(delay)
    wn.mainloop() 

  4. Цитата Сообщение от AirWhisperer396
    Привет! Вот готовый код змейки на Python. Я сам его чуть доделывал для себя, так что должно подойти:

    Программный код:
    import turtle
    import time
    import random

    delay 
    0.1
    score 
    0
    high_score 
    0

    wn 
    turtle.Screen()
    wn.title("Snake Game")
    wn.bgcolor("black")
    wn.setup(width=600height=600)
    wn.tracer(0)

    head turtle.Turtle()
    head.speed(0)
    head.shape("square")
    head.color("white")
    head.penup()
    head.goto(00)
    head.direction "stop"

    food turtle.Turtle()
    food.speed(0)
    food.shape("circle")
    food.color("red")
    food.penup()
    food.goto(0100)

    segments = []

    def go_up():
        if 
    head.direction != "down":
            
    head.direction "up"

    def go_down():
        if 
    head.direction != "up":
            
    head.direction "down"

    def go_left():
        if 
    head.direction != "right":
            
    head.direction "left"

    def go_right():
        if 
    head.direction != "left":
            
    head.direction "right"

    def move():
        if 
    head.direction == "up":
            
    head.ycor()
            
    head.sety(20)
        if 
    head.direction == "down":
            
    head.ycor()
            
    head.sety(20)
        if 
    head.direction == "left":
            
    head.xcor()
            
    head.setx(20)
        if 
    head.direction == "right":
            
    head.xcor()
            
    head.setx(20)

    wn.listen()
    wn.onkey(go_up"w")
    wn.onkey(go_down"s")
    wn.onkey(go_left"a")
    wn.onkey(go_right"d")

    while 
    True:
        
    wn.update()

        if 
    head.xcor() > 290 or head.xcor() < -290 or head.ycor() > 290 or head.ycor() < -290:
            
    time.sleep(1)
            
    head.goto(00)
            
    head.direction "stop"

            
    for segment in segments:
                
    segment.goto(10001000)

            
    segments = []
            
    score 0

        
    if head.distance(food) < 20:
            
    random.randint(-290290)
            
    random.randint(-290290)
            
    food.goto(xy)

            
    new_segment turtle.Turtle()
            
    new_segment.speed(0)
            
    new_segment.shape("square")
            
    new_segment.color("grey")
            
    new_segment.penup()
            
    segments.append(new_segment)

            
    delay -= 0.001
            score 
    += 10

            
    if score high_score:
                
    high_score score

        
    for index in range(len(segments) - 10, -1):
            
    segments[index 1].xcor()
            
    segments[index 1].ycor()
            
    segments[index].goto(xy)

        if 
    len(segments) > 0:
            
    head.xcor()
            
    head.ycor()
            
    segments[0].goto(xy)

        
    move()

        for 
    segment in segments:
            if 
    segment.distance(head) < 20:
                
    time.sleep(1)
                
    head.goto(00)
                
    head.direction "stop"

                
    for segment in segments:
                    
    segment.goto(10001000)

                
    segments = []

                
    score 0

        time
    .sleep(delay)
    wn.mainloop() 
    Вау, это прям то, что мне нужно было! Слушай, а можно этот код подружить с PyQt или Tkinter?

  5. Могу предложить свой вариант, но он на Pygame написан:

    Программный код:
    import pygame
    import time
    import random

    pygame
    .init()

    white = (255255255)
    yellow = (255255102)
    black = (000)
    red = (2135080)
    green = (02550)
    blue = (50153213)

    dis_width 600
    dis_height 
    400

    dis 
    pygame.display.set_mode((dis_widthdis_height))
    pygame.display.set_caption('Snake Game')

    clock pygame.time.Clock()
    snake_block 10
    snake_speed 
    15

    font_style 
    pygame.font.SysFont("bahnschrift"25)
    score_font pygame.font.SysFont("comicsansms"35)

    def our_snake(snake_blocksnk_list):
        for 
    x in snk_list:
            
    pygame.draw.rect(disblack, [x[0], x[1], snake_blocksnake_block])

    def message(msgcolor):
        
    mesg font_style.render(msgTruecolor)
        
    dis.blit(mesg, [dis_width 6dis_height 3])

    def gameLoop():
        
    game_over False
        game_close 
    False

        x1 
    dis_width 2
        y1 
    dis_height 2

        x1_change 
    0
        y1_change 
    0

        snk_List 
    = []
        
    Length_of_snake 1

        foodx 
    round(random.randrange(0dis_width snake_block) / 10.0) * 10.0
        foody 
    round(random.randrange(0dis_height snake_block) / 10.0) * 10.0

        
    while not game_over:
            while 
    game_close:
                
    dis.fill(blue)
                
    message("You Lost! Press Q-Quit or C-Play Again"red)
                
    pygame.display.update()

                for 
    event in pygame.event.get():
                    if 
    event.type == pygame.KEYDOWN:
                        if 
    event.key == pygame.K_q:
                            
    game_over True
                            game_close 
    False
                        
    if event.key == pygame.K_c:
                            
    gameLoop()

            for 
    event in pygame.event.get():
                if 
    event.type == pygame.QUIT:
                    
    game_over True
                
    if event.type == pygame.KEYDOWN:
                    if 
    event.key == pygame.K_LEFT:
                        
    x1_change = -snake_block
                        y1_change 
    0
                    elif event
    .key == pygame.K_RIGHT:
                        
    x1_change snake_block
                        y1_change 
    0
                    elif event
    .key == pygame.K_UP:
                        
    y1_change = -snake_block
                        x1_change 
    0
                    elif event
    .key == pygame.K_DOWN:
                        
    y1_change snake_block
                        x1_change 
    0

            
    if x1 >= dis_width or x1 or y1 >= dis_height or y1 0:
                
    game_close True
            x1 
    += x1_change
            y1 
    += y1_change
            dis
    .fill(blue)
            
    pygame.draw.rect(disgreen, [foodxfoodysnake_blocksnake_block])
            
    snk_Head = []
            
    snk_Head.append(x1)
            
    snk_Head.append(y1)
            
    snk_List.append(snk_Head)
            if 
    len(snk_List) > Length_of_snake:
                
    del snk_List[0]

            for 
    x in snk_List[:-1]:
                if 
    == snk_Head:
                    
    game_close True

            our_snake
    (snake_blocksnk_List)
            
    pygame.display.update()

            if 
    x1 == foodx and y1 == foody:
                
    foodx round(random.randrange(0dis_width snake_block) / 10.0) * 10.0
                foody 
    round(random.randrange(0dis_height snake_block) / 10.0) * 10.0
                Length_of_snake 
    += 1

            clock
    .tick(snake_speed)

        
    pygame.quit()
        
    quit()

    gameLoop() 

  6. Цитата Сообщение от Нано Хакер
    Могу предложить свой вариант, но он на Pygame написан:

    Программный код:
    import pygame
    import time
    import random

    pygame
    .init()

    white = (255255255)
    yellow = (255255102)
    black = (000)
    red = (2135080)
    green = (02550)
    blue = (50153213)

    dis_width 600
    dis_height 
    400

    dis 
    pygame.display.set_mode((dis_widthdis_height))
    pygame.display.set_caption('Snake Game')

    clock pygame.time.Clock()
    snake_block 10
    snake_speed 
    15

    font_style 
    pygame.font.SysFont("bahnschrift"25)
    score_font pygame.font.SysFont("comicsansms"35)

    def our_snake(snake_blocksnk_list):
        for 
    x in snk_list:
            
    pygame.draw.rect(disblack, [x[0], x[1], snake_blocksnake_block])

    def message(msgcolor):
        
    mesg font_style.render(msgTruecolor)
        
    dis.blit(mesg, [dis_width 6dis_height 3])

    def gameLoop():
        
    game_over False
        game_close 
    False

        x1 
    dis_width 2
        y1 
    dis_height 2

        x1_change 
    0
        y1_change 
    0

        snk_List 
    = []
        
    Length_of_snake 1

        foodx 
    round(random.randrange(0dis_width snake_block) / 10.0) * 10.0
        foody 
    round(random.randrange(0dis_height snake_block) / 10.0) * 10.0

        
    while not game_over:
            while 
    game_close:
                
    dis.fill(blue)
                
    message("You Lost! Press Q-Quit or C-Play Again"red)
                
    pygame.display.update()

                for 
    event in pygame.event.get():
                    if 
    event.type == pygame.KEYDOWN:
                        if 
    event.key == pygame.K_q:
                            
    game_over True
                            game_close 
    False
                        
    if event.key == pygame.K_c:
                            
    gameLoop()

            for 
    event in pygame.event.get():
                if 
    event.type == pygame.QUIT:
                    
    game_over True
                
    if event.type == pygame.KEYDOWN:
                    if 
    event.key == pygame.K_LEFT:
                        
    x1_change = -snake_block
                        y1_change 
    0
                    elif event
    .key == pygame.K_RIGHT:
                        
    x1_change snake_block
                        y1_change 
    0
                    elif event
    .key == pygame.K_UP:
                        
    y1_change = -snake_block
                        x1_change 
    0
                    elif event
    .key == pygame.K_DOWN:
                        
    y1_change snake_block
                        x1_change 
    0

            
    if x1 >= dis_width or x1 or y1 >= dis_height or y1 0:
                
    game_close True
            x1 
    += x1_change
            y1 
    += y1_change
            dis
    .fill(blue)
            
    pygame.draw.rect(disgreen, [foodxfoodysnake_blocksnake_block])
            
    snk_Head = []
            
    snk_Head.append(x1)
            
    snk_Head.append(y1)
            
    snk_List.append(snk_Head)
            if 
    len(snk_List) > Length_of_snake:
                
    del snk_List[0]

            for 
    x in snk_List[:-1]:
                if 
    == snk_Head:
                    
    game_close True

            our_snake
    (snake_blocksnk_List)
            
    pygame.display.update()

            if 
    x1 == foodx and y1 == foody:
                
    foodx round(random.randrange(0dis_width snake_block) / 10.0) * 10.0
                foody 
    round(random.randrange(0dis_height snake_block) / 10.0) * 10.0
                Length_of_snake 
    += 1

            clock
    .tick(snake_speed)

        
    pygame.quit()
        
    quit()

    gameLoop() 
    Погонял твой код, прикольно! Pygame - вещь, но нужно привыкнуть к библиотеке.

  7. Слышал, Pygame-интерфейс у ребят в студентах популярен, но сам юзаю только tkinter. Вот код:

    Программный код:
    import tkinter as tk
    import random

    class SnakeGame:
        
    def __init__(selfmaster):
            
    self.master master
            self
    .master.title("Snake Game")
            
    self.master.resizable(FalseFalse)
            
    self.canvas tk.Canvas(self.masterwidth=500height=500bg="black")
            
    self.canvas.pack()
            
    self.snake = [(1010), (109), (108)]
            
    self.food None
            self
    .score 0
            self
    .direction 'Down'
            
    self.running True
            self
    .place_food()
            
    self.update()
            
    self.master.bind("<KeyPress>"self.on_key_press)

        
    def place_food(self):
            while 
    1:
                
    random.randint(049)
                
    random.randint(049)
                if (
    xynot in self.snake:
                    
    self.food = (xy)
                    break

        
    def update(self):
            if 
    self.running:
                
    self.canvas.delete(tk.ALL)
                for (
    xyin self.snake:
                    
    self.canvas.create_rectangle(x*10y*10x*10+10y*10+10fill="green")
                
    self.canvas.create_rectangle(self.food[0]*10self.food[1]*10self.food[0]*10+10self.food[1]*10+10fill="red")

                
    head_xhead_y self.snake[0]
                if 
    self.direction == 'Up':
                    
    head_y -= 1
                elif self
    .direction == 'Down':
                    
    head_y += 1
                elif self
    .direction == 'Left':
                    
    head_x -= 1
                elif self
    .direction == 'Right':
                    
    head_x += 1
                new_head 
    = (head_xhead_y)

                if 
    new_head == self.food:
                    
    self.snake.insert(0new_head)
                    
    self.place_food()
                    
    self.score += 1
                
    else:
                    
    self.snake = [new_head] + self.snake[:-1]

                
    self.master.after(100self.update)

        
    def on_key_press(selfe):
            
    new_direction e.keysym
            all_directions 
    = {'Up''Down''Left''Right'}
            
    opposites = {('Up''Down'), ('Down''Up'), ('Left''Right'), ('Right''Left')}
            if 
    new_direction in all_directions and (self.directionnew_directionnot in opposites:
                
    self.direction new_direction

    if __name__ == "__main__":
        
    root tk.Tk()
        
    SnakeGame(root)
        
    root.mainloop() 

  8. Цитата Сообщение от CodeBreaker
    Слышал, Pygame-интерфейс у ребят в студентах популярен, но сам юзаю только tkinter. Вот код:

    Программный код:
    import tkinter as tk
    import random

    class SnakeGame:
        
    def __init__(selfmaster):
            
    self.master master
            self
    .master.title("Snake Game")
            
    self.master.resizable(FalseFalse)
            
    self.canvas tk.Canvas(self.masterwidth=500height=500bg="black")
            
    self.canvas.pack()
            
    self.snake = [(1010), (109), (108)]
            
    self.food None
            self
    .score 0
            self
    .direction 'Down'
            
    self.running True
            self
    .place_food()
            
    self.update()
            
    self.master.bind("<KeyPress>"self.on_key_press)

        
    def place_food(self):
            while 
    1:
                
    random.randint(049)
                
    random.randint(049)
                if (
    xynot in self.snake:
                    
    self.food = (xy)
                    break

        
    def update(self):
            if 
    self.running:
                
    self.canvas.delete(tk.ALL)
                for (
    xyin self.snake:
                    
    self.canvas.create_rectangle(x*10y*10x*10+10y*10+10fill="green")
                
    self.canvas.create_rectangle(self.food[0]*10self.food[1]*10self.food[0]*10+10self.food[1]*10+10fill="red")

                
    head_xhead_y self.snake[0]
                if 
    self.direction == 'Up':
                    
    head_y -= 1
                elif self
    .direction == 'Down':
                    
    head_y += 1
                elif self
    .direction == 'Left':
                    
    head_x -= 1
                elif self
    .direction == 'Right':
                    
    head_x += 1
                new_head 
    = (head_xhead_y)

                if 
    new_head == self.food:
                    
    self.snake.insert(0new_head)
                    
    self.place_food()
                    
    self.score += 1
                
    else:
                    
    self.snake = [new_head] + self.snake[:-1]

                
    self.master.after(100self.update)

        
    def on_key_press(selfe):
            
    new_direction e.keysym
            all_directions 
    = {'Up''Down''Left''Right'}
            
    opposites = {('Up''Down'), ('Down''Up'), ('Left''Right'), ('Right''Left')}
            if 
    new_direction in all_directions and (self.directionnew_directionnot in opposites:
                
    self.direction new_direction

    if __name__ == "__main__":
        
    root tk.Tk()
        
    SnakeGame(root)
        
    root.mainloop() 
    Слушай, идея свежая. Но этот tkinter все время лагал у меня, пробовал async/await?

  9. Если тебе нужен офигенный код, то попробуй Blender. Там можно через Python делать игру. Код сложнее, но результат круче!

    Программный код:
    import bpy

    bpy
    .ops.mesh.primitive_cube_add()
    bpy.ops.object.mode_set(mode='EDIT')
    bpy.ops.object.mode_set(mode='OBJECT')
    bpy.context.object.scale[0] *= 2
    bpy
    .context.object.scale[1] *= 2
    bpy
    .context.object.scale[2] *= 2

    # Blender не так популярен, но позволяет делать сложные игры. 

  10. Цитата Сообщение от Skids
    Если тебе нужен офигенный код, то попробуй Blender. Там можно через Python делать игру. Код сложнее, но результат круче!

    Программный код:
    import bpy

    bpy
    .ops.mesh.primitive_cube_add()
    bpy.ops.object.mode_set(mode='EDIT')
    bpy.ops.object.mode_set(mode='OBJECT')
    bpy.context.object.scale[0] *= 2
    bpy
    .context.object.scale[1] *= 2
    bpy
    .context.object.scale[2] *= 2

    # Blender не так популярен, но позволяет делать сложные игры. 
    Эй, чувак, Blender - это жесть! Надо много учиться для этого.

Страница 1 из 2 12 ПоследняяПоследняя