2025年python的第一次尝试

python的第一次尝试决定自学开始 在这里记录一下学习的过程 工作之余作为一个非科班出身的 IT 从业者 想利用时间提升自己的开发能力 所以第一个学习的语言是 python 下面将学习 2 个月的成果 也就是第一个 pygame 的项目发出来 欢迎大神们的指正 1 主程序 coding gbk import

大家好,我是讯享网,很高兴认识大家。

coding=gbk

import pygame
from setting import Settings
from setting import Ship
from setting import GameStats
from setting import Button
from setting import Scoreboard
import gamefunction as gf

调用精灵组管理类

from pygame.sprite import Group
def rungame():
pygame.init()
ai_setting=Settings()
screan=pygame.display.set_mode((ai_setting.screan_width,ai_setting.screan_height))
pygame.display.set_caption(‘zealerzhang’)
#创建play按钮
play_button=Button(ai_setting,screan,’play’)
#创建一个用于游戏统计数据的实例
stats=GameStats(ai_setting)
#创建剩余飞船
sbfc=Scoreboard(ai_setting,screan,stats)
sbfc.rect.top=60
sbfc.board_color=(100,200,80)
#创建记分牌
sb=Scoreboard(ai_setting,screan,stats)
ship=Ship(screan)
#创建一个用于存储子弹的编组
bullets=Group()
#创建外星人编组
aliens=Group()
#更新外星人编组
gf.create_fleet(ai_setting,screan,aliens,ship)
#开始游戏的主循环
while True:
#检查事件
gf.check_events(ai_setting,screan,ship,bullets,stats,play_button,aliens)
if stats.game_active:
#飞船位置更新
ship.update(ai_setting.ship_speed_factor)
#移除到达屏幕边缘的子弹
gf.update_bullets(bullets,aliens,ai_setting,screan,ship,stats,sb,sbfc)
#print(len(bullets))
#子弹位置更新,编组调用update时,对每个精灵(实例)调用update()方法
bullets.update()
#更新外星人的位置
gf.update_alien(aliens,ai_setting,ship,stats,bullets,screan)
#让绘制的屏幕可见
gf.update_screan(ai_setting,screan,ship,bullets,aliens,play_button,stats,sb,sbfc)
rungame()

2、用到的方法
#coding=gbk
import pygame
import sys
from bullet import Bullet
from setting import Alien
from time import sleep
def fire_bullet(bullets,ai_setting,screan,ship):
#添加子弹的函数
if len(bullets)


讯享网

coding=gbk

import pygame
from pygame.sprite import Sprite
import pygame.font
class Settings():
“”“存储外星人入侵的所有参数的类”“”
def init(self):
“”“初始化游戏的设置”“”
self.screan_width=1200
self.screan_height=600
self.color=(100,100,100)
self.ship_speed_factor=2
self.ship_llimit=3
#子弹设置
self.bullet_speed_factor=1
self.bullet_width=3
self.bullet_height=15
self.bullet_color=(20,20,20)
self.bullet_allowed=5
#外星人设置
self.alien_speed_factor=0.5
self.fleet_drop_speed=2
#fleet_driction 为1表示向右移动,-1表示向左移动
self.fleet_driction=1
self.alien_point=50
#加快游戏节奏的设置
self.speed_up=1.1
self.score_up=1.5
self.initialize_settings()
def initialize_settings(self):
“”“初始化游戏,进而进行改变的设置”“”
self.ship_speed_factor=1.5
self.bullet_speed_factor=3
self.alien_speed_factor=1
self.alien_point=50
def increase_speed(self):
#随着玩家等级的提高,提高速度
self.ship_speed_factor*=self.speed_up
self.bullet_speed_factor*=self.speed_up
self.alien_speed_factor*=self.speed_up
self.alien_point=int(self.alien_point*self.score_up)
print(self.alien_point)

class Ship():
def init(self,screan):
“”“初始化飞船,并初始化位置”“”
self.screan=screan
#加载飞船图像并获取其外接矩形,pygame.image.load,返回的是surface
self.image=pygame.image.load(‘images/ship.png’)
#self.image.fill((110,110,110))
self.rect=self.image.get_rect()
self.screan_rect=screan.get_rect()
self.moving_right=False
self.moving_left=False
self.moving_up=False
self.moving_down=False
#将每艘飞船放在底部中央
self.rect.centerx=self.screan_rect.centerx
self.rect.bottom=self.screan_rect.bottom
def blitme(self):
“”“在指定位置绘制飞船”“”
#一定要注意函数内的变量顺序
self.screan.blit(self.image,self.rect)
def update(self,setting):
#飞船位置的变化
#向左移动
if self.moving_right and self.rect.right

coding=gbk

import pygame
from pygame.sprite import Sprite
class Bullet(Sprite):
“”“一个对发射子弹管理的类”“”
def init(self,ai_setting,screan,ship):
#继承类的方法
super().init()
self.screan=screan
#在(0,0)处创建一个表示子弹的矩形
self.rect=pygame.Rect(0,0,ai_setting.bullet_width,ai_setting.bullet_height)
self.rect.centerx=ship.rect.centerx
self.rect.top=ship.rect.top
#存储用小数表示的子弹位置
self.y=float(self.rect.y)
self.color=ai_setting.bullet_color
self.speed_factor=ai_setting.bullet_speed_factor
def update(self):
“”“向上移动子弹”“”
#更新表示子弹位置的小数值
self.y-=self.speed_factor
#更新子弹的rec值
self.rect.y=self.y
def draw_bullet(self):
“”“在屏幕上绘制子弹”“”
pygame.draw.rect(self.screan,self.color,self.rect)

小讯
上一篇 2025-01-05 18:29
下一篇 2025-01-10 22:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/23006.html