import sys
import pygame
from bullet import Bullet
from alien import Alien
from time import sleep
def check_events(ai_settings,screen,stats,sb,play_button,ship,aliens,
bullets):
#response button & mouse
for event in pygame.event.get():
if event == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
check_keydown_events(event,ai_settings,screen,ship,bullets)
elif event.type == pygame.KEYUP:
check_keyup_events(event,ship)
elif event.type == pygame.MOUSEBUTTONDOWN:
mouse_x,mouse_y = pygame.mouse.get_pos()
check_play_button(ai_settings,screen,stats,sb,play_button,
ship,aliens,bullets,mouse_x,mouse_y)
def check_play_button(ai_settings,screen,stats,sb,play_button,ship,
aliens,bullets,mouse_x,mouse_y):
button_clicked = play_button.rect.collidepoint(mouse_x,mouse_y)
if button_clicked and not stats.game_active:
ai_settings.initialize_dynamic_settings()
pygame.mouse.set_visible(False)
stats.reset_stats()
stats.game_active = True
sb.prep_score()
sb.prep_high_score()
sb.prep_level()
sb.prep_ships()
aliens.empty()
bullets.empty()
create_fleet(ai_settings,screen,ship,aliens)
ship.center_ship()
def check_keydown_events(event,ai_settings,screen,ship,bullets):
#reponse button
if event.key == pygame.K_RIGHT:
#ship move to right
ship.moving_right = True
elif event.key == pygame.K_LEFT:
#ship move to left
ship.moving_left = True
elif event.key == pygame.K_SPACE:
fire_bullet(ai_settings,screen,ship,bullets)
elif event.key == pygame.K_q:
sys.exit()
def fire_bullet(ai_settings,screen,ship,bullets):
#build a bullet & join group(bullets)
if len(bullets) < ai_settings.bullets_allowed:
new_bullet = Bullet(ai_settings,screen,ship)
bullets.add(new_bullet)
def check_keyup_events(event,ship):
#reponse open
if event.key == pygame.K_RIGHT:
#ship move to right
ship.moving_right = False
elif event.key == pygame.K_LEFT:
#ship move to left
ship.moving_left = False
def update_screen(ai_settings,screen,stats,sb,ship,aliens,
bullets,play_button):
#update picture on phone & switch phone 5
#when every circle draw phone
screen.fill(ai_settings.bg_color)
#behind ship & alien draw bullet
for bullet in bullets.sprites():
bullet.draw_bullet()
ship.blitme()
aliens.draw(screen)
sb.show_score()
#draw "play" button
if not stats.game_active:
play_button.draw_button()
#can see draw on recently
pygame.display.flip()
def update_bullets(ai_settings,screen,stats,sb,ship,aliens,bullets):
bullets.update()
#delete discover bullet
for bullet in bullets.copy():
if bullet.rect.bottom <= 0:
bullets.remove(bullet)
#check bullet if attack alien
#if result is "true" delete alien & bullet
check_bullet_alien_collision(ai_settings,screen,stats,sb,ship,
aliens,bullets)
def check_bullet_alien_collision(ai_settings,screen,stats,sb,
ship,aliens,bullets):
collisions = pygame.sprite.groupcollide(bullets,aliens,True,True)
if collisions:
for aliens in collisions.values():
stats.score += ai_settings.alien_points * len(aliens)
sb.prep_score()
check_high_score(stats,sb)
if len(aliens) == 0:
#delete now_bullets & build new_aliens
bullets.empty()
ai_settings.initialize_dynamic_settings()
ai_settings.increase_speed()
stats.level += 1
sb.prep_level()
create_fleet(ai_settings,screen,ship,aliens)
def create_fleet(ai_settings,screen,ship,aliens):
#build aliens
#build a alien & number how many a line
#spacing alien
alien = Alien(ai_settings,screen)
number_aliens_x = get_numner_aliens_x(ai_settings,alien.rect.width)
number_rows = get_number_rows(ai_settings,ship.rect.height,
alien.rect.height)
#build a line alien
for row_number in range(number_rows):
for alien_number in range(number_aliens_x):
##build a alien & join in
#alien = Alien(ai_settings,screen)
#alien.x = alien_width + 2 * alien_width * alien_number
#alien.rect.x = alien.x
#aliens.add(alien)
create_alien(ai_settings,screen,aliens,alien_number,
row_number)
def get_numner_aliens_x(ai_settings,alien_width):
#number hold how many alien in a lien
available_space_x = ai_settings.screen_width - 2 * alien_width
number_aliens_x = int(available_space_x / (2 * alien_width))
return number_aliens_x
def create_alien(ai_settings,screen,aliens,alien_number,row_number):
#build aliens
#build a alien & number how many a line
#spacing alien
alien = Alien(ai_settings,screen)
alien_width = alien.rect.width
alien.x = alien_width + 2 * alien_width * alien_number
alien.rect.x = alien.x
alien.rect.y = alien.rect.height + 2 * alien.rect.height * row_number
aliens.add(alien)
def get_number_rows(ai_settings,ship_height,alien_height):
#number can hold how aliens
available_space_y = (ai_settings.screen_height -
(3 * alien_height) - ship_height)
number_rows = int(available_space_y / (2 * alien_height))
return number_rows
def check_fleet_edges(ai_settings,aliens):
#when alien touch edge
for alien in aliens.sprites():
if alien.check_edges():
change_fleet_direction(ai_settings,aliens)
break
def change_fleet_direction(ai_settings,aliens):
#g_down aliens & change direction
for alien in aliens.sprites():
alien.rect.y += ai_settings.fleet_drop_speed
ai_settings.fleet_direction *= -1
def update_aliens(ai_settings,screen,stats,sb,ship,aliens,bullets):
#update aliens loc
#if check alien loc screen edge & update alien loc
check_fleet_edges(ai_settings,aliens)
aliens.update()
if pygame.sprite.spritecollideany(ship,aliens):
#print("ship hit!!!")
ship_hit(ai_settings,screen,stats,sb,ship,aliens,bullets)
check_aliens_bottom(ai_settings,screen,stats,sb,ship,aliens,bullets)
def ship_hit(ai_settings,screen,stats,sb,ship,aliens,bullets):
if stats.ships_left > 0:
#answer alien attack ship
#ship_left -1
stats.ships_left -= 1
sb.prep_ships()
#clear aliens list & bullets list
aliens.empty()
bullets.empty()
#create new aliens & put ship in center-bottom
create_fleet(ai_settings,screen,ship,aliens)
ship.center_ship()
#sleep
sleep(0.5)
else:
stats.game_active = False
pygame.mouse.set_visible(True)
def check_aliens_bottom(ai_settings,screen,stats,sb,ship,aliens,bullets):
#check if alien go to bottom
screen_rect = screen.get_rect()
for alien in aliens.sprites():
if alien.rect.bottom >= screen_rect.bottom:
#as like ship attack
ship_hit(ai_settings,screen,stats,sb,ship,aliens,bullets)
break
def check_high_score(stats,sb):
#check high-score
if stats.score >stats.high_score:
stats.high_score = stats.score
sb.prep_high_score()
没有合适的资源?快使用搜索试试~ 我知道了~
python飞机大战demopython_demo_1.zip
共23个文件
pyc:9个
py:9个
png:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 46 浏览量
2024-05-12
19:28:43
上传
评论
收藏 43KB ZIP 举报
温馨提示
五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
资源推荐
资源详情
资源评论
收起资源包目录
python飞机大战demopython_demo_1.zip (23个子文件)
manualType.properties 10B
python_demo_1-master
python_work
scoreboard.py 2KB
button.py 847B
image
alien.png 13KB
eat_head.png 11KB
geany_run_script.bat 109B
bullet.py 885B
ship.py 1KB
game_stats.py 359B
alien.py 1KB
alien.invasion.py 1KB
settings.py 1KB
__pycache__
bullet.cpython-37.pyc 1KB
game_stats.cpython-37.pyc 686B
alien.invasion.cpython-37.pyc 509B
scoreboard.cpython-37.pyc 2KB
settings.cpython-37.pyc 1KB
ship.cpython-37.pyc 1KB
game_functions.cpython-37.pyc 5KB
button.cpython-37.pyc 1KB
alien.cpython-37.pyc 1KB
game_functions.py 7KB
item.pdf 6B
共 23 条
- 1
资源评论
枫蜜柚子茶
- 粉丝: 6864
- 资源: 5108
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功