第二次作业--结对项目--玩个球小游戏(小组:孙大鹏,崔奥,许鉴鉴)

  • 码云代码仓库地址:

  https://gitee.com/xu_jian_jian/qqqqq.git

  • PSP表格记录估计将在程序的各个模块的开发上耗费的时间:

  

  我以前没有做过相关的软件工程项目,所以预估耗时是通过我学习代码的时间来估计,我参考的python教程总时间大约为1500分钟,其中大约有一半时间是自己在练习敲代码,以此为标准预估了我的耗时。具体耗时是通过我的每日学习记录统计而来,除了具体敲代码花了不少时间,其余的项目花的时间都较少,原因为很多技术性问题参考了网上的解法以及相关资料及时得到了解决。

  • 每日软件工程学习日志: 

学习时段

11月1日下午2点至6点半

学习内容

1、安装git。

2、仔细阅读题目要求,开始解决第一个功能,游戏背景图绘制。

收获体会

1、到目前为止git依旧提交错误,原因未知,决定手工上传。

2、长达4个小时的摸索,终于实现了这个功能。

自我效率评价

效率低下,python语言不熟悉,小组合作分工不明确。

 

学习时段

11月2日晚上9点半至10点半

学习内容

1、调试昨天的代码,尝试优化精简。

2、解决游戏代码的碰撞测试的问题。

收获体会

1、参考了https://blog.csdn.net/tangwg5/article/details/77405850与https://blog.csdn.net/w417950004/article/details/78424366的方法,优化了代码。

2、在社区里py大神的帮助下,实现了碰撞测试的功能,关键是学会了split语句的循环,找出了消除各种分隔符的方法。 

自我效率评价

效率较高,有什么不懂的,要学会在网络上寻找答案。

 

学习时段

11月3日晚上6点至7点半

学习内容

1、突然发现飞船移动出现问题,导致程序不符合要求。

2、解决控制飞船移动的代码问题。

收获体会

1、参考了https://blog.csdn.net/siat_36972314/article/details/79746291的方法,找到了相应的移动飞船的代码。

自我效率评价

效率较低,修改一些简单代码花费过多时间,搜索资料的能力不足。

 

学习时段

11月4日上午10点30至11点

学习内容

1、修改了游戏界面,敌人不断刷新的bug。

2.改进了飞船发射子弹的速率。

收获体会

1、尝试了多种碰撞组合

自我效率评价

效率较高。

 

  • 解题思路:

1.为了解决有喜欢玩手机游戏小孩的家长的痛苦,他们需要小孩能够自主学习,减少玩游戏的时间,但是现有的方案并没有很好的解决这些需求。

2.我们有独特的学习模式,在玩游戏的过程中,巩固所学知识,比一般的答题软件更具有竞争力,他能让用户能够自主学习,巩固知识。

3.并且在游戏过程中,程序会自动记录游戏时间,控制用户游戏时间,避免用户沉迷游戏,损害身体健康。

4.同时,我们通过班级微信群,游戏主播等推广方式来推广我们的产品。

5.通过百度,CSDN,博客园等论坛搜索相关问题的解决方案。

6.参考工具书“Python编程从入门到实践”,“流畅的python”,“python基础教程”。

 

  • 性能分析:

 

 

 

 

  • 代码说明:

 

  设置炮弹的颜色,速度,位置,大小等,并将其绘制。

 1 import pygame
 2 
 3 from pygame.sprite import Sprite
 4 
 5 class Bullet(Sprite):
 6     
 7     def __init__(self, ai_settings, screen, myball):
 8         super().__init__()
 9         self.screen = screen
10 
11         
12         self.rect = pygame.Rect(0, 0, ai_settings.bullet_width, ai_settings.bullet_height)
13         self.rect.centerx = myball.rect.centerx
14         self.rect.top = myball.rect.top
15         #储存用小数表示子弹的位置
16         self.y = float(self.rect.y)
17 
18         self.color = ai_settings.bullet_color         
19         self.speed_factor = ai_settings.bullet_speed_factor 
20         
21     def update(self):
22         self.y -= self.speed_factor
23         self.rect.y = self.y
24     def draw_bullet(self):
25 
26         pygame.draw.rect(self.screen, self.color, self.rect)

 

 

