澳门凯旋门注册网址凯旋门074网址 ,思路: 
澳门凯旋门游戏网址 ,1:主飞机从底层y = 1生成,左右移动
,每次左右x轴随机移动n个位置,并且移送过的地方每一个位置都会生成一个子弹,并发射。如果此位置Y轴正好有小飞机,则击落一架且一次只能击落,加一分。(击落多架除非下一次随机位置还在原地)

**

def DAFEIJI(n):  

    Scorer = 0

    list_s = []

    big_air = Big()

    """激光炮台出场"""

 
DAFEIJI(5)

 

问题的BUG已经完善,加一个小飞机刷出条件不重叠。 

之前版本运行完成会发现如下一个bug:小飞机生成因为是随机的,所以可能随机生成n个,其中有
n=<1个飞机位置会重复,所以会出现以下现象 :

 

每趟左右x轴随机移动n个地方【凯旋门074网址】。初始界面y值越大,游戏结束几率越小。 

**打飞机文字版 

每趟左右x轴随机移动n个地方【凯旋门074网址】。 

3:小飞机从顶层y = 10水平位置生成,x位置随机,每次随机生成三个

每趟左右x轴随机移动n个地方【凯旋门074网址】。每趟左右x轴随机移动n个地方【凯旋门074网址】。2:小飞机到底层时消失,即y = 0时候消失。(这个条件暂时没用)

        elif self.x < pos_x:

            for i in range(self.x,pos_x + 1):

                self.Interval.append(i)

            print("炮台从坐标x=%d移动到x=%d,沿途轰了%d炮"%(self.x,pos_x,pos_x + 1 -self.x ))

            print(">>>轰出%d个炮的位置是x ="% (pos_x + 1 -self.x),end = "")

            print(self.Interval)

        else:

            self.Interval.append(pos_x)

            print(">>>炮台原地轰了一炮")

            print(">>>轰炮的坐标是x = %s"% str(self.Interval))

 

        """初始化炮台到移动的目标"""

        self.x = pos_x

        self.y = pos_y

        return (pos_x,pos_y)

 

class Small:

    def __init__(self):

        """在y=25随机生成小飞机位置"""

        self.x = r.randint(0,legal_x[1])

        self.y = legal_y[1]

 

    def move(self):

        """固定移动,每次向下一步"""

        new_x = self.x

        mew_y = self.y - 1

        """判断是否越界"""

        if mew_y <= legal_y[0]:

            self.x = r.randint(0,legal_x[1])

            self.y = legal_y[1]

        else:

            self.x = new_x

            self.y = mew_y            

        return (new_x , mew_y)

 

class Boom:

    """核武器"""

    def __init__(self):

        self.x = r.randint(0,legal_x[1])

        self.y = 1

 

想了解更多Python知识或者想与更多的朋友一起学习交流,可以加群705673780,群文件内更多免费资料可供学习哦~

代码如下:

 

4:主飞机本身长度y=1。当主飞机和小飞机下一个坐标都为(x,1)时,碰撞。游戏结束。

 

    i = r.randint(9,10)

    while n:

        list_pos = []

        boom = Boom()

        """核武器生成"""       

        for numbers in range(1 ,i + 1):            

            small_air = Small()#小飞机出场数量位置随机,设置不重叠

            if small_air.x not in list_pos:

                list_pos.append(small_air.x)

                list_s.append(small_air)

            else:

                continue                

        pos = big_air.move()

        n = n - 1

        if pos != (boom.x ,boom.y):

            for each in list_s[:]:

                pos_small = each.move()

                if pos == pos_small:

                    print(">>>>>>>很不幸! 您的炮台撞小飞机了....GG!!")#这个几率.....

                    print("本次打飞机的分数是:%d" % Scorer)

                    sys.exit(0)          

                elif pos_small[0] in (big_air.Interval):

                    """一条直线打的,其实是激光炮"""

                    print("一架小飞机被打掉..")

                    Scorer += 1

                    list_s.remove(each)

        else:

            print("炮台加载了核武器...======================清屏!=======================..")

            Scorer += len(list_s)

            list_s.clear()

    print("本次打飞机的分数是:%d" % Scorer)

#==============================主程序==================================

 

只发射了6个炮弹,却在水平方向打掉了十多个飞机,这是因为生成飞机重复了,甚至有三四个飞机随机生成在一个y
= 10的水平位置上。

import random as r

import sys

legal_x = [0,10]

legal_y = [0,25]

class Big:

    def __init__(self):

        """在y=1随机生成炮台位置"""

        self.x = r.randint(0,10)

        self.y = 1

 

    def move(self):

        self.Interval = []

        """随机移动左右方向并移动到新的位置(x,1)"""

        self.step = r.randint(0,legal_x[1])

        self.direction = r.randint(-1,1)#方向,-1为左,0不移动,1为右

        new_x = self.x + self.direction * self.step

        mew_y = self.y

        """判断是否越界"""

        if new_x > legal_x[1]:

            pos_x = legal_x[1] - (new_x - legal_x[1])

            pos_y = mew_y

        elif new_x < legal_x[0]:

            pos_x = legal_x[0] - new_x

            pos_y = mew_y

        else:

            pos_x = new_x

            pos_y = mew_y

 

        """炮台移动前后对应坐标"""

        if self.x > pos_x:

            for i in range(pos_x,self.x + 1 ):

                self.Interval.append(i)

            print("炮台从坐标x=%d移动到x=%d,沿途轰了%d炮"%(self.x,pos_x,self.x + 1 -pos_x ))

            print(">>>轰出%d个炮的位置是x ="% (self.x + 1 -pos_x),end = "")

            print(self.Interval)

 

 

相关文章