手机游戏> 瀑布泡泡龙> 游戏攻略> 综合篇> 瀑布泡泡龙小游戏 泡泡乐游戏版本介绍

瀑布泡泡龙小游戏 泡泡乐游戏版本介绍

作者:互联网 来源:916手游网 发布时间:2024-01-23 01:15:16
上九游,领福利

导语

Python版的消除类的游戏还是很多的

比如:百变的消消乐,还记得嘛?今天就出一个消除类——泡泡龙小游戏,希望你们喜欢哈~!

<a id='link_pop' class='keyword-tag' href='https://www.9game.cn/pbppl/'>瀑布泡泡龙</a>小游戏(泡泡乐游戏版本介绍)「每日一条」

《泡泡乐》是一款适合全年龄玩家的游戏,采用非常经典的“泡泡龙”式的消除泡泡的玩法,

游戏没有太多创新玩法,容易上手。当我们一个人独处而无人聊天时可以用它来打发时间。

来来来,跟着木木子一起开始玩泡泡龙游戏吧~

瀑布泡泡龙小游戏(泡泡乐游戏版本介绍)「每日一条」

正文

瀑布泡泡龙小游戏(泡泡乐游戏版本介绍)「每日一条」

一、准备中

1)游戏规则:

游戏玩法是玩家从下方中央的弹珠发射台射出彩珠,等于3个同色珠相连则会消失。直到完全消除界面上的同款泡泡机

可胜利,还可以跟小小伙伴儿比拼, 看谁用的彩球越少。

2)环境安装

本文用到的环境:Python3、Pycharm、Pygame以及自带的。

二、开始敲代码

1)导入模块

import math, pygame, sys, os, copy, time, randomimport pygame.gfxdrawfrom pygame.locals import *

2)主程序

