首页 > 分享 > python贪吃蛇代码怎么运行,python贪吃蛇代码没有cfg

python贪吃蛇代码怎么运行,python贪吃蛇代码没有cfg

导语

贪吃蛇,大家应该都玩过。当初第一次接触贪吃蛇的时候 ,还是我爸的数字手机,考试成绩比较好,就会得到一些小奖励,玩手机游戏肯定也在其中首位,毕竟小孩子天性都喜欢~

当时都能玩的不亦乐乎学python用啥书比较好。今天,我们用Python编程一个贪吃蛇游戏哦~

正文

1.将使用两个主要的类(蛇和立方体)。

import math

import random

import pygame

import tkinter as tk

from tkinter import messagebox

class cube(object):

rows = 20

w = 500

def __init__(self,start,dirnx=1,dirny=0,color=(255,0,0)):

pass

def move(self, dirnx, dirny):

pass

def draw(self, surface, eyes=False):

pass

class snake(object):

def __init__(self, color, pos):

pass

def move(self):

pass

def reset(self, pos):

pass

def addCube(self):

pass

def draw(self, surface):

pass

def drawGrid(w, rows, surface):

pass

def redrawWindow(surface):

pass

def randomSnack(rows, item):

pass

def message_box(subject, content):

pass

def main():

pass

main()

2.创造游戏循环:

在所有的游戏中,我们都有一个叫做“主循环”或“游戏循环”的循环。该循环将持续运行,直到游戏退出。它主要负责检查事件,并基于这些事件调用函数和方法。

我们将在main()功能。在函数的顶部声明一些变量,然后进入while循环,这将代表我们的游戏循环。

def main():

global width, rows, s

width = 500 # Width of our screen

height = 500 # Height of our screen

rows = 20 # Amount of rows

win = pygame.display.set_mode((width, height)) # Creates our screen object

s = snake((255,0,0), (10,10)) # Creates a snake object which we will code later

clock = pygame.time.Clock() # creating a clock object

flag = True

# STARTING MAIN LOOP

while flag:

pygame.time.delay(50) # This will delay the game so it doesn't run too quickly

clock.tick(10) # Will ensure our game runs at 10 FPS

redrawWindow(win) # This will refresh our screen

​3.更新屏幕:通常,在一个函数或方法中绘制所有对象是一种很好的做法。我们将使用重绘窗口函数来更新显示。我们在游戏循环中每一帧调用一次这个函数。稍后我们将向该函数添加更多内容。然而,现在我们将简单地绘制网格线。

def redrawWindow(surface):

surface.fill((0,0,0))

drawGrid(surface)

pygame.display.update()

4.绘制网格:现在将绘制代表20x20网格的线条。

def drawGrid(w, rows, surface):

sizeBtwn = w // rows # Gives us the distance between the lines

x = 0 # Keeps track of the current x

y = 0 # Keeps track of the current y

for l in range(rows): # We will draw one vertical and one horizontal line each loop

x = x + sizeBtwn

y = y + sizeBtwn

pygame.draw.line(surface, (255,255,255), (x,0),(x,w))

pygame.draw.line(surface, (255,255,255), (0,y),(w,y))

5.现在当我们运行程序时,我们可以看到网格线被画出来。

pygame snake tutorial

6.开始制作贪吃蛇:蛇对象将包含一个代表蛇身体的立方体列表。我们将把这些立方体存储在一个名为body的列表中,它将是一个类变量。我们还将有一个名为turns的类变量。为了开始蛇类,对__init__()方法并添加类变量。

class snake(object):

body = []

turns = {}

def __init__(self, color, pos):

self.color = color

self.head = cube(pos) # The head will be the front of the snake

self.body.append(self.head) # We will add head (which is a cube object)

# to our body list

# These will represent the direction our snake is moving

self.dirnx = 0

self.dirny = 1

7.这款游戏最复杂的部分就是翻蛇。我们需要记住我们把我们的蛇转向了哪里和哪个方向,这样当头部后面的立方体到达那个位置时,我们也可以把它们转向。这就是为什么每当我们转向时,我们会将头部的位置添加到转向字典中,其中值是我们转向的方向。这样,当其他立方体到达这个位置时,我们就知道如何转动它们了。

class snake(object):

...

def move(self):

for event in pygame.event.get():

if event.type == pygame.QUIT:

pygame.quit()

