python实现简单贪吃蛇小游戏

本文实例为大家分享了python实现简单贪吃蛇的具体代码,供大家参考,具体内容如下

1. 导入游戏库

import pgzrun
import random

2.游戏初始化

# 窗口大小
WIDTH = 600
HEIGHT = 480
# 贪吃蛇
bodys = [ [100,100],[80,100], [60,100], [40,100], [20,100]]
head = [100,100]
d = 'right'
# 食物
food = [290,290]
# 得分
score=0

3.游戏窗口绘制

def draw():
#清空屏幕
screen.clear()
# 绘制网格
for i in range(1,24):
screen.draw.line((0,i*20),(600,i*20),'gray')
for i in range(1,30):
screen.draw.line((i*20,0),(i*20,480),'gray')
#绘制蛇
for body in bodys:
rect = Rect(body,(20,20))
screen.draw.filled_rect(rect,(0,0,255))
inner = [body[0]+2,body[1]+2]
rect = Rect(inner, (15, 15),center='center')
screen.draw.filled_rect(rect, (0, 0, 180))
# 绘制头
rect = Rect(head, (20, 20))
screen.draw.filled_rect(rect, (0, 200,0))
inner = [head[0] + 2, head[1] + 2]
rect = Rect(inner, (15, 15))
screen.draw.filled_rect(rect, (0, 255, 12))
# 绘制食物
screen.draw.filled_circle(food,10, '#ffddee')
# 绘制得分
screen.draw.text('score:'+str(score),(20, 20), color="orange",fontsize=30)

4.蛇的移动功能

def run():
global food,d,head,bodys,score
# 新增一个格子的身体
if d=='right':
head[0] += 20
elif d=='left':
head[0] -= 20
elif d=='up':
head[1] -= 20
else:
head[1] += 20
bodys.insert(0,list(head))
if head[0] == food[0]-10 and head[1] == food[1] - 10:
food = [random.randint(1,30)*20-10,random.randint(1,20)*20-10]
score+=1
if score>3:
clock.unschedule(run)
clock.schedule_interval(run, 0.1)
else:
bodys.pop()
# 撞墙后重新开始
if head[0]<0 or head[0]>580 or head[1]<0 or head[1]>480 or head in
bodys[1:]:
# 蛇回到初始位置
bodys = [[100, 100], [80, 100], [60, 100], [40, 100], [20, 100]]
head = [100, 100]
# 方向向右
d = 'right'
# 得分清零
score=0
clock.unschedule(run)
clock.schedule_interval(run, 0.3)

5.按键控制蛇的行走方向

# 按键控制蛇的行走方向
def on_key_down(key):
global d
# 改变方向
if key == keys.DOWN and d != 'up':
d = 'down'
if key == keys.UP and d != 'down':
d = 'up'
if key == keys.LEFT and d != 'right':
d = 'left'
if key == keys.RIGHT and d != 'left':
d = 'right'

6.启动游戏

# 定时设置
clock.schedule_interval(run, 0.3)
# 播放音乐
music.play('music.mp3')
# 启动游戏
pgzrun.go()

完整代码

# 1.导入库
import pgzrun
import random

# 2.初始化
# 窗口大小
WIDTH = 600
HEIGHT = 480
# 贪吃蛇
bodys = [[100, 100], [80, 100], [60, 100], [40, 100], [20, 100]]
head = [100, 100]
d = 'right'
# 食物
food = [290, 290]
# 得分
score = 0

# 3.游戏窗口绘制
def draw():
    # 清空屏幕
    screen.clear()
    # 绘制网格
    for i in range(1, 24):
        screen.draw.line((0, i * 20), (600, i * 20), 'gray')
    for i in range(1, 30):
        screen.draw.line((i * 20, 0), (i * 20, 480), 'gray')
    # 绘制蛇
    for body in bodys:
        rect = Rect(body, (20, 20))
        screen.draw.filled_rect(rect, (0, 0, 255))
        inner = [body[0] + 2, body[1] + 2]
        rect = Rect(inner, (15, 15), center='center')
        screen.draw.filled_rect(rect, (128, 0, 128)) # 紫色

    # 绘制头
    rect = Rect(head, (20, 20))
    screen.draw.filled_rect(rect, (0, 200, 0))
    inner = [head[0] + 2, head[1] + 2]
    rect = Rect(inner, (15, 15))
    screen.draw.filled_rect(rect, (0, 255, 12))
    # 绘制食物 颜色为红色
    screen.draw.filled_circle(food, 10, '#ff0000')
    # 绘制得分
    screen.draw.text('score:' + str(score), (20, 20), color="red", fontsize=30)

# 4.蛇的移动功能
def run():
    global food, d, head, bodys, score
    # 新增一个格子的身体
    if d == 'right':
        head[0] += 20
    elif d == 'left':
        head[0] -= 20
    elif d == 'up':
        head[1] -= 20
    else:
        head[1] += 20
    bodys.insert(0, list(head))
    if head[0] == food[0] - 10 and head[1] == food[1] - 10:
        food = [random.randint(1, 30) * 20 - 10, random.randint(1, 20) * 20 - 10]
        score += 1
        if score > 10:
            clock.unschedule(run)
            clock.schedule_interval(run, 0.1)
    else:
        bodys.pop()
    # 撞墙后重新开始
    if head[0] < 0 or head[0] > 580 or head[1] < 0 or head[1] > 480 or head in bodys[1:]:
        # 蛇回到初始位置
        bodys = [[100, 100], [80, 100], [60, 100], [40, 100], [20, 100]]
        head = [100, 100]
        # 方向向右
        d = 'right'
        # 得分清零
        score = 0
        clock.unschedule(run)
        clock.schedule_interval(run, 0.3)

