Python实现打地鼠游戏

目录
  • 开发工具
  • 相关模块
  • 环境搭建
  • 原理简介
  • 主要代码

开发工具

python版本:3.6.4

相关模块

pygame;以及一些python自带的模块。

环境搭建

安装python并添加到环境变量,pip安装需要的相关模块即可。

原理简介

打地鼠的游戏规则相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠呗~首先,让我们确定一下游戏中有哪些元素。打地鼠打地鼠,地鼠当然得有啦,那我们就写个地鼠的游戏精灵类呗 显然,地鼠有被锤子击中和未被锤子击中这两种状态,所以需要加载两张图,当地鼠被击中时从未被击中的地鼠状态图切换到被击中后的地鼠状态图(我找的图可能不太像地鼠,请各位老哥见谅)。然后我们再来定义一下锤子这个游戏精灵类,和地鼠类似,锤子也有未锤下去和已锤下去两种状态,只不过锤下去之后需要迅速恢复回未锤下去的状态,具体而言,代码实现如下:

主要代码

游戏初始化

def initGame():
	pygame.init()
	pygame.mixer.init()
	screen = pygame.display.set_mode(cfg.SCREENSIZE)
	pygame.display.set_caption('PythonQQ交流群:932574150')
	return screen

ok,将准备工作都做好啦,我们就可以开始写主程序啦。首先当然是我们的游戏初始化呀:

初始化

screen = initGame()

然后我们就要加载一下我们必要的游戏素材和必要的游戏变量 

# 加载背景音乐和其他音效
	pygame.mixer.music.load(cfg.BGM_PATH)
	pygame.mixer.music.play(-1)
	audios = {
				'count_down': pygame.mixer.Sound(cfg.COUNT_DOWN_SOUND_PATH),
				'hammering': pygame.mixer.Sound(cfg.HAMMERING_SOUND_PATH)
			}
	# 加载字体
	font = pygame.font.Font(cfg.FONT_PATH, 40)
	# 加载背景图片
	bg_img = pygame.image.load(cfg.GAME_BG_IMAGEPATH)
	# 开始界面
	startInterface(screen, cfg.GAME_BEGIN_IMAGEPATHS)
	# 地鼠改变位置的计时
	hole_pos = random.choice(cfg.HOLE_POSITIONS)
	change_hole_event = pygame.USEREVENT
	pygame.time.set_timer(change_hole_event, 800)
	# 地鼠
	mole = Mole(cfg.MOLE_IMAGEPATHS, hole_pos)
	# 锤子
	hammer = Hammer(cfg.HAMMER_IMAGEPATHS, (500, 250))
	# 时钟
	clock = pygame.time.Clock()
	# 分数
	your_score = 0
	flag = False

我注释了大家可以看看

下面就到我们的游戏主循环啦

# 游戏主循环
	while True:
		# --游戏时间为60s
		time_remain = round((61000 - pygame.time.get_ticks()) / 1000.)
		# --游戏时间减少, 地鼠变位置速度变快
		if time_remain == 40 and not flag:
			hole_pos = random.choice(cfg.HOLE_POSITIONS)
			mole.reset()
			mole.setPosition(hole_pos)
			pygame.time.set_timer(change_hole_event, 650)
			flag = True
		elif time_remain == 20 and flag:
			hole_pos = random.choice(cfg.HOLE_POSITIONS)
			mole.reset()
			mole.setPosition(hole_pos)
			pygame.time.set_timer(change_hole_event, 500)
			flag = False
		# --倒计时音效
		if time_remain == 10:
			audios['count_down'].play()
		# --游戏结束
		if time_remain < 0: break
		count_down_text = font.render('Time: '+str(time_remain), True, cfg.WHITE)
		# --按键检测
		for event in pygame.event.get():
			if event.type == pygame.QUIT:
				pygame.quit()
				sys.exit()
			elif event.type == pygame.MOUSEMOTION:
				hammer.setPosition(pygame.mouse.get_pos())
			elif event.type == pygame.MOUSEBUTTONDOWN:
				if event.button == 1:
					hammer.setHammering()
			elif event.type == change_hole_event:
				hole_pos = random.choice(cfg.HOLE_POSITIONS)
				mole.reset()
				mole.setPosition(hole_pos)
		# --碰撞检测
		if hammer.is_hammering and not mole.is_hammer:
			is_hammer = pygame.sprite.collide_mask(hammer, mole)
			if is_hammer:
				audios['hammering'].play()
				mole.setBeHammered()
				your_score += 10
		# --分数
		your_score_text = font.render('Score: '+str(your_score), True, cfg.BROWN)
		# --绑定必要的游戏元素到屏幕(注意顺序)
		screen.blit(bg_img, (0, 0))
		screen.blit(count_down_text, (875, 8))
		screen.blit(your_score_text, (800, 430))
		mole.draw(screen)
		hammer.draw(screen)
		# --更新
		pygame.display.flip()
		clock.tick(60)