keys = pygame.key.get_pressed()

for key in keys:

if keys[pygame.K_LEFT]:

self.dirnx = -1

self.dirny = 0

self.turns[self.head.pos[:]] = [self.dirnx, self.dirny]

elif keys[pygame.K_RIGHT]:

self.dirnx = 1

self.dirny = 0

self.turns[self.head.pos[:]] = [self.dirnx, self.dirny]

elif keys[pygame.K_UP]:

self.dirnx = 0

self.dirny = -1

self.turns[self.head.pos[:]] = [self.dirnx, self.dirny]

elif keys[pygame.K_DOWN]:

self.dirnx = 0

self.dirny = 1

self.turns[self.head.pos[:]] = [self.dirnx, self.dirny]

for i, c in enumerate(self.body): # Loop through every cube in our body

p = c.pos[:] # This stores the cubes position on the grid

if p in self.turns: # If the cubes current position is one where we turned

turn = self.turns[p] # Get the direction we should turn

c.move(turn[0],turn[1]) # Move our cube in that direction

if i == len(self.body)-1: # If this is the last cube in our body remove the turn from the dict

self.turns.pop(p)

else: # If we are not turning the cube

# If the cube reaches the edge of the screen we will make it appear on the opposite side

if c.dirnx == -1 and c.pos[0] <= 0: c.pos = (c.rows-1, c.pos[1])

elif c.dirnx == 1 and c.pos[0] >= c.rows-1: c.pos = (0,c.pos[1])

elif c.dirny == 1 and c.pos[1] >= c.rows-1: c.pos = (c.pos[0], 0)

elif c.dirny == -1 and c.pos[1] <= 0: c.pos = (c.pos[0],c.rows-1)

else: c.move(c.dirnx,c.dirny) # If we haven't reached the edge just move in our current direction

8.画蛇:我们只需画出身体中的每个立方体对象。我们将在蛇身上做这个绘制()方法。

class snake(object):

...

def draw(self):

for i, c in enumerate(self.body):

if i == 0:

c.draw(surface, True)

else:

c.draw(surface)

9.结束游戏当我们的蛇物体与自己碰撞时,我们就输了。为了检查这一点,我们在main()游戏循环中的功能。

for x in range(len(s.body)):

if s.body[x].pos in list(map(lambda z:z.pos,s.body[x+1:])):

print('Score: ', len(s.body))

message_box('You Lost!', 'Play again...')

s.reset((10,10))

break

10.蛇类–重置()方法现在我们将对重置()方法。所有这些将会做的是重置蛇,这样我们可以在之后再次玩。

class snake():

...

def reset(self, pos):

self.head = cube(pos)

self.body = []

self.body.append(self.head)

self.turns = {}

self.dirnx = 0

self.dirny = 1

下面我们先看看效果:

snake image pygame tutorial

 总结

好了蛇蛇大作战就写完啦!​源码基地:关注小编获取哦~记得三连吖

记得三连啦~爱你

欢迎阅读往期文章游戏啦:

1.成语接龙游戏项目。    2.塔防游戏项目。    3.记忆翻牌游戏项目。   4.吃豆豆小游戏项目。

5.外星人入侵游戏项目。6.数织游戏项目。     7.脑力锻炼游戏项目。   8.垃圾分类小游戏项目。

9.雷霆战机游戏项目。  10.”我的兔子“游戏项目。 11.八音符游戏项目。12.拼图小游戏项目。

13.滑雪小游戏项目。    14.桌面宠物项目。     15.无敌金身小恐龙。   16.坦克大战游戏项目。

17.走迷宫游戏项目。     18.像素鸟游戏项目。19.21款python一行代码小游戏      

更多内容更新中..........

相关知识

python 250行代码开发一个贪吃蛇
python实现贪吃蛇小游戏
使用python pygame库写基础“贪吃蛇游戏”
VS2015贪吃蛇代码分析(10
python+pygame 贪吃蛇游戏
python运行run在哪
结队
C的课程规范设计贪吃蛇小游戏内附完整源码及附件.doc
基于python的宠物识别完整代码
贪吃蛇案例详解

网址: python贪吃蛇代码怎么运行,python贪吃蛇代码没有cfg https://m.mcbbbk.com/newsview1315226.html

所属分类:萌宠日常
上一篇: 树游记——不知所云的体验
下一篇: 十二生肖分享