# 按键控制蛇的行走方向
def on_key_down(key):
    global d
    # 改变方向
    if key == keys.DOWN and d != 'up':
        d = 'down'
    if key == keys.UP and d != 'down':
        d = 'up'
    if key == keys.LEFT and d != 'right':
        d = 'left'
    if key == keys.RIGHT and d != 'left':
        d = 'right'

# 6.启动游戏
# 定时设置
clock.schedule_interval(run, 0.3)
# 播放音乐
music.play('music.mp3')
# 启动游戏
pgzrun.go()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Python写的贪吃蛇游戏例子

    第一次用Python写这种比较实用且好玩的东西,权当练手吧 游戏说明: * P键控制"暂停/开始"* 方向键控制贪吃蛇的方向 源代码如下: 复制代码 代码如下: from Tkinter import *import tkMessageBox,sysfrom random import randint class Grid(object):    def __init__(self,master=None,window_width=800,window_height=600,grid_

  • python实现贪吃蛇小游戏

    关于编写游戏,是博主非常向往的东西(博主喜爱游戏),编写游戏得一步一步的走!今天我简单的编写一下非常经典的游戏贪吃蛇!!!! 效果图: 首先引入pygame模块 pip install pygame 关于编写贪吃蛇有如下几个步骤!依次思考 1.设置背景大小,即游戏框大小,---像素(px) 2.设置颜色,蛇的颜色,背景颜色,豆子的颜色 #pygame游戏库,sys操控python运行的环境 import pygame,sys,random #这个模块包含所有pygame所使用的常亮 from p

  • 利用python实现简易版的贪吃蛇游戏(面向python小白)

    引言 作为python 小白,总是觉得自己要做好百分之二百的准备,才能开始写程序.以至于常常整天在那看各种语法教程,学了几个月还是只会print('hello world'). 这样做效率太低,正确的做法,是到身边找问题,然后编程实现.比如说,我学了高等数学,我是不是应该考虑下如何去用编程实现求导或者积分操作,如果想不出怎么办,是不是应该 baidu 一下,别人是如何实现数值积分或是符号积分的.我们每天买东西都要用到加减甚至乘除,那么我是否能编写个简单的计算器,如果命令行太丑的话,我是否能够快速

  • Python 实现 贪吃蛇大作战 代码分享

    感觉游戏审核新政实施后,国内手游市场略冷清,是不是各家的新游戏都在排队等审核.媒体们除了之前竞相追捧<Pokemon Go>热闹了一把,似乎也听不到什么声音了.直到最近几天,突然听见好几人都提到同一个游戏,网上还有人表示朋友圈被它刷屏了.(不过现在微信已经悍然屏蔽了它的分享) 这个游戏就是现在iOS免费榜排名第一的<贪吃蛇大作战>.一个简单到不行的游戏,也不知道怎么就火了.反正一款游戏火了,各路媒体.专家总能说出种种套路来,所以我就不发表意见了.不过这实在是一个挺好实现的游戏,于是

  • python贪吃蛇游戏代码

    本文实例为大家分享了python贪吃蛇游戏的具体代码,供大家参考,具体内容如下 贪吃蛇游戏截图: 首先安装pygame,可以使用pip安装pygame: pip install pygame 运行以下代码即可: #!/usr/bin/env python import pygame,sys,time,random from pygame.locals import * # 定义颜色变量 redColour = pygame.Color(255,0,0) blackColour = pygame.

  • python实现贪吃蛇游戏源码

    本文实例为大家分享了python实现贪吃蛇的具体代码,供大家参考,具体内容如下 import pygame import sys import random SCREEN_X=600 SCREEN_Y=600 class Snake(object): def __init__(self): self.direction=pygame.K_RIGHT self.body = [] for i in range(5): self.addnode() def addnode(self): left,

  • Python贪吃蛇游戏编写代码

    最近在学Python,想做点什么来练练手,命令行的贪吃蛇一般是C的练手项目,但是一时之间找不到别的,就先做个贪吃蛇来练练简单的语法. 由于Python监听键盘很麻烦,没有C语言的kbhit(),所以这条贪吃蛇不会自己动,运行效果如下: 要求:用#表示边框,用*表示食物,o表示蛇的身体,O表示蛇头,使用wsad来移动 Python版本:3.6.1 系统环境:Win10 类: board:棋盘,也就是游戏区域 snake:贪吃蛇,通过记录身体每个点来记录蛇的状态 game:游戏类 本来还想要个foo

  • 使用Python写一个贪吃蛇游戏实例代码

    我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中. 特殊食物: 1.绿色:普通,吃了增加体型 2.红色:吃了减少体型 3.金色:吃了回到最初体型 4.变色食物:吃了会根据食物颜色改变蛇的颜色 #coding=UTF-8 from Tkinter import * from random import randint import tkMessageBox class Grid(object): def __init__(self,

  • 教你一步步利用python实现贪吃蛇游戏

    0 引言 前几天,星球有人提到贪吃蛇,一下子就勾起了我的兴趣,毕竟在那个Nokia称霸的年代,这款游戏可是经典中的经典啊!而用Python(蛇)玩Snake(贪吃蛇),那再合适不过了

  • python实现贪吃蛇游戏

    本文实例为大家分享了python实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 本文稍作改动,修复一些bug,原文链接:python实现贪吃蛇游戏 #!/usr/bin/env python #__*__ coding: utf-8 __*__ import pygame,sys,time,random from pygame.locals import * redColour = pygame.Color(255,0,0) blackColour = pygame.Color(0,0,0)

随机推荐