前言

我是栗子——除了《Python入门到实战系列》!

额外之余还会给大家讲解各种小案例、小游戏哦~关注我不迷路啦。

今天给大家做一款简单的童年经典小游戏——打地鼠给大家解解闷!

项目简介

1)项目名称:

Python版打地鼠

2)环境安装:

本文用到了Python、Pycharm、Pygame模块。这款打地鼠小游戏界面设计比较简单可以试着自己制作一下!当然刚接触的新手肯定还是不会自己写的  BUT 可以直接拿源码上手玩儿哈哈.jpj

3)游戏规则:

在相应的时间内,打中的地鼠越多分数越高,到时间即游戏自动结束。(可以设置时间)

4)最终效果:

开始界面:欢乐打地鼠。

 游戏界面:

 结束界面:

项目的步骤

1)开始界面

import sys
import pygame'''游戏开始界面'''
def startInterface(screen, begin_image_paths):begin_images = [pygame.image.load(begin_image_paths[0]), pygame.image.load(begin_image_paths[1])]begin_image = begin_images[0]while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()elif event.type == pygame.MOUSEMOTION:mouse_pos = pygame.mouse.get_pos()if mouse_pos[0] in list(range(419, 574)) and mouse_pos[1] in list(range(374, 416)):begin_image = begin_images[1]else:begin_image = begin_images[0]elif event.type == pygame.MOUSEBUTTONDOWN:mouse_pos = pygame.mouse.get_pos()if event.button == 1 and mouse_pos[0] in list(range(419, 574)) and mouse_pos[1] in list(range(374, 416)):return Truescreen.blit(begin_image, (0, 0))pygame.display.update()

2)主程序

import cfg
import sys
import pygame
import random
from modules import *'''游戏初始化'''
def initGame():pygame.init()pygame.mixer.init()screen = pygame.display.set_mode(cfg.SCREENSIZE)pygame.display.set_caption('打地鼠')return screen'''主函数'''
def main():# 初始化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.USEREVENTpygame.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 = 0flag = False# 初始时间init_time = pygame.time.get_ticks()# 游戏主循环while True:# --游戏时间为60stime_remain = round((61000 - (pygame.time.get_ticks() - init_time)) / 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 = Trueelif 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: breakcount_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)# 读取最佳分数(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'''run'''
if __name__ == '__main__':while True:is_restart = main()if not is_restart:break

3)结束界面

import sys
import pygame'''结束界面'''
def endInterface(screen, end_image_path, again_image_paths, score_info, font_path, font_colors, screensize):end_image = pygame.image.load(end_image_path)again_images = [pygame.image.load(again_image_paths[0]), pygame.image.load(again_image_paths[1])]again_image = again_images[0]font = pygame.font.Font(font_path, 50)your_score_text = font.render('Your Score: %s' % score_info['your_score'], True, font_colors[0])your_score_rect = your_score_text.get_rect()your_score_rect.left, your_score_rect.top = (screensize[0] - your_score_rect.width) / 2, 215best_score_text = font.render('Best Score: %s' % score_info['best_score'], True, font_colors[1])best_score_rect = best_score_text.get_rect()best_score_rect.left, best_score_rect.top = (screensize[0] - best_score_rect.width) / 2, 275while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()elif event.type == pygame.MOUSEMOTION:mouse_pos = pygame.mouse.get_pos()if mouse_pos[0] in list(range(419, 574)) and mouse_pos[1] in list(range(374, 416)):again_image = again_images[1]else:again_image = again_images[0]elif event.type == pygame.MOUSEBUTTONDOWN:mouse_pos = pygame.mouse.get_pos()if event.button == 1 and mouse_pos[0] in list(range(419, 574)) and mouse_pos[1] in list(range(374, 416)):return Truescreen.blit(end_image, (0, 0))screen.blit(again_image, (416, 370))screen.blit(your_score_text, your_score_rect)screen.blit(best_score_text, best_score_rect)pygame.display.update()

结尾

你学废了嘛?快来跟我一起学习吧!关注小编,每天更新精彩内容哦~

