Un juego de serpientes es un juego de laberinto arcade desarrollado por Gremlin Industries y publicado por Sega en octubre de 1976. Se considera un juego hábil y se ha popularizado entre las personas durante generaciones. La serpiente en el juego Snake se controla usando los cuatro botones de dirección en relación con la dirección en la que se dirige. El objetivo del jugador en el juego es lograr el máximo de puntos posible recolectando comida o frutas. El jugador pierde una vez que la serpiente golpea la pared o se golpea a sí misma.
Para los principiantes de Python, aquellos que estén interesados en hacer algo más fácil en su dominio definitivamente pueden probar esto y el módulo Turtle se creó exactamente para este propósito para que los principiantes lo prueben y también puedan enviarlo como parte del proyecto. Este programa se realizará en Python 3 .
Entonces, crearemos un juego basado en Python usando los siguientes módulos:
- Turtle: es una biblioteca de Python preinstalada que permite a los usuarios crear formas e imágenes al proporcionarles un lienzo virtual.
- Tiempo: Esta función se utiliza para contar el número de segundos transcurridos desde la época.
- Aleatorio: esta función se utiliza para generar números aleatorios en Python mediante el uso de un módulo random.
Apoyo
El siguiente código se puede hacer fácilmente usando la aplicación PyCharm , que está especialmente diseñada para los programas de Python.
Además, VSCode se puede usar para este programa. Instale Python3 desde extensiones de VSCode. Luego, guarde el programa en forma de your_filename.py
A continuación se muestra el enfoque paso a paso para crear un juego de serpientes usando el módulo Turtle:
Paso 1 : Importaremos módulos al programa y daremos valores predeterminados para el juego.
Python3
import turtle import time import random delay = 0.1 score = 0 high_score = 0
Paso 2 : Ahora, crearemos la pantalla del juego, es decir, la pantalla de la ventana del juego donde crearemos la cabeza de la serpiente y la comida para la serpiente en el juego y mostraremos los puntajes en el encabezado del juego. .
Python3
# Creating a window screen wn = turtle.Screen() wn.title("Snake Game") wn.bgcolor("blue") # the width and height can be put as user's choice wn.setup(width=600, height=600) wn.tracer(0) # head of the snake head = turtle.Turtle() head.shape("square") head.color("white") head.penup() head.goto(0, 0) head.direction = "Stop" # food in the game food = turtle.Turtle() colors = random.choice(['red', 'green', 'black']) shapes = random.choice(['square', 'triangle', 'circle']) food.speed(0) food.shape(shapes) food.color(colors) food.penup() 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("Score : 0 High Score : 0", align="center", font=("candara", 24, "bold"))
Producción:
Paso 3 : Ahora, validaremos la clave para los movimientos de la serpiente. Al hacer clic en las palabras clave que normalmente se usan para jugar ‘w’, ‘a’, ‘s’ y ‘d’, podemos operar los movimientos de la serpiente alrededor de la pantalla.
Python3
# assigning key directions def group(): if head.direction != "down": head.direction = "up" def godown(): if head.direction != "up": head.direction = "down" def goleft(): if head.direction != "right": head.direction = "left" def goright(): if head.direction != "left": head.direction = "right" def move(): if head.direction == "up": y = head.ycor() head.sety(y+20) if head.direction == "down": y = head.ycor() head.sety(y-20) if head.direction == "left": x = head.xcor() head.setx(x-20) if head.direction == "right": x = head.xcor() head.setx(x+20) wn.listen() wn.onkeypress(group, "w") wn.onkeypress(godown, "s") wn.onkeypress(goleft, "a") wn.onkeypress(goright, "d")
Paso 4 : Ahora, por último, crearemos el juego donde sucederá lo siguiente:
- La serpiente crecerá su cuerpo cuando la serpiente coma los frutos.
- Dando color a la cola de la serpiente.
- Después de comer la fruta, se contará la puntuación.
- Comprobación de las colisiones de la cabeza de la serpiente con el cuerpo o la pared de la pantalla de la ventana.
- Reiniciar el juego automáticamente desde el principio después de la colisión.
- La nueva forma y color de la fruta se introducirá cada vez que se reinicie la ventana.
- La puntuación volverá a cero y se mantendrá una puntuación alta hasta que no se cierre la ventana.
Python3
segments = [] # Main Gameplay 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(0, 0) head.direction = "Stop" colors = random.choice(['red', 'blue', 'green']) shapes = random.choice(['square', 'circle']) for segment in segments: segment.goto(1000, 1000) segments.clear() score = 0 delay = 0.1 pen.clear() pen.write("Score : {} High Score : {} ".format( score, high_score), align="center", font=("candara", 24, "bold")) if head.distance(food) < 20: x = random.randint(-270, 270) y = random.randint(-270, 270) food.goto(x, y) # Adding segment new_segment = turtle.Turtle() new_segment.speed(0) new_segment.shape("square") new_segment.color("orange") # tail colour new_segment.penup() segments.append(new_segment) delay -= 0.001 score += 10 if score > high_score: high_score = score pen.clear() pen.write("Score : {} High Score : {} ".format( score, high_score), align="center", font=("candara", 24, "bold")) # Checking for head collisions with body segments for index in range(len(segments)-1, 0, -1): x = segments[index-1].xcor() y = segments[index-1].ycor() segments[index].goto(x, y) if len(segments) > 0: x = head.xcor() y = head.ycor() segments[0].goto(x, y) move() for segment in segments: if segment.distance(head) < 20: time.sleep(1) head.goto(0, 0) head.direction = "stop" colors = random.choice(['red', 'blue', 'green']) shapes = random.choice(['square', 'circle']) for segment in segments: segment.goto(1000, 1000) segment.clear() score = 0 delay = 0.1 pen.clear() pen.write("Score : {} High Score : {} ".format( score, high_score), align="center", font=("candara", 24, "bold")) time.sleep(delay) wn.mainloop()
A continuación, el programa completo basado en el enfoque anterior:
Python3
# import required modules import turtle import time import random delay = 0.1 score = 0 high_score = 0 # Creating a window screen wn = turtle.Screen() wn.title("Snake Game") wn.bgcolor("blue") # the width and height can be put as user's choice wn.setup(width=600, height=600) wn.tracer(0) # head of the snake head = turtle.Turtle() head.shape("square") head.color("white") head.penup() head.goto(0, 0) head.direction = "Stop" # food in the game food = turtle.Turtle() colors = random.choice(['red', 'green', 'black']) shapes = random.choice(['square', 'triangle', 'circle']) food.speed(0) food.shape(shapes) food.color(colors) food.penup() 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("Score : 0 High Score : 0", align="center", font=("candara", 24, "bold")) # assigning key directions def group(): if head.direction != "down": head.direction = "up" def godown(): if head.direction != "up": head.direction = "down" def goleft(): if head.direction != "right": head.direction = "left" def goright(): if head.direction != "left": head.direction = "right" def move(): if head.direction == "up": y = head.ycor() head.sety(y+20) if head.direction == "down": y = head.ycor() head.sety(y-20) if head.direction == "left": x = head.xcor() head.setx(x-20) if head.direction == "right": x = head.xcor() head.setx(x+20) wn.listen() wn.onkeypress(group, "w") wn.onkeypress(godown, "s") wn.onkeypress(goleft, "a") wn.onkeypress(goright, "d") segments = [] # Main Gameplay 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(0, 0) head.direction = "Stop" colors = random.choice(['red', 'blue', 'green']) shapes = random.choice(['square', 'circle']) for segment in segments: segment.goto(1000, 1000) segments.clear() score = 0 delay = 0.1 pen.clear() pen.write("Score : {} High Score : {} ".format( score, high_score), align="center", font=("candara", 24, "bold")) if head.distance(food) < 20: x = random.randint(-270, 270) y = random.randint(-270, 270) food.goto(x, y) # Adding segment new_segment = turtle.Turtle() new_segment.speed(0) new_segment.shape("square") new_segment.color("orange") # tail colour new_segment.penup() segments.append(new_segment) delay -= 0.001 score += 10 if score > high_score: high_score = score pen.clear() pen.write("Score : {} High Score : {} ".format( score, high_score), align="center", font=("candara", 24, "bold")) # Checking for head collisions with body segments for index in range(len(segments)-1, 0, -1): x = segments[index-1].xcor() y = segments[index-1].ycor() segments[index].goto(x, y) if len(segments) > 0: x = head.xcor() y = head.ycor() segments[0].goto(x, y) move() for segment in segments: if segment.distance(head) < 20: time.sleep(1) head.goto(0, 0) head.direction = "stop" colors = random.choice(['red', 'blue', 'green']) shapes = random.choice(['square', 'circle']) for segment in segments: segment.goto(1000, 1000) segment.clear() score = 0 delay = 0.1 pen.clear() pen.write("Score : {} High Score : {} ".format( score, high_score), align="center", font=("candara", 24, "bold")) time.sleep(delay) wn.mainloop()
Publicación traducida automáticamente
Artículo escrito por polokghosh53 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA