kisses小游戏

大家应该没有人没有玩过贪吃蛇小游戏吧,今天在初学Python的时候,利用现有的贪吃蛇代码进行修改,变成了情侣间的kisses小游戏。其实在写的时候脑子里一直都在唱“你追我如果你追到我,我就.......”

这段游戏并不是对游戏设计进行讨论学习,而是加了这些部分,进入界面、蛇头替换成照片,以及得分记录。

另外,还要感谢一下贪吃蛇的原作者,因为时间有些长了,找不到原来出处,如果有任何冒犯,请及时联系我,必将第一时间删除。


目录

kisses小游戏

前言

一、kisses是什么

二、实现步骤

1.加入开始界面

2.插入头像

3.显示得分

三、总结

四、完整代码

1.修改完成游戏代码

2.原游戏代码段

​​​​​​


前言

如果初学者感兴趣,可以类似做着学习,给女朋友一个小惊喜吧。


一、kisses是什么

类比于贪吃蛇来讲,女朋友(下文简称可可)是一条漂亮苗条的蛇,我呢就是一个香甜可口的果子等着他来吃,我站在原地,等可可追到我的时候,蛇就吃到了果子,而可可就emmm,kisses+1.


二、实现步骤

1.加入开始界面

由于刚学习了tkinter,于是就直接引入tkinter的库制作了下面一个很简单的进入界面。

def app():root.title("snake")root.geometry("300x200+600+250")l1 = tk.Label(root, text="kisses", font=("微软雅黑", 30), fg="black")l1.pack(ipadx=100, ipady=50, anchor="center")button1 = tk.Button(root, text="start",  bg="orange", width=6, height=10, font=("微软雅黑", 16), command=start)button1.pack(ipadx=10, ipady=8, anchor="center")root.mainloop()

虽然看着还是很简陋,但是比一开始就进行游戏有好多了。

图1 进入界面

点击start进入start模块,代码如下:

def start():root.destroy()snake = Snake()snake.initialize()

root.destroy保证单机开始按钮之后,开始界面消失。接下来就是游戏部分了

2.插入头像

在网上学习的方法中,还有设置界面等,由于游戏本身就有,所以我的代码就不重复设置了。方法可以自行搜索python显示加载图片的方法。比如:pygame显示图片的方法_pygame系列教程——1.2加载及显示图片(转载自凉快一点点)

snake_img = pygame.image.load("F:\\code\\python\\photo\\111.jpg").convert()
fruit_img = pygame.image.load("F:\\code\\python\\photo\\222.jpg").convert()for position in snakebody:pygame.draw.rect(playSurface, self.white, Rect(position[0], position[1], 20, 20))  # 蛇的身体playSurface.blit(fruit_img, (targetPosition[0], targetPosition[1]))playSurface.blit(snake_img, (snakePosition[0], snakePosition[1]))pygame.display.flip()

3.显示得分

首先,在判断蛇吃掉果实这里加入得分记数

            # 判断蛇是否吃掉了果实snakebody.insert(0, list(snakePosition))if snakePosition[0] == targetPosition[0] and snakePosition[1] == targetPosition[1]:targetflag = 0score += 1

然后,这里设置显示的字体大小位置等,具体方法可以参考pygame游戏开发系列3-显示文字(转载自 酒坛坛儿^_^)

font = pygame.font.SysFont('times', 20)
text = font.render('kisses:%d'%score, True, (0, 0, 0), (255, 255, 255))
playSurface.blit(text, (300, 0))
pygame.display.flip()

还有一步,在初始化的模块里设置score=0


三、总结

游戏效果如下:

图2 游戏效果

图3 原游戏效果


四、完整代码

1.修改完成游戏代码

