python pygame做的小游戏(贪吃蛇)

# pygame游戏库,sys操控python运行的环境
import pygame, sys, random
# 这个模块包含所有pygame所使用的常亮
from pygame.locals import *

# 1,定义颜色变量
# 0-255  0黑色  255白色
redColor = pygame.Color(255, 0, 0)
# 背景为黑色
blackColor = pygame.Color(0, 0, 0)
# 贪吃蛇为白色
whiteColor = pygame.Color(255, 255, 255)

# 定义游戏结束的函数
def gameover():
    pygame.quit()
    sys.exit()

# 定义main函数--》定义我们的入口函数
def main():
    # 初始化pygame
    pygame.init()
    # 定义一个变量来控制速度
    fpsClock = pygame.time.Clock()
    # 创建pygame显示层,创建一个界面
    playsurface = pygame.display.set_mode((640, 480))  #生成主屏幕创建屏幕大小
    pygame.display.set_caption(‘贪吃蛇‘)
    # 初始化变量
    # 贪吃蛇初始坐标位置   (先以100,100为基准)
    snakePosition = [100, 100]
    # 初始化贪吃蛇的长度列表中有个元素就代表有几段身体
    snakeBody = [[100, 100], [80, 100], [60, 100]]
    # 初始化目标方向额位置
    targetPosition = [300, 300]
    # 目标方块的标记 目的:判断是否吃掉了这个目标方块1 就是没有吃 0就是吃掉
    targetflag = 1
    # 初始化方向   --》往右
    direction = ‘right‘
    # 定义一个方向变量(人为控制  按键)
    changeDirection = direction
    while True:

        for event in pygame.event.get():  # 从队列中获取事件
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == KEYDOWN:  # 按键按下时,会触发该事件
                if event.key == K_RIGHT:
                    changeDirection = ‘right‘
                if event.key == K_LEFT:
                    changeDirection = ‘left‘
                if event.key == K_UP:
                    changeDirection = ‘up‘
                if event.key == K_DOWN:
                    changeDirection = ‘down‘
                    # 对应键盘上的esc文件
                if event.key == K_ESCAPE:
                    pygame.event.post(pygame.event.Event(QUIT))

        # 确定方向
        if changeDirection == ‘left‘ and not direction == ‘right‘:
            direction = changeDirection
        if changeDirection == ‘right‘ and not direction == ‘left‘:
            direction = changeDirection
        if changeDirection == ‘up‘ and not direction == ‘down‘:
            direction = changeDirection
        if changeDirection == ‘down‘ and not direction == ‘up‘:
            direction = changeDirection

        # 根据方向移动蛇头
        if direction == ‘right‘:
            snakePosition[0] += 20
        if direction == ‘left‘:
            snakePosition[0] -= 20
        if direction == ‘up‘:
            snakePosition[1] -= 20
        if direction == ‘down‘:
            snakePosition[1] += 20
        # 增加蛇的长度
        snakeBody.insert(0, list(snakePosition))
        # 如果贪吃蛇和目标方块的位置重合
        if snakePosition[0] == targetPosition[0] and snakePosition[1] == targetPosition[1]:
            targetflag = 0
        else:
            snakeBody.pop()
        if targetflag == 0:
            x = random.randrange(1, 32)
            y = random.randrange(1, 24)
            targetPosition = [int(x * 20), int(y * 20)]
            targetflag = 1
        # 填充背景颜色
        playsurface.fill(blackColor)
        for position in snakeBody:
            # 第一个参数serface指定一个serface编辑区,在这个区域内绘制
            # 第二个参数color:颜色
            # 第三个参数:rect:返回一个矩形(xy),(width,height)
            # 第四个参数:width:表示线条的粗细  width0填充  实心
            # 化蛇
            pygame.draw.rect(playsurface, redColor, Rect(position[0], position[1], 20, 20))
            pygame.draw.rect(playsurface, whiteColor, Rect(targetPosition[0], targetPosition[1], 20, 20))

        # 更新显示到屏幕表面
        pygame.display.flip()
        # 判断是否游戏结束
        if snakePosition[0] > 620 or snakePosition[0] < 0:
            gameover()
        elif snakePosition[1] > 460 or snakePosition[1] < 0:
            gameover()
        # 控制游戏速度
        fpsClock.tick(2)

#   启动入口函数
if __name__ == ‘__main__‘:
    main()
  • 效果

原文地址:https://www.cnblogs.com/u-damowang1/p/12159092.html

时间: 2024-10-13 17:06:38

