一。背景介绍

90后小伙伴应该对坦克大战这款游戏很熟悉吧!!这款经典游戏,笔者小时候玩过无数次,大多数时候都是和小伙伴们一起开玩,相信对很多人来说,这款游戏还是记忆深处的珍藏品。当然,现在大家更热衷于英雄联盟、王者农药这样的游戏了。今天就和大家一起分享下,用python的pygame库制作的坦克大战游戏。

二。游戏介绍

打开游戏后是熟悉的主界面,关卡为两关,场景有石墙、钢墙和树林,其中红色土石墙(子弹可以打通),白色钢板(子弹打不通),树林坦克进去可以隐藏(子弹不隐藏),大本营由土墙包围,内部有老鹰的图腾,敌方坦克有三种,分别为 普通坦克、移速慢血多、移速快血少,打红色坦克会产生食物  不同的食物有不同的效果(子弹加速、大本营加固成钢板、坦克生命+1等)。我方坦克和敌方坦克出生会有简单特效。

当地方坦克全部死亡时  出现 Congratulations  字样,当我方坦克生命数为0或者大本营被击毁时  出现  Game Over  字样。

三。游戏文件

游戏代码部分由bullet.py、food.py、home.py、scene.py、tanks.py、main.py这六个文件组成,分别代表子弹、奖励物品、基地、场景、坦克及主文件。整个游戏主要基于Pygame库进行开发,各模块均用函数进行封装,以增强复用性,主文件的部分代码如下所示:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import sys

import os

import pygame

import scene

import bullet

import food

import tanks

import home

from pygame.locals import *

# 开始界面显示

def show_start_interface(screen, width, height):