设置敌人的起始位置,加载敌人图像。在指定位置绘制敌人。当敌人触碰屏幕边缘时,改变敌人运动方向。

import pygame
from pygame.sprite import Sprite

class Badball(Sprite):
    def __init__(self, ai_settings, screen):
        #初始化敌人并设置起始位置
        super(Badball, self).__init__()
        self.screen = screen
        self.ai_settings = ai_settings
        #加载敌人图像,设置其rect属性
        self.image = pygame.image.load("C:/Users/Administrator/AppData/Local/Programs/Python/Python37/images/enemy1.png").convert_alpha()
        self.rect = self.image.get_rect()

        #每个敌人初始位置在左上角附近
        self.rect.x = self.rect.width
        self.rect.y = self.rect.height
        #在指定位置绘制敌人
        self.x = float(self.rect.x)
    def blitme(self):
        self.screen.blit(self.image, self.rect)
    
    def check_edges(self):
        #检查敌人是否位于屏幕边缘
        screen_rect = self.screen.get_rect()
        if self.rect.right >= screen_rect.right:
            return True
        elif self.rect.left <= 0:
            return True
    def update(self):
        self.x += (self.ai_settings.badball_speed_factor * self.ai_settings.fleet_direction)
        
        self.rect.x = self.x

 

 

屏幕大小,颜色,尺寸设置,以及炮弹和敌人的速度设置。

class Settings():
        def __init__(self):
                self.screen_width=1000
                self.screen_height=700
                self.bg_color=(230,230,230)
                self.ship_speed_factor =1.5


                #炮弹设置
                self.bullet_speed_factor = 1
                self.bullet_width = 3
                self.bullet_height = 15
                self.bullet_color =(60, 60, 60)
                self.bullets_allowed = 30
                #diren设置
                self.badball_speed_factor = 1
                self.fleet_drop_speed = 8
                self.fleet_direction = 1
                

 

加载飞船图片,确定飞船移动方式,并在屏幕上绘制飞船。

import pygame

class Myball():
    def __init__(self, ai_settings, screen):
        
        self.screen = screen
        self.ai_settings = ai_settings
        self.image = pygame.image.load("C:/Users/Administrator/AppData/Local/Programs/Python/Python37/images/life.png").convert_alpha()
        self.rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()
        #将每艘飞船放在屏幕底部中央
        self.rect.centerx = self.screen_rect.centerx  
        self.rect.bottom = self.screen_rect.bottom
        #移动标志
        self.center = float(self.rect.centerx)
        
        self.moving_right = False
        self.moving_left = False

    def update(self):

        if self.moving_right and self.rect.right < self.screen_rect.right:
            self.center += self.ai_settings.ship_speed_factor
        if self.moving_left and self.rect.left > 0:
            self.center -= self.ai_settings.ship_speed_factor
        self.rect.centerx = self.center          
    def blitme(self):

        self.screen.blit(self.image,self.rect)

 

  • 成品图像:

  • 解决项目的心路历程与收获:

  第二次作业--飞船大战小游戏,通过该项目,我们小组在python零基础的情况下,不断查资料,逛论坛,看工具书,慢慢的摸索。在这个过程中,我们总会遇到各种问题,从一开始拿到题目的一头雾水,到最后看着自己小组编写的小游戏能够顺利运行的满满成就感;从项目开始小组每个人不知道做什么,到最后的每个人分工明确,找资料,敲代码,编写READE.ME,撰写博客,每个人都在这个过程中贡献自己,都不断成长,不断学习。

  总之,在完成这个项目之后,我们学会了一点python的基础知识,学会了用PSP表格规划自己项目的具体时间,学会了如何更好的与他人合作完成项目!

 

posted @ 2019-11-05 10:44  PODG  阅读(193)  评论(0)    收藏  举报