python pygame做的小游戏(贪吃蛇)的相关文章

控制台小游戏-贪吃蛇,c++和c#版

说是c++版,其实只是用到了c++的cout和cin而已.这是我做的第二个控制台游戏,基本上每一行代码都加上了注释. 游戏嘛,我觉得重要的是了解他的思想,所以后期学了面向对象之后这个游戏的代码我也没有重新封装. 下面请看图 代码如下:我是用dev c++写的 1 //注释. ---星辰 2 3 #include <iostream> 4 #include<Windows.h> 5 #include<ctime> 6 #include<cstdlib> 7 #

java小游戏贪吃蛇大作战:来一起回顾童年回忆!

Java小项目之贪吃蛇 跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早上贵子,从不掉发! 贪吃蛇,绝对是很多朋友的童年记忆.几乎没有人会说没玩过这款小游戏,因为不管在小灵通手机,直板手机,还是半智能手机,甚至是现在的5G手机,都能看见这款游戏的身影.虽然游戏一直在进化,画面,风格,操作方式越来越精细,但是游戏本质的玩法是没变的,例如蛇不断变大,碰到墙壁会死亡等设定.这篇文章来分享java小游戏贪吃蛇:部分代码展示:这个贪吃蛇小游戏,玩法和操控,都是比较完善的,大家感兴趣的可

Pascal小游戏 贪吃蛇

一段未完成的Pascal贪吃蛇 说这段代码未完成其实是没有源代码格式化,FP中一行最多只有255字符宽. uses crt; const screenwidth=50; screenheight=24; wallchar='#'; snakechar='*'; ; type point=record x,y:integer; end; var snake:array [0..500] of point; map:array [0..screenwidth,0..screenheight] of

这是现代软件工程课结对作业 ——小游戏“贪吃蛇”

Github代码链接 https://github.com/liangjianming/jieduizuoye 实验简介: 本次实验为合作实验 实验分工: 本次选择了经典的游戏贪吃蛇,相信大家都玩过,这次实验分工是这样的: 实验的逻辑框架为讨论之后得出: 如果顺利吃掉食物即为成功,并输出成功,如果撞到自己和墙即为失败,输出游戏失败,添加了一些简单的游戏界面,游戏监听器和线程等, 定义食物是随机的,由 random() 决定, 并控制了窗口大小坐标: 十位*60为横坐标 weix=(int)(fo

手把手教学h5小游戏 - 贪吃蛇

简单的小游戏制作,代码量只有两三百行.游戏可自行扩展延申. 源码已发布至github,喜欢的点个小星星,源码入口:game-snake 游戏已发布,游戏入口:http://snake.game.yanjd.top 第一步 - 制作想法 游戏如何实现是首要想的,这里我的想法如下: 利用canvas进行绘制地图(格子装). 利用canvas绘制蛇,就是占用地图格子.让蛇移动,即:更新蛇坐标,重新绘制. 创建四个方向按钮,控制蛇接下来的方向. 随机在地图上绘制出果子,蛇移动时"吃"到果子,增

JS的小游戏&quot;贪吃蛇&quot;

贪吃蛇儿时的回忆,今天刚好学习到这了,就刚好做了一个,也是学习了吧,需要掌握的知识: 1,JS函数的熟练掌握, 2,JS数组的应用, 3,JS小部分AJAX的学习 4,JS中的splice.shift等一些函数的应用, 基本上就这些吧,下面提重点部分: 前端的页面,这里可自行布局,我这边提供一个我自己的布局: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org

小游戏●贪吃蛇1(利用二维数组制作)

利用二维数组编写简单贪吃蛇小游戏,由于是初学C#,用的是单线程,所以蛇不会自动前进 代码及简要分析如下: 1 //定义地图,0为空,1为墙,2为蛇,3为食物 2 int[,] map = new int[15, 15]{ 3 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 4 {1,2,0,0,0,0,0,0,0,0,0,0,0,0,1}, 5 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, 6 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},

Java小游戏贪吃蛇

package snake; import java.awt.BorderLayout;import java.awt.Canvas;import java.awt.Color;import java.awt.Container;import java.awt.Graphics;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.Arrays;import java.util.Itera

控制台小游戏——贪吃蛇

网上看到的一个贪吃蛇程序,修复了一些bug(如可以直接转反方向,苹果与蛇重叠,撞到自身不会死亡等),下面是源代码. -------------------------------------------------------------------------------------------------- 1 #include<iostream> 2 #include<windows.h> 3 #include<time.h> 4 #include<stdl