FPS          = 120WINDOWWIDTH  = 640WINDOWHEIGHT = 480TEXTHEIGHT   = 20BUBBLERADIUS = 20BUBBLEWIDTH  = BUBBLERADIUS * 2BUBBLELAYERS = 5BUBBLEYADJUST = 5STARTX = WINDOWWIDTH / 2STARTY = WINDOWHEIGHT - 27ARRAYWIDTH = 16ARRAYHEIGHT = 14RIGHT = 'right'LEFT  = 'left'BLANK = '.'## COLORS ###            R    G    BGRAY     = (100, 100, 100)NAVYBLUE = ( 60,  60, 100)WHITE    = (255, 255, 255)RED      = (255,   0,   0)GREEN    = (  0, 255,   0)BLUE     = (  0,   0, 255)YELLOW   = (255, 255,   0)ORANGE   = (255, 128,   0)PURPLE   = (255,   0, 255)CYAN     = (  0, 255, 255)BLACK    = (  0,   0,   0)COMBLUE  = (233, 232, 255)BGCOLOR    = WHITECOLORLIST = [RED, GREEN, BLUE, YELLOW, ORANGE, PURPLE, CYAN]     class Bubble(pygame.sprite.Sprite):    def __init__(self, color, row=0, column=0):        pygame.sprite.Sprite.__init__(self)        self.rect = pygame.Rect(0, 0, 30, 30)        self.rect.centerx = STARTX        self.rect.centery = STARTY        self.speed = 10        self.color = color        self.radius = BUBBLERADIUS        self.angle = 0        self.row = row        self.column = column            def update(self):        if self.angle == 90:            xmove = 0            ymove = self.speed * -1        elif self.angle  90:            xmove = self.xcalculate(180 - self.angle) * -1            ymove = self.ycalculate(180 - self.angle)                self.rect.x += xmove        self.rect.y += ymove    def draw(self):        pygame.gfxdraw.filled_circle(DISPLAYSURF, self.rect.centerx, self.rect.centery, self.radius, self.color)        pygame.gfxdraw.aacircle(DISPLAYSURF, self.rect.centerx, self.rect.centery, self.radius, GRAY)            def xcalculate(self, angle):        radians = math.radians(angle)                xmove = math.cos(radians)*(self.speed)        return xmove    def ycalculate(self, angle):        radians = math.radians(angle)                ymove = math.sin(radians)*(self.speed) * -1        return ymoveclass Arrow(pygame.sprite.Sprite):    def __init__(self):        pygame.sprite.Sprite.__init__(self)        self.angle = 90        arrowImage = pygame.image.load('Arrow.png')        arrowImage.convert_alpha()        arrowRect = arrowImage.get_rect()        self.image = arrowImage        self.transformImage = self.image        self.rect = arrowRect        self.rect.centerx = STARTX         self.rect.centery = STARTY            def update(self, direction):                if direction == LEFT and self.angle  0:                    self.angle -= 2        self.transformImage = pygame.transform.rotate(self.image, self.angle)        self.rect = self.transformImage.get_rect()        self.rect.centerx = STARTX         self.rect.centery = STARTY            def draw(self):        DISPLAYSURF.blit(self.transformImage, self.rect)class Score(object):    def __init__(self):        self.total = 0        self.font = pygame.font.SysFont('Helvetica', 15)        self.render = self.font.render('Score: ' + str(self.total), True, BLACK, WHITE)        self.rect = self.render.get_rect()        self.rect.left = 5        self.rect.bottom = WINDOWHEIGHT - 5                    def update(self, deleteList):        self.total += ((len(deleteList)) * 10)        self.render = self.font.render('Score: ' + str(self.total), True, BLACK, WHITE)    def draw(self):        DISPLAYSURF.blit(self.render, self.rect)def main():    global FPSCLOCK, DISPLAYSURF, DISPLAYRECT, MAINFONT    pygame.init()    FPSCLOCK = pygame.time.Clock()    pygame.display.set_caption('泡泡龙小游戏')    MAINFONT = pygame.font.SysFont('Helvetica', TEXTHEIGHT)    DISPLAYSURF, DISPLAYRECT = makeDisplay()            while True:        score, winorlose = runGame()        endScreen(score, winorlose)def runGame():    musicList =['bgmusic.ogg', 'Utopian_Theme.ogg', 'Goofy_Theme.ogg']    pygame.mixer.music.load(musicList[0])    pygame.mixer.music.play()    track = 0    gameColorList = copy.deepcopy(COLORLIST)    direction = None    launchBubble = False    newBubble = None                arrow = Arrow()    bubbleArray = makeBlankBoard()    setBubbles(bubbleArray, gameColorList)        nextBubble = Bubble(gameColorList[0])    nextBubble.rect.right = WINDOWWIDTH - 5    nextBubble.rect.bottom = WINDOWHEIGHT - 5    score = Score()                   while True:        DISPLAYSURF.fill(BGCOLOR)                for event in pygame.event.get():            if event.type == QUIT:                terminate()                            elif event.type == KEYDOWN:                if (event.key == K_LEFT):                    direction = LEFT                elif (event.key == K_RIGHT):                    direction = RIGHT                                elif event.type == KEYUP:                direction = None                if event.key == K_SPACE:                    launchBubble = True                elif event.key == K_ESCAPE:                    terminate()        if launchBubble == True:            if newBubble == None:                newBubble = Bubble(nextBubble.color)                newBubble.angle = arrow.angle                            newBubble.update()            newBubble.draw()                                    if newBubble.rect.right >= WINDOWWIDTH - 5:                newBubble.angle = 180 - newBubble.angle            elif newBubble.rect.left  (WINDOWHEIGHT - arrow.rect.height - 10):                            return score.total, 'lose'                                    if len(finalBubbleList)  WINDOWWIDTH:                    array[row][column] = BLANKdef updateColorList(bubbleArray):    newColorList = []    for row in range(len(bubbleArray)):        for column in range(len(bubbleArray[0])):            if bubbleArray[row][column] != BLANK:                newColorList.append(bubbleArray[row][column].color)    colorSet = set(newColorList)    if len(colorSet)  bubbleList[i - 1] + 1:            newBubbleList.append(bubbleList[i])    copyOfBoard = copy.deepcopy(bubbleArray)    for row in range(len(bubbleArray)):        for column in range(len(bubbleArray[0])):            bubbleArray[row][column] = BLANK        for column in newBubbleList:        popFloaters(bubbleArray, copyOfBoard, column)def popFloaters(bubbleArray, copyOfBoard, column, row=0):    if (row  (len(bubbleArray)-1)                or column  (len(bubbleArray[0])-1)):        return        elif copyOfBoard[row][column] == BLANK:        return    elif bubbleArray[row][column] == copyOfBoard[row][column]:        return    bubbleArray[row][column] = copyOfBoard[row][column]        if row == 0:        popFloaters(bubbleArray, copyOfBoard, column + 1, row    )        popFloaters(bubbleArray, copyOfBoard, column - 1, row    )        popFloaters(bubbleArray, copyOfBoard, column,     row + 1)        popFloaters(bubbleArray, copyOfBoard, column - 1, row + 1)    elif row % 2 == 0:        popFloaters(bubbleArray, copyOfBoard, column + 1, row    )        popFloaters(bubbleArray, copyOfBoard, column - 1, row    )        popFloaters(bubbleArray, copyOfBoard, column,     row + 1)        popFloaters(bubbleArray, copyOfBoard, column - 1, row + 1)        popFloaters(bubbleArray, copyOfBoard, column,     row - 1)        popFloaters(bubbleArray, copyOfBoard, column - 1, row - 1)    else:        popFloaters(bubbleArray, copyOfBoard, column + 1, row    )        popFloaters(bubbleArray, copyOfBoard, column - 1, row    )        popFloaters(bubbleArray, copyOfBoard, column,     row + 1)        popFloaters(bubbleArray, copyOfBoard, column + 1, row + 1)        popFloaters(bubbleArray, copyOfBoard, column,     row - 1)        popFloaters(bubbleArray, copyOfBoard, column + 1, row - 1)        def stopBubble(bubbleArray, newBubble, launchBubble, score):    deleteList = []    popSound = pygame.mixer.Sound('popcork.ogg')        for row in range(len(bubbleArray)):        for column in range(len(bubbleArray[row])):                        if (bubbleArray[row][column] != BLANK and newBubble != None):                if (pygame.sprite.collide_rect(newBubble, bubbleArray[row][column])) or newBubble.rect.top = bubbleArray[row][column].rect.centery:                        if newBubble.rect.centerx >= bubbleArray[row][column].rect.centerx:                            if row == 0 or (row) % 2 == 0:                                newRow = row + 1                                newColumn = column                                if bubbleArray[newRow][newColumn] != BLANK:                                    newRow = newRow - 1                                bubbleArray[newRow][newColumn] = copy.copy(newBubble)                                bubbleArray[newRow][newColumn].row = newRow                                bubbleArray[newRow][newColumn].column = newColumn                                                            else:                                newRow = row + 1                                newColumn = column + 1                                if bubbleArray[newRow][newColumn] != BLANK:                                    newRow = newRow - 1                                bubbleArray[newRow][newColumn] = copy.copy(newBubble)                                bubbleArray[newRow][newColumn].row = newRow                                bubbleArray[newRow][newColumn].column = newColumn                                                                            elif newBubble.rect.centerx = bubbleArray[row][column].rect.centerx:                            if row == 0 or row % 2 == 0:                                newRow = row - 1                                newColumn = column                                if bubbleArray[newRow][newColumn] != BLANK:                                    newRow = newRow + 1                                bubbleArray[newRow][newColumn] = copy.copy(newBubble)                                bubbleArray[newRow][newColumn].row = newRow                                bubbleArray[newRow][newColumn].column = newColumn                            else:                                newRow = row - 1                                newColumn = column + 1                                if bubbleArray[newRow][newColumn] != BLANK:                                    newRow = newRow + 1                                bubbleArray[newRow][newColumn] = copy.copy(newBubble)                                bubbleArray[newRow][newColumn].row = newRow                                bubbleArray[newRow][newColumn].column = newColumn                                                    elif newBubble.rect.centerx = 3:                        for pos in deleteList:                            popSound.play()                            row = pos[0]                            column = pos[1]                            bubbleArray[row][column] = BLANK                        checkForFloaters(bubbleArray)                                                score.update(deleteList)                    launchBubble = False                    newBubble = None    return launchBubble, newBubble, score                    def addBubbleToTop(bubbleArray, bubble):    posx = bubble.rect.centerx    leftSidex = posx - BUBBLERADIUS    columnDivision = math.modf(float(leftSidex) / float(BUBBLEWIDTH))    column = int(columnDivision[1])    if columnDivision[0]  (len(bubbleArray)-1) or column > (len(bubbleArray[0])-1):        return    elif bubbleArray[row][column] == BLANK:        return        elif bubbleArray[row][column].color != color:        return    for bubble in deleteList:        if bubbleArray[bubble[0]][bubble[1]] == bubbleArray[row][column]:            return    deleteList.append((row, column))    if row == 0:        popBubbles(bubbleArray, row,     column - 1, color, deleteList)        popBubbles(bubbleArray, row,     column + 1, color, deleteList)        popBubbles(bubbleArray, row + 1, column,     color, deleteList)        popBubbles(bubbleArray, row + 1, column - 1, color, deleteList)    elif row % 2 == 0:                popBubbles(bubbleArray, row + 1, column,         color, deleteList)        popBubbles(bubbleArray, row + 1, column - 1,     color, deleteList)        popBubbles(bubbleArray, row - 1, column,         color, deleteList)        popBubbles(bubbleArray, row - 1, column - 1,     color, deleteList)        popBubbles(bubbleArray, row,     column + 1,     color, deleteList)        popBubbles(bubbleArray, row,     column - 1,     color, deleteList)    else:        popBubbles(bubbleArray, row - 1, column,     color, deleteList)        popBubbles(bubbleArray, row - 1, column + 1, color, deleteList)        popBubbles(bubbleArray, row + 1, column,     color, deleteList)        popBubbles(bubbleArray, row + 1, column + 1, color, deleteList)        popBubbles(bubbleArray, row,     column + 1, color, deleteList)        popBubbles(bubbleArray, row,     column - 1, color, deleteList)            def drawBubbleArray(array):    for row in range(ARRAYHEIGHT):        for column in range(len(array[row])):            if array[row][column] != BLANK:                array[row][column].draw()                    def makeDisplay():    DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))    DISPLAYRECT = DISPLAYSURF.get_rect()    DISPLAYSURF.fill(BGCOLOR)    DISPLAYSURF.convert()    pygame.display.update()    return DISPLAYSURF, DISPLAYRECT     def terminate():    pygame.quit()    sys.exit()def coverNextBubble():    whiteRect = pygame.Rect(0, 0, BUBBLEWIDTH, BUBBLEWIDTH)    whiteRect.bottom = WINDOWHEIGHT    whiteRect.right = WINDOWWIDTH    pygame.draw.rect(DISPLAYSURF, BGCOLOR, whiteRect)def endScreen(score, winorlose):    endFont = pygame.font.SysFont('Helvetica', 20)    endMessage1 = endFont.render('You ' + winorlose + '! Your Score is ' + str(score) + '. Press Enter to Play Again.', True, BLACK, BGCOLOR)    endMessage1Rect = endMessage1.get_rect()    endMessage1Rect.center = DISPLAYRECT.center    DISPLAYSURF.fill(BGCOLOR)    DISPLAYSURF.blit(endMessage1, endMessage1Rect)    pygame.display.update()    while True:        for event in pygame.event.get():            if event.type == QUIT:                terminate()            elif event.type == KEYUP:                if event.key == K_RETURN:                    return                elif event.key == K_ESCAPE:                    terminate()                if __name__ == '__main__':    main()

