前言

作者:& ampquot程序员木木& ampquot

* *文章简介* *:这篇文章主要是用Pygame写的仓鼠游戏~

* *句子来源可以免费获得。我的小可爱,句子,酱,酱,酱,酱,酱,酱,酱,酱。

共享点滴

私信小编06就可以了~

赞词、所长、评论

正文

嘻嘻!我是牧羊人同学~

玩仓鼠游戏谁都不会陌生。曾经流行过。不管是电脑上的小游戏,还是手里能拿的小游戏。

球球,不难看到玩仓鼠游戏的样子。

今天我们要利用 Pygame模块,制作一个代码仿制的《打地鼠》游戏给大家!

运行环境

本文用到的环境:Py、Pycharm社区版、Pygame游戏模块自带的就不展示啦。

pip install -i +模块名

效果展示

1)游戏界面

2)游戏界面

代码展示

1)配置文件

import os '''屏幕大小''' SCREENSIZE = (993, 477) '''游戏素材路径''' ROOTDIR = os.getcwd() HAMMER_IMAGEPATHS = [os.(ROOTDIR, 'resources/image;), os.(ROOTDIR, 'resources/image;)] GAME_BEGIN_IMAGEPATHS = [os.(ROOTDIR, 'resources/image;), os.(ROOTDIR, 'resources/image;)] GAME_AGAIN_IMAGEPATHS = [os.(ROOTDIR, 'resources/image;), os.(ROOTDIR, 'resources/image;)] GAME_BG_IMAGEPATH = os.(ROOTDIR, 'resources/image;) GAME_END_IMAGEPATH = os.(ROOTDIR, 'resources/image;) MOLE_IMAGEPATHS = [ os.(ROOTDIR, 'resources/image;), os.(ROOTDIR, 'resources/image;), os.(ROOTDIR, 'resources/image;), os.(ROOTDIR, 'resources/image;) ] BGM_PATH = os.(ROOTDIR, 'resources/audio;) COUNT_DOWN_SOUND_PATH = os.(ROOTDIR, 'resources/audio;) HAMMERING_SOUND_PATH = os.(ROOTDIR, 'resources/audio;) FONT_PATH = os.(ROOTDIR, 'resources/fon;) '''游戏常量参数设置''' HOLE_POSITIONS = [(90, -20), (405, -20), (720, -20), (90, 140), (405, 140), (720, 140), (90, 290), (405, 290), (720, 290)] BROWN = (150, 75, 0) WHITE = (255, 255, 255) RED = (255, 0, 0) RECORD_PATH = ';

2)主程序

import cfg import sys import pygame import random from modules import * '''游戏初始化''' def initGame(): () () screen = ) ('打地鼠') return screen '''主函数''' def main(): # 初始化 screen = initGame() # 加载背景音乐和其他音效 ) (-1) audios = { 'count_down': ), 'hammering': ) } # 加载字体 font = , 40) # 加载背景图片 bg_img = pygame.image.load) # 开始界面 startInterface(screen, c) # 地鼠改变位置的计时 hole_pos = random.choice) change_hole_event = (change_hole_event, 800) # 地鼠 mole = Mole, hole_pos) # 锤子 hammer = Hammer, (500, 250)) # 时钟 clock = () # 分数 your_score = 0 flag = False # 初始时间 init_time = () # 游戏主循环 while True: # --游戏时间为60s time_remain = round((61000 - (() - init_time)) / 1000.) # --游戏时间减少, 地鼠变位置速度变快 if time_remain == 40 and not flag: hole_pos = random.choice) mole.reset() mole.setPosition(hole_pos) (change_hole_event, 650) flag = True elif time_remain == 20 and flag: hole_pos = random.choice) mole.reset() mole.setPosition(hole_pos) (change_hole_event, 500) flag = False # --倒计时音效 if time_remain == 10: audios['count_down'].play() # --游戏结束 if time_remain < 0: break count_down_text = ('Time: '+str(time_remain), True, c) # --按键检测 for event in (): if event.type == : () () elif event.type == : ()) elif event.type == : if event.button == 1: () elif event.type == change_hole_event: hole_pos = random.choice) mole.reset() mole.setPosition(hole_pos) # --碰撞检测 if and not mole.is_hammer: is_hammer = (hammer, mole) if is_hammer: audios['hammering'].play() mole.setBeHammered() your_score += 10 # --分数 your_score_text = ('Score: '+str(your_score), True, c) # --绑定必要的游戏元素到屏幕(注意顺序) (bg_img, (0, 0)) (count_down_text, (875, 8)) (your_score_text, (800, 430)) mole.draw(screen) (screen) # --更新 () clock.tick(60) # 读取最佳分数(try块避免第一次游戏无.rec文件) try: best_score = int(open).read()) except: best_score = 0 # 若当前分数大于最佳分数则更新最佳分数 if your_score > best_score: f = open, 'w') f.write(str(your_score)) f.close() # 结束界面 score_info = {'your_score': your_score, 'best_score': best_score} is_restart = endInterface(screen, c, c, score_info, c, [c, c], c) return is_restart '''run''' if __name__ == '__main__': while True: is_restart = main() if not is_restart: break

小结

安啦!文章就写到这里,你们的支持是我最大的动力,记得三连哦~

关注小编获取更多精彩内容!记得点击传送门哈

记得三连哦! 如需打包好的完整源码+素材免费分享滴!

所有文章完整的素材+源码都在

私信小编06即可免费啦~