【经典游戏系列】回忆杀?扒一扒那些年我们玩过的打地鼠小游戏。相关推荐

  1. python开发微信小游戏大全_【python】用python玩微信跳一跳小游戏

    Python微信跳一跳实验报告 Step 1 准备工具:一台安卓手机,Windows10,python3,adb驱动,依赖的各种python库 Step 2 PiP安装:下面列出需要安装的库: bac ...

  2. 如何用python制作五子棋游戏_Python制作打地鼠小游戏

    原文链接 Python制作小游戏(二十一)​mp.weixin.qq.com 效果展示 打地鼠小游戏https://www.zhihu.com/video/1200492442610450432 简介 ...

  3. linux打地鼠游戏代码,JavaScript实现打地鼠小游戏

    一.实验说明 1. 环境介绍 本实验环境采用Ubuntu Linux桌面环境,实验中会用到桌面上的程序: Xfce终端: Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令 Fir ...

  4. python打地鼠代码_vue实现打地鼠小游戏

    本文实例为大家分享了vue实现打地鼠小游戏的具体代码,供大家参考,具体内容如下 效果图如下: 代码如下: 打地鼠游戏 {{n}}号地鼠 设置参数 速度: 总数: 开始 统计分数面板 总数: {{TOT ...

  5. java 打地鼠 源代码_Java实现的打地鼠小游戏完整示例【附源码下载】

    本文实例讲述了Java实现的打地鼠小游戏.分享给大家供大家参考,具体如下: 这里涉及到java线程和GUI的相关知识,一个简单的java小游戏打地鼠,有兴趣的朋友可以优化一下.先来看看运行效果: 具体 ...

  6. 敲地鼠java_Java实现的打地鼠小游戏完整示例【附源码下载】

    本文实例讲述了Java实现的打地鼠小游戏.分享给大家供大家参考,具体如下: 这里涉及到java线程和GUI的相关知识,一个简单的java小游戏打地鼠,有兴趣的朋友可以优化一下.先来看看运行效果: 具体 ...

  7. 利用python做一个小游戏_如何使用python做一个简单的猜数字的小游戏

    1 首先小编先打开IDLE,如下图: 2 然后这里点击菜单栏的'File',然后点击菜单"New File",如下图: 3 然后我们就在idle中新建了一个python文件,如下图 ...

  8. java android 打地鼠_Android实现打地鼠小游戏

    本文实例为大家分享了Android实现打地鼠小游戏的具体代码,供大家参考,具体内容如下 实现结果 代码实现 playmouse.java package com.example.playmouse; ...

  9. 【180730】WinForm打地鼠小游戏源码

    本源码是采用WinForm进行开发的一个并非简单的打地鼠小游戏,有动画效果哈!有打地鼠.计分.过关等功能. 菜单功能: 1.运行游戏后,输入玩家姓名,点击开始 2.用鼠标点击从洞中钻出的地鼠给予打击 ...

  10. android打地鼠设计报告,android开发中利用handler制作一个打地鼠小游戏

    android开发中利用handler制作一个打地鼠小游戏 发布时间:2020-11-25 15:21:11 来源:亿速云 阅读:136 作者:Leah 这期内容当中小编将会给大家带来有关androi ...

最新文章

  1. Java八大基本数据类型和对应的封装类型
  2. 单片机、ARM、DSP与CPU之间的关系大揭秘
  3. CPUID详解[增加TLB与Cache]
  4. 客制化键盘键位修改_IQUNIX Slim87 RGB机械键盘评测
  5. 信息学奥赛一本通 2052:【例3.2】范围判断
  6. Ubuntu帮大忙了
  7. flask json传输失败_GO小知识之实例演示 json 如何转化为 map 和 struct
  8. 华中农业大学第五届程序设计大赛 (7/12)
  9. 淘宝分类大全及其分组 (MySql, xls)文件,上下关系,拼写,层级,层级树,提示,2022年2月28日数据
  10. CAD迷你看图2019破解版|CAD迷你看图2019R5中文破解版下载
  11. msm8937 64位开发概要
  12. 微信小程序服务器向客户端发送通知消息,微信小程序消息推送
  13. Cassandra Secondary Index 介绍
  14. 帝国 cms 列表 php,帝国cms数据表详细中文说明
  15. 《Adobe Flash CS6中文版经典教程》——1.9 预览影片
  16. 贝塞尔曲线想到的--真的很美,但是有时很丑
  17. Java-根据IP获取对应位置信息
  18. 淘宝宝贝详情栏固定位置的效果实现
  19. 【目标定位】基于matlab粒子滤波的定位算法【含Matlab源码 2161期】
  20. NLP 中文分词-双向匹配算法(理论+Python实现)

热门文章

  1. ov7725摄像头--图像中间亮四周暗
  2. vue开发企业微信应用-使用微信开发者工具
  3. 【重识云原生】第六章容器基础6.4.10.5节——Statefulset原理剖析
  4. Java程序员月薪多少K才能在北上广买得起房?
  5. 设计手机APP界面的感想
  6. [CTF]天网管理系统
  7. android获取通讯录号码,Android跳转到通讯录获取用户名称和手机号码的实现思路...
  8. 26岁摩拜高管:“下不了手开除70、80后,公司死了谁负责?”
  9. 【干货干货!内附源码】多边形的面积及周长计算~java Swing开发可视化小程序,exe4j打包成exe可执行文件
  10. 微信企业号开发源码Java编写,懒人开发一键式部署项目,WeChatEnterprise框架你值得拥有