三、效果展示

空格键是发球、方向键左右是遥控箭头的。

1)运行界面

瀑布泡泡龙小游戏(泡泡乐游戏版本介绍)「每日一条」

2)同色三个可消除

瀑布泡泡龙小游戏(泡泡乐游戏版本介绍)「每日一条」

3)结束页面

一颗球是10个成绩点,界面的球被我消了总的591个才结束这个游戏!2333,有点难

瀑布泡泡龙小游戏(泡泡乐游戏版本介绍)「每日一条」

总结

嘿!小游戏写到这结束了,自己动手玩一玩吖~哈哈哈。源码都是免费拿滴~

热门游戏

瀑布泡泡龙
瀑布泡泡龙
t21_2-t21_1:1.0
益智 636.0KB
t21_4-t21_3:0.0
电脑版 加速器
最新动态,一手掌握
加速器下载 九游预约

玩家评论

(0条)

全部评论

加入九游群聊,开黑不愁,礼包全有
下载九游APP
点击下载按钮,或用手机二维码扫描可直接下载对应安装包!
立即下载九游APP
t26_2-t26_1:13.0
t30_2-t30_1:18.0

瀑布泡泡龙

瀑布泡泡龙
类型:益智
安卓:运营
订阅
湍急的瀑布前面玩泡泡龙是不是很有趣呢?快来玩玩吧。最经典的玩法,趣味耐 [详情]

