| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> pygame简单游戏 飞机大战 -> 正文阅读 |
|
[游戏开发]pygame简单游戏 飞机大战 |
import?pygame import?random import?math from?pygame.constants?import?TIMER_RESOLUTION
pygame.init() score_value?=?0 font?=?pygame.font.Font('freesansbold.ttf',?32) textX?=?10 textY?=?10
def?show_score(x,?y): ????score?=?font.render("Score?:"?+?str(score_value),?True,?(255,?255,?255)) ????screen.blit(score,?(x,?y))
#?屏幕和图片引入 screen?=?pygame.display.set_mode((1000,?700)) icon?=?pygame.image.load("master2.jpg") rocket?=?pygame.image.load("ship.png") bulletImg?=?pygame.image.load("bullet.png") background?=?pygame.image.load("background.jpg") pygame.display.set_icon(icon) pygame.display.set_caption("油管版外星人大战")
#?火箭参数 rocketX?=?460 rocketY?=?550 player_changex?=?0 player_changey?=?0 #?敌人参数 enemy_image?=?[] enemyX?=?[] enemyY?=?[] enemy_changex?=?[] enemy_changey?=?[] num_of_enemys?=?5 for?i?in?range(num_of_enemys): ????enemy_image.append(pygame.image.load("ufo2.png")) ????enemyX.append(random.randint(0,?1000)) ????enemyY.append(random.randint(0,?300)) ????enemy_changex.append(0.3) ????enemy_changey.append(30) #?子弹参数 bulletx?=?0 bullety?=?rocketY bullet_changex?=?0 bullet_changey?=?1 bullet_state?=?"ready" #?火箭函数
def?rocket_player(x,?y): ????screen.blit(rocket,?(x,?y)) #?敌人函数
def?enemy_set(x,?y,?i): ????screen.blit(enemy_image[i],?(x,?y)) #?子弹函数
def?fire_bullet(x,?y): ????global?bullet_state ????bullet_state?=?"fire" ????screen.blit(bulletImg,?(x+50,?y)) #?碰撞函数
def?boom(enemyX,?enemyY,?bulletx,?bullety): ????distance?=?math.sqrt((math.pow(enemyX-bulletx,?2))?+ ?????????????????????????(math.pow(enemyY-bullety,?2))) ????if?distance?<=?50: ????????return?True ????else: ????????return?False
#?主循环 message?=?True while?message: ????screen.fill((0,?0,?0)) ????screen.blit(background,?(0,?0)) ????for?event?in?pygame.event.get(): ????????if?event.type?==?pygame.QUIT: ????????????message?=?False ????????if?event.type?==?pygame.KEYDOWN: ????????????if?event.key?==?pygame.K_LEFT: ????????????????player_changex?+=?-1 ????????????if?event.key?==?pygame.K_RIGHT: ????????????????player_changex?+=?1 ????????????if?event.key?==?pygame.K_SPACE: ????????????????if?bullet_state?is?"ready": ????????????????????bulletx?=?rocketX ????????????????????fire_bullet(bulletx,?bullety) ????????if?event.type?==?pygame.KEYUP: ????????????if?event.key?==?pygame.K_LEFT?or?event.key?==?pygame.K_RIGHT: ????????????????player_changex?=?0 ????rocketX?+=?player_changex ????rocketY?+=?player_changey ????if?rocketX?<=?0: ????????rocketX?=?0 ????elif?rocketX?>=?850: ????????rocketX?=?850 ????elif?rocketY?<=?0: ????????rocketY?=?0 ????elif?rocketY?>=?550: ????????rocketY?=?550 ????for?i?in?range(num_of_enemys): ????????enemyX[i]?+=?enemy_changex[i] ????????if?enemyX[i]?<=?0: ????????????enemyX[i]?=?0.3 ????????????enemy_changex[i]?=?+0.5 ????????????enemyY[i]?+=?enemy_changey[i] ????????work?=?boom(enemyX[i],?enemyY[i],?bulletx,?bullety) ????????if?work: ????????????bullety?=?rocketY ????????????bullet_state?=?"ready" ????????????score_value?+=?1 ????????????enemyX[i]?=?random.randint(0,?1000) ????????????enemyY[i]?=?random.randint(0,?300) ????????enemy_set(enemyX[i],?enemyY[i],?i) ????????if?enemyX[i]?>=?850: ????????????enemyX[i]?=?850 ????????????enemy_changex[i]?=?-0.5 ????????????enemyY[i]?+=?enemy_changey[i] ????if?bullety?<=?0: ????????bullety?=?rocketY ????????bullet_state?=?"ready" ????elif?bullet_state?is?"fire": ????????fire_bullet(bulletx,?bullety) ????????bullety?-=?bullet_changey ????rocket_player(rocketX,?rocketY) ????show_score(textX,?textY) ????pygame.display.update() ? ? ? ? ? ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 0:51:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |