python的第一次尝试

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

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值