湍急的瀑布前面玩泡泡龙是不是很有趣呢?快来玩玩吧。最经典的玩法,趣味耐玩。同时根据作者多年玩泡泡龙的经验,发现很多版本的泡泡龙都存在一些细节上的问题,让人很蛋疼。为此特此开发了本款泡泡龙,基于经典的泡泡龙,对一些细节进行了处理(比如你想将泡泡射在里面的位置,但却停在了外面,明明不会碰到前面。此细节已经处理,让你更轻松准确的射到你想要的位置),加上动感的瀑布场景,让游戏更加充满了休闲趣味。

开发者:互联网

tgamedetail_ff_2-tgamedetail_ff_1:45.0

tgamedetail_ff_3-tgamedetail_ff_2:1.0

tgamedetail_ff_4-tgamedetail_ff_3:7.0

tgamedetail_ff_5-tgamedetail_ff_4:10.0

tgamedetail_ff_6-tgamedetail_ff_5:6.0

tgamedetail_ff_6-tgamedetail_ff_1:69.0

t10_2-t10_1:10.0

t10_3-t10_2:8.0

t10_4-t10_3:6.0

t10_5-t10_4:7.0

t10_6-t10_5:0.0

t10_6-t10_1:31.0

t40_2-t40_1:13.0

相关专题