逻辑很简单的,我就不多废话了,大家看看我写的注释60秒之后,游戏结束,我们就可以将分数统计起来然后和历史最高分做一下 对比:

# 读取最佳分数(try块避免第一次游戏无.rec文件)
	try:
		best_score = int(open(cfg.RECORD_PATH).read())
	except:
		best_score = 0
	# 若当前分数大于最佳分数则更新最佳分数
	if your_score > best_score:
		f = open(cfg.RECORD_PATH, 'w')
		f.write(str(your_score))
		f.close()

然后我们来让我们的游戏看着正式一点,整点仪式感,就添加一个开始界面和结束界面呗:

# 结束界面
	score_info = {'your_score': your_score, 'best_score': best_score}
	is_restart = endInterface(screen, cfg.GAME_END_IMAGEPATH, cfg.GAME_AGAIN_IMAGEPATHS, score_info, cfg.FONT_PATH, [cfg.WHITE, cfg.RED], cfg.SCREENSIZE)
	return is_restart

最后添加运行代码

if __name__ == '__main__':
	while True:
		is_restart = main()
		if not is_restart:
			break

到此这篇关于Python实现打地鼠游戏的文章就介绍到这了,更多相关Python打地鼠游戏内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C++实现打地鼠游戏设计

    本文实例为大家分享了C++实现打地鼠游戏的具体代码,供大家参考,具体内容如下 代码: #include <afxwin.h> class CMyWnd :public CFrameWnd { private: CDC *m_pmdc; CBitmap *m_pbitmap[5]; CRect myRect[6]; CString picPath[5]; int hit; BOOL m_state[6]; int counter; int num; int hammer_x; int hamme

  • 基于vue实现简易打地鼠游戏

    本文实例为大家分享了vue实现简易打地鼠游戏的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>打地鼠简易版</title> <script src="js/vue.js"></script> <style type="text/css"&g

  • Python实现问题回答小游戏

    目录 读取问题 绘制回答面板 回答问题 问题切换 完整代码 读取问题 如下所示,我们在文本中写了一个问题,然后将其读取出来. "黄河远上白云间,一片孤城万仞山."的作者是谁? 王之涣 李白 白居易 杜甫 file = open("1.txt", "r") question_coll = file.readlines() file.close() print(file) 运行之后发现报错,查询之后发现编码格式不正确. 设置了读取的编码格式发现可以读

  • python实现双人版坦克大战游戏

    游戏介绍: 双人版的<坦克大战>的基本规则是玩家消灭出现的敌方坦克保卫我方基地. 中间还会随机出现很多特殊道具吸收可获得相应的功能,消灭玩即可进入下一关. 方向键:上下左右移动即可.另一个方向键则是:WSAD. 环境配置: Python3. Pycharm .Pygame. 第三方库的安装:pip  install pygame 效果展示: 开始界面一一 开始即可上手玩游戏,还有背景音乐辅助!游戏玩儿起来更带感!  游戏界面-- 代码演示: 1)游戏主程序 import pygame impo

  • QT实现简单打地鼠游戏

    本文实例为大家分享了QT实现简单打地鼠游戏的具体代码,供大家参考,具体内容如下 开发工具:VS2017,qt5.9.8 开发语言:c++ 实现功能: 有若干地鼠洞,每次出现一只地鼠,当击中地鼠后,分数加1,地鼠更换位置.当分数大于20时,游戏结束. 实现思路: 1.先初始化一个页面,放一只地鼠和若干个地鼠洞,为地鼠和地鼠洞添加槽函数.  2.当点击时就执行相应函数.判断是否击中,从而对其进行加分或者减分.  3.当击中地鼠后,应该刷新页面,让地鼠换个位置出现.  4.重复2.3,直到分数到达一定

  • android实现打地鼠游戏

    今天上课老师用Java实现了打地鼠游戏的界面和具体逻辑,那么我也尝试使用Android语言实现其功能. 首先是打地鼠游戏的玩法 1.每隔1秒或者0.5秒地鼠会出现在九宫格中的任一位置 2.点击界面,如果地鼠出现的位置与点击位置相同,则认为打中地鼠.否则游戏继续. 3.打中地鼠后,游戏立即停止. 先上两张效果图 布局实现 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to

  • JavaScript实现打地鼠游戏

    本文实例为大家分享了JavaScript实现打地鼠游戏的具体代码,供大家参考,具体内容如下 游戏说明: 点击"开始游戏"按钮,在图中随机产生老鼠,老鼠消失前单击老鼠进行击打,打中一次即可获得100的积分,没有打中老鼠,扣取100积分 css模块 <style> #div0{ text-align: center; width: 1360px; height: 600px; margin: 60px auto; background-image: url("imag

  • Python实现打地鼠游戏

    目录 开发工具 相关模块 环境搭建 原理简介 主要代码 开发工具 python版本:3.6.4 相关模块 pygame:以及一些python自带的模块. 环境搭建 安装python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 打地鼠的游戏规则相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠呗~首先,让我们确定一下游戏中有哪些元素.打地鼠打地鼠,地鼠当然得有啦,那我们就写个地鼠的游戏精灵类呗 显然,地鼠有被锤子击中和未被锤子击中这两种状态,所以需要加载两张图,

  • Python Pygame实战之欢乐打地鼠游戏

    目录 导语 ​​​一.准备中 二.环境安装 ​三.开始敲代码 1)导入模块 2)不同的图片设置 3)界面头标.标题等. 4)音乐设置 5)右侧窗口控件不同的按钮设置 四.效果展示 导语 闲来无事: 铲屎官用废旧的纸箱,给猫主子做了一个打地鼠玩具,看,主子玩得不亦乐乎 打掉了——咦,怎么还有,怎么还有两个呢?是不是很心动呀?这可是和猫主子增进感情的好机会哦! ​ 哈哈哈!看完上面的简介知道我今天要做什么游戏了吧~嗯哼 对 今天来给大家写一款打地鼠小游戏,宅在家里的无聊的时候可以玩一玩啦!不过文末也

  • 基于Python制作打地鼠小游戏

    效果展示 打地鼠小游戏 简介 打地鼠的游戏规则相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠呗~ 首先,让我们确定一下游戏中有哪些元素.打地鼠打地鼠,地鼠当然得有啦,那我们就写个地鼠的游戏精灵类呗: '''地鼠''' class Mole(pygame.sprite.Sprite): def __init__(self, image_paths, position, **kwargs): pygame.sprite.Sprite.__init__(self) self.

  • JavaScript实现简单打地鼠游戏

    本文实例为大家分享了JavaScript实现打地鼠游戏的具体代码,供大家参考,具体内容如下 效果如下: html代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/index.js"></script> <link rel="s

  • Python计算斗牛游戏概率算法实例分析

    本文实例讲述了Python计算斗牛游戏概率算法.分享给大家供大家参考,具体如下: 过年回家,都会约上亲朋好友聚聚会,会上经常会打麻将,斗地主,斗牛.在这些游戏中,斗牛是最受欢迎的,因为可以很多人一起玩,而且没有技术含量,都是看运气(专业术语是概率). 斗牛的玩法是: 1. 把牌中的JQK都拿出来 2. 每个人发5张牌 3. 如果5张牌中任意三张加在一起是10的 倍数,就是有牛.剩下两张牌的和的10的余数就是牛数. 牌的大小: 4条 > 3条 > 牛十 > 牛九 > -- >

  • python编写弹球游戏的实现代码

    弹球游戏: from tkinter import * import time import random tk=Tk() #创建一个界面 tk.title("弹球游戏") canvas=Canvas(tk,width=800,height=600,bg="skyblue",bd=0,highlightthickness = 0) tk.resizable(0,0) #表示边框不能被拉伸 canvas.pack() #使部件放在主窗口中 tk.update() #刷

  • python实现五子棋游戏

    本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下 话不多说,直接上代码: 全部工程文件,在GitHub:五子棋 效果预览: #!/usr/bin/env python3 #-*- coding:utf-8 -*- import pygame from pygame.locals import * from sys import exit import numpy background_image = 'qipan.png' white_image = 'whit

  • 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.

随机推荐