tfont = pygame.font.Font('./font/times.ttf', width//4)

cfont = pygame.font.Font('./font/times.ttf', width//20)

title = tfont.render(u'Tank War', True, (255, 0, 0))

content1 = cfont.render(u'Press 1 for one player', True, (0, 0, 255))

content2 = cfont.render(u'Press 2 for two players', True, (0, 0, 255))

trect = title.get_rect()

trect.midtop = (width/2, height/4)

crect1 = content1.get_rect()

crect1.midtop = (width/2, height/1.8)

crect2 = content2.get_rect()

crect2.midtop = (width/2, height/1.6)

screen.blit(title, trect)

screen.blit(content1, crect1)

screen.blit(content2, crect2)

pygame.display.update()

while True:

for event in pygame.event.get():

if event.type == QUIT:

sys.exit()

elif event.type == pygame.KEYDOWN:

if event.key == pygame.K_1:

return 1

if event.key == pygame.K_2:

return 2

# 结束界面显示

def show_end_interface(screen, width, height, is_win):

bg_img = pygame.image.load("./images/others/background.png")

screen.blit(bg_img, (0, 0))

if is_win:

font = pygame.font.Font('./font/times.ttf', width//10)

content = font.render(u'Congratulations!', True, (255, 0, 0))

rect = content.get_rect()

rect.midtop = (width/2, height/2)

screen.blit(content, rect)

else:

fail_img = pygame.image.load("./images/others/gameover.png")

rect = fail_img.get_rect()

rect.midtop = (width/2, height/2)

screen.blit(fail_img, rect)

pygame.display.update()

while True:

for event in pygame.event.get():

if event.type == QUIT:

sys.exit()

除了代码文件外,游戏文件还包含音乐、字体、图片等文件,最终游戏的效果也非常接近小时候的味道~~

感兴趣的小伙伴可以关注“320科技工作室”的微信公众号,找管理员(qq:3045552826,微信:CAE320)获取源文件~~

坦克大战python_基于Python的坦克大战小游戏相关推荐

  1. 飞机大战游戏python_基于Python的飞机大战游戏

    基于 Python 的飞机大战游戏 杨铠 [期刊名称] <电脑迷> [年 ( 卷 ), 期] 2017(000)021 [摘要] 我们每天都享受到科技带来的好处 , 了解计算机编程对每个人 ...

  2. 基于Python实现的滑雪小游戏设计

    资源下载地址:https://download.csdn.net/download/sheziqiong/86781951 资源下载地址:https://download.csdn.net/downl ...

  3. 基于 Python 制作吃豆豆小游戏(文档和源码~)

    游戏简介: 玩家通过 ↑↓←→ 键控制游戏的主角吃豆人吃掉藏在迷宫内的所有豆子,并且不能被鬼魂抓到. 若能顺利吃完迷宫内的所有豆子并且不被鬼魂抓到,则游戏胜利,否则游戏失败. 实现过程~: Step1 ...

  4. python 游戏开发框架_Python开发 基于python实现坦克大战游戏

    这篇文章主要为大家详细介绍了基于python实现坦克大战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了python实现坦克大战游戏的具体代码, ...

  5. 基于python的飞机大战游戏设计与实现

    基于python的飞机大战游戏设计与实现,采用MySQL+pygame+Tkinter实现飞机大战游戏,主要功能有注册+登录+游戏初始化(开始游戏+游戏操作说明+版权信息)+游戏主界面[设置敌机种类并 ...

  6. c 语言500行小游戏代码,500行代码使用python写个微信小游戏飞机大战游戏.pdf

    500行行代代码码使使用用python写写个个微微信信小小游游戏戏飞飞机机大大战战游游戏戏 这篇文章主要介绍了500行代码使用python写个微信小游戏飞机大战游戏,本文通过实例代码给大家介绍的非常详 ...

  7. python点名代码_基于python tkinter的点名小程序功能的实例代码

    基于python tkinter的点名小程序功能的实例代码,花名册,次数,窗口,未找到,初始化 基于python tkinter的点名小程序功能的实例代码 易采站长站,站长之家为您整理了基于pytho ...

  8. python登录界面源码_基于Python的自媒体小助手---登录页面的实现代码

    核心技术:Python3.7 GUI技术:Tkinter (Python已经内置) 好多文章写Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 我看了N遍也没够好多东西都没有就基 ...

  9. 基于Python的人机博弈象棋游戏的设计与实现

    源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ 基于Python的人机博弈象棋游戏的设计与实现

  10. 基于python的游戏设计与实现-基于Python的网络中国象棋游戏设计与实现

    基于Python的网络中国象棋游戏设计与实现 摘要中国象棋是一种家喻户晓的棋类游戏,随着互联网时代的到来,人们的娱乐方式也逐渐向PC端和移动端上发展.本文将传统的中国象棋游戏和当下的互联网技术结合作为 ...

最新文章

  1. Kali linux 2016.2(Rolling)中metasploit的端口扫描
  2. 今天 CSDN 编辑器的一个惊人的变化
  3. 3.分布式文件系统HDFS之二
  4. ABAP更改程序的请求包操作
  5. Leedcode4-sort listnode 归并排序
  6. 操作系统之文件管理:6、文件的基本操作(创建文件、打开文件、删除文件、关闭文件、读文件、写文件)
  7. wpf treeview调整子菜单间距_完全由C编写,高度可移植,超级牛逼的菜单架构!...
  8. flex 学习笔记 皮肤(一)
  9. java代码操作注册表,java操作注册表范例代码
  10. 参观云栖小镇体会_云栖小镇感受
  11. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第2节 maven的安装和仓库种类_04maven的安装...
  12. 基于ASP.NET的网上驾校管理系统设计与实现
  13. 计算机打印共享打印机,教您电脑打印机共享怎么设置
  14. 聊天记录软件工作记录
  15. 英特尔PX3网吧解决方案体验会在京举行(转)
  16. word中图片不显示怎么办
  17. python怎么使用库里的pi_python怎么调用pi
  18. php微信小程序毕业设计 php后台驾校考试小程序毕业设计开题报告功能参考
  19. hexo如何进行hexo的博客编写
  20. R语言笔记一:R软件的下载、界面简介、帮助文档

热门文章

  1. mysql实现了四种通信协议_MySQL 通信协议
  2. 【图像检索】基于matlab GUI Hu不变矩图像检索【含Matlab源码 1508期】
  3. 【肌电信号】基于matlab GUI脉搏信号处理系统【含Matlab源码 1062期】
  4. 【电路仿真】基于matlab Simulink光伏太阳能电池板仿真模型【含Matlab源码 771期】
  5. 计算机物联网软件工程,关于计算机物联网的应用分析
  6. 在access中一列称为_ACCESS考试_笔试
  7. apollo源码分析 感知_Scikit-Learn 源码研读 (第一期)项目结构介绍
  8. nginx upstream配置_效率倍增!网易杭研Nginx自动扩缩容实践
  9. android中listview没有item也能点击事件,ListView中的Item不能点击的解决方法
  10. 无土栽培中的物联网技术应用