import random
import sys
import tkinter as tkimport pygame
from pygame import *"""pyinstaller -F -w snake.py"""def start():root.destroy()snake = Snake()snake.initialize()class Snake:# 制作背景和蛇、果实的的颜色, 0-255,  0,0,0,是代表黑色,  255,255,255代表白色def __init__(self):self.black = pygame.Color(0, 0, 0)self.red = pygame.Color(255, 0, 0)self.white = pygame.Color(255, 255, 255)def gameover(self):pygame.quit()sys.exit()def initialize(self):pre=80pygame.init()# 定义蛇运动的速度clock = pygame.time.Clock()# 定义一个游戏界面playSurface = pygame.display.set_mode((800, 600))# 设置界面名字pygame.display.set_caption('python贪吃蛇小游戏')# 初始化变量snakePosition = [80, 80]  # 贪吃蛇起始位置,前面的参数数水平方向的距离,后面的参数是垂直方向的距离# 贪吃蛇的长度,设定为方块的三百,每个方块的长度为25snakebody = [[80, 80], [60, 80], [20, 80]]targetPosition = [200, 400]  # 方块的初始位置targetflag = 1  # 定义一个标记,目的用来判断果实是否被吃掉direction = 'right'  # 初始化运动方向changeDirection = direction  # 改变方向变量score=0self.main(score, snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface, clock)def main(self, score, snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface,clock):while True:# 用循环来获得pygame中的所有事件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'print('向右')if event.key == K_LEFT:changeDirection = 'left'print("向左")if event.key == K_DOWN:print('向下')changeDirection = 'down'if event.key == K_UP:print('向上')changeDirection = 'up'# 判断是否按下了esc键if event.key == K_ESCAPE:pygame.event.post(pygame.event.Event(QUIT))# 判断蛇的方向if changeDirection == 'left' and not direction == 'right':direction = changeDirectionif changeDirection == 'right' and not direction == 'left':direction = changeDirectionif changeDirection == 'down' and not direction == 'up':direction = changeDirectionif changeDirection == 'up' and not direction == 'down':direction = changeDirection# 根据方向移动蛇头位置if direction == 'right':snakePosition[0] += 20if direction == 'left':snakePosition[0] -= 20if direction == 'up':snakePosition[1] -= 20if direction == 'down':snakePosition[1] += 20# 增加蛇的长度# 判断蛇是否吃掉了果实snakebody.insert(0, list(snakePosition))if snakePosition[0] == targetPosition[0] and snakePosition[1] == targetPosition[1]:targetflag = 0score += 1else:snakebody.pop()# 随机再生成一个新的方块if targetflag == 0:x = random.randrange(1, 40)  # 水平方向y = random.randrange(1, 30)  # 垂直方向targetPosition = [int(x * 20), int(y * 20)]targetflag = 1# 绘制显示图playSurface.fill("orange")  # 背景font = pygame.font.SysFont('times', 20)text = font.render('kisses:%d'%score, True, (0, 0, 0), (255, 255, 255))playSurface.blit(text, (300, 0))pygame.display.flip()snake_img = pygame.image.load("F:\\code\\python\\photo\\111.jpg").convert()fruit_img = pygame.image.load("F:\\code\\python\\photo\\222.jpg").convert()for position in snakebody:pygame.draw.rect(playSurface, self.white, Rect(position[0], position[1], 20, 20))  # 蛇的身体playSurface.blit(fruit_img, (targetPosition[0], targetPosition[1]))playSurface.blit(snake_img, (snakePosition[0], snakePosition[1]))#pygame.draw.rect(playSurface, self.red, Rect(snakePosition[0], snakePosition[1], 20, 20))  # 蛇的身体#pygame.draw.rect(playSurface, self.red, Rect(targetPosition[0], targetPosition[1], 20, 20))  # 果实pygame.display.flip()# 游戏结束pygame.display.flip()if snakePosition[0] > 900 or snakePosition[0] < 0:Snake().gameover()elif snakePosition[1] > 800 or snakePosition[1] < 0:Snake().gameover()for i in snakebody[1:]:if snakePosition[0] == i[0] and snakePosition[1] == i[1]:Snake().gameover()# 控制游戏速度,值越大速度越快clock.tick(5)def app():root.title("snake")root.geometry("300x200+600+250")l1 = tk.Label(root, text="kisses", font=("微软雅黑", 30), fg="black")l1.pack(ipadx=100, ipady=50, anchor="center")button1 = tk.Button(root, text="start",  bg="orange", width=6, height=10, font=("微软雅黑", 16), command=start)button1.pack(ipadx=10, ipady=8, anchor="center")root.mainloop()if __name__ == '__main__':size=10root = tk.Tk()app()

2.原游戏代码段