最新专题

预约游戏
扫描二维码下载九游app预约游戏
第一时间接受活动,礼包,开测下载提醒
扫码领取福利

下载九游APP,可获取更多礼包和攻略视频

九游云游戏
电脑也能玩手游 · 无需下载 · 不占空间 · 点击即玩
在线玩

t2627_2_2627_1:181.0

t1-t0:60.0

t2-t1:5.0

t3-t2:0.0

t4-t3:3.0

t5-t4:29.0

t6-t5:14.0

t7-t6:4.0

t8-t7:0.0

t9-t8:60.0

t10-t9:0.0

t11-t10:6.0

t12-t11:0.0

t13-t12:0.0

t14-t13:0.0

t15-t14:0.0

t16-t15:0.0

t17-t16:1.0

t18-t17:49.0

t19-t18:20.0

t20-t19:12.0

t21-t20:0.0

t22-t21:1.0

t23-t22:35.0

t24-t23:0.0

t25-t24:17.0

t26-t25:0.0

t27-t26:13.0

t28-t27:0.0

t29-t28:0.0

t30-t29:15.0

t31-t30:18.0

t32-t31:16.0

t33-t32:0.0

t34-t33:0.0

t35-t34:0.0

t36-t35:0.0

t37-t36:84.0

t38-t37:31.0

t39-t38:0.0

t40-t39:0.0

t41-t40:13.0

t42-t41:24.0

t43-t42:0.0

t44-t43:79.0

t45-t44:27.0

t46-t45:0.0

t47-t46:0.0

t48-t47:4.0

t49-t48:0.0

t50-t49:4.0

t51-t50:4.0

t52-t51:0.0

t52-t0:648.0