import pygame
import sys
import random
from pygame.locals import *class Snake(object):# 制作背景和蛇、果实的的颜色, 0-255,  0,0,0,是代表黑色,  255,255,255代表白色def __init__(self):self.black = pygame.Color(0, 0, 0)self.red = pygame.Color(255, 0, 0)self.white = pygame.Color(255, 255, 255)def gameover(self):pygame.quit()sys.exit()def initialize(self):pygame.init()# 定义蛇运动的速度clock = pygame.time.Clock()# 定义一个游戏界面playSurface = pygame.display.set_mode((800, 600))# 设置界面名字pygame.display.set_caption('python贪吃蛇小游戏')# 初始化变量snakePosition = [80, 80]  # 贪吃蛇起始位置,前面的参数数水平方向的距离,后面的参数是垂直方向的距离# 贪吃蛇的长度,设定为方块的三百,每个方块的长度为25snakebody = [[80, 80], [60, 80], [40, 80]]targetPosition = [200, 400]  # 方块的初始位置targetflag = 1       # 定义一个标记,目的用来判断果实是否被吃掉direction = 'right'  # 初始化运动方向changeDirection = direction  # 改变方向变量self.main(snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface, clock)def main(self, snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface, clock):while True:# 用循环来获得pygame中的所有事件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'print('向右')if event.key == K_LEFT:changeDirection = 'left'print("向左")if event.key == K_DOWN:print('向下')changeDirection = 'down'if event.key == K_UP:print('向上')changeDirection = 'up'# 判断是否按下了esc键if event.key == K_ESCAPE:pygame.event.post(pygame.event.Event(QUIT))# 判断蛇的方向if changeDirection == 'left' and not direction == 'right':direction = changeDirectionif changeDirection == 'right' and not direction == 'left':direction = changeDirectionif changeDirection == 'down' and not direction == 'up':direction = changeDirectionif changeDirection == 'up' and not direction == 'down':direction = changeDirection# 根据方向移动蛇头位置if direction == 'right':snakePosition[0] += 20if direction == 'left':snakePosition[0] -= 20if direction == 'up':snakePosition[1] -= 20if direction == 'down':snakePosition[1] += 20# 增加蛇的长度# 判断蛇是否吃掉了果实snakebody.insert(0, list(snakePosition))if snakePosition[0] == targetPosition[0] and snakePosition[1] == targetPosition[1]:targetflag = 0else:snakebody.pop()# 随机再生成一个新的方块if targetflag == 0:x = random.randrange(1, 40)  # 水平方向y = random.randrange(1, 30)  # 垂直方向targetPosition = [int(x * 20), int(y * 20)]targetflag = 1# 绘制显示图playSurface.fill(self.black)  # 背景for position in snakebody:pygame.draw.rect(playSurface, self.white, Rect(position[0], position[1], 20, 20))  # 蛇的身体pygame.draw.rect(playSurface, self.red, Rect(targetPosition[0], targetPosition[1], 20, 20))  # 果实# 游戏结束pygame.display.flip()if snakePosition[0] > 900 or snakePosition[0] < 0:snake.gameover()elif snakePosition[1] > 800 or snakePosition[1] < 0:snake.gameover()for i in snakebody[1:]:if snakePosition[0] == i[0] and snakePosition[1] == i[1]:snake.gameover()# 控制游戏速度,值越大速度越快clock.tick(5)snake = Snake()
snake.initialize()

python实现kisses小游戏相关推荐

  1. python手机版做小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏...

    1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...

  2. python写游戏脚本-使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  3. python编程小游戏-使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  4. python小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏

    1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...

  5. python设计拼图小游戏_教你用Python自制拼图小游戏,轻松搞定熊孩子

    摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...

  6. 教你用Python自制拼图小游戏,轻松搞定熊孩子

    摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...

  7. 使用python制作聊天框解谜游戏_使用Python写一个小游戏alien invasion!

    最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下其中的 ...

  8. python拼图游戏编码_教你用Python自制拼图小游戏,轻松搞定熊孩子

    摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...

  9. Python学习—2048小游戏等4个小练习

    Python学习-2048小游戏等4个小练习 转载于:https://www.cnblogs.com/ChangAn223/p/10627777.html

最新文章

  1. 网络营销——网站权重并不是判断网站营销水平的唯一标准
  2. Less学习笔记 -- Mixins(混合)一
  3. 在.c文件中调用cuda函数
  4. 一个 .Net Hashtable 的锁的疑惑和解决
  5. 力扣--91. 解码方法
  6. Android常见命令
  7. 来喽,来喽,Python 3.9正式版发布了~~~
  8. Fedora core 2下建立Poptop服务器以及常见问题
  9. 算子,滤波器,卷积模板,卷积核的概念比较
  10. 计算语言学和自然语言信息处理研究和应用综述(一)
  11. matlab作图函数的总结与分析.pdf,Matlab作图函数的总结与分析_黄琼湘
  12. 【java线程篇】守护线程(Deamon)
  13. 手把手教你搭建使用NuGet私有源
  14. 2023内蒙古大学计算机考研信息汇总
  15. 肝进ICU,万字真言点化八大排序——我奶奶都看得懂的算法详解
  16. 《ESP32-Arduino开发》GUI设计 LVGL 开发环境搭建教程(从工程目录到模拟器)
  17. C++基础——向上取整/向下取整
  18. Windows11中文原版镜像系统ISO下载
  19. 计算机网络之CPT实验
  20. 写了个移动端可滑动(惯性滑动回弹)Vue导航栏组件 ly-tab

热门文章

  1. ESPCMSP8系统短信接口替换
  2. Java正则表达式(一看就懂)
  3. loadrunner压力测试学习笔记
  4. html数值转换,Qunee for HTML5 - 中文 : 数据转换
  5. 实验三 图像复原(源代码一站式复制粘贴)
  6. 从业余项目到全世界最受欢迎的编程语言之一,Rust 是如何做到的?
  7. POI之PPT文本框生成及样式设置实例
  8. 基于仿真模拟的弹道导弹封锁跑道效能分析
  9. c# 识别图片的颜色值即RGB值
  10. RFID网络读卡器通讯协议