瀑布泡泡龙游戏介绍
瀑布泡泡龙简介
瀑布泡泡龙小游戏 泡泡乐游戏版本介绍
导语
Python版的消除类的游戏还是很多的
比如:百变的消消乐,还记得嘛?今天就出一个消除类——泡泡龙小游戏,希望你们喜欢哈~!
《泡泡乐》是一款适合全年龄玩家的游戏,采用非常经典的“泡泡龙”式的消除泡泡的玩法,
游戏没有太多创新玩法,容易上手。当我们一个人独处而无人聊天时可以用它来打发时间。
来来来,跟着木木子一起开始玩泡泡龙游戏吧~
正文
一、准备中
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,有点难
总结
嘿!小游戏写到这结束了,自己动手玩一玩吖~哈哈哈。源码都是免费拿滴~
瀑布泡泡龙游戏截图
大家都在看-热门推荐
祖玛泡泡龙射击好玩吗 祖玛泡泡龙射击玩法简介
期待已久的手游祖玛泡泡龙射击即将登陆九游,这款手机游戏吸引了大批玩家的关注,想下载这款游戏,有很多粉丝都在问九游小编祖玛泡泡龙射击好玩吗?祖玛泡泡龙射击值不值得玩?现在就为大家来简单分析下,看看这款游戏的玩法特点和游戏剧情介绍 。
祖玛泡泡龙射击快速预约/下载地址(需优先下载九游APP):
》》》》》#祖玛泡泡龙射击#《《《《《
1、祖玛泡泡龙射击简要评析:
经典祖玛射手风格的游戏
控制射击弹进入彩色球链并以匹配三个或更多彩色球,越多球则越多分,还有一些加分道具哦!
2、祖玛泡泡龙射击图片欣赏:
通过上面的游戏介绍和图片,可能大家对祖玛泡泡龙射击有大致的了解了,不过这么游戏要怎么样才能抢先体验到呢?不用担心,目前九游客户端已经开通了测试提醒了,通过在九游APP中搜索“祖玛泡泡龙射击”,点击右边的【订阅】或者是【开测提醒】,订阅游戏就不会错过最先的下载机会了咯!
- 全球好游抢先下
- 福利礼包免费领
- 官方直播陪你玩
奇遇泡泡龙好玩吗 奇遇泡泡龙玩法简介
期待已久的手游奇遇泡泡龙即将登陆九游,这款手机游戏吸引了大批玩家的关注,想下载这款游戏,有很多粉丝都在问九游小编奇遇泡泡龙好玩吗?奇遇泡泡龙值不值得玩?现在就为大家来简单分析下,看看这款游戏的玩法特点和游戏剧情介绍 。
奇遇泡泡龙快速预约/下载地址(需优先下载九游APP):
》》》》》#奇遇泡泡龙#《《《《《
1、奇遇泡泡龙简要评析:
奇遇泡泡龙是一款超级好玩的休闲游戏,可爱的画面风格,经典的消除玩法,创新好玩的关卡,多样的特色内容,让打爆泡泡的体验,既富挑战性,又有成就感!让你拥有全新的消除游戏体验,根本停不下来。
游戏特色
创新好玩的关卡,闯关不断!
各种特殊泡泡和强力道具,游戏爽翻天!
2、奇遇泡泡龙图片欣赏:
通过上面的游戏介绍和图片,可能大家对奇遇泡泡龙有大致的了解了,不过这么游戏要怎么样才能抢先体验到呢?不用担心,目前九游客户端已经开通了测试提醒了,通过在九游APP中搜索“奇遇泡泡龙”,点击右边的【订阅】或者是【开测提醒】,订阅游戏就不会错过最先的下载机会了咯!
- 全球好游抢先下
- 福利礼包免费领
- 官方直播陪你玩
泡泡龙赚赚赚好玩吗 泡泡龙赚赚赚玩法简介
期待已久的手游泡泡龙赚赚赚即将登陆九游,这款手机游戏吸引了大批玩家的关注,想下载这款游戏,有很多粉丝都在问九游小编泡泡龙赚赚赚好玩吗?泡泡龙赚赚赚值不值得玩?现在就为大家来简单分析下,看看这款游戏的玩法特点和游戏剧情介绍 。
泡泡龙赚赚赚快速预约/下载地址(需优先下载九游APP):
》》》》》#泡泡龙赚赚赚#《《《《《
1、泡泡龙赚赚赚简要评析:
简单的玩法, 不一样的体验, 快来试试吧
2、泡泡龙赚赚赚图片欣赏:
通过上面的游戏介绍和图片,可能大家对泡泡龙赚赚赚有大致的了解了,不过这么游戏要怎么样才能抢先体验到呢?不用担心,目前九游客户端已经开通了测试提醒了,通过在九游APP中搜索“泡泡龙赚赚赚”,点击右边的【订阅】或者是【开测提醒】,订阅游戏就不会错过最先的下载机会了咯!
- 全球好游抢先下
- 福利礼包免费领
- 官方直播陪你玩
美食泡泡龙好玩吗 美食泡泡龙玩法简介
期待已久的手游美食泡泡龙即将登陆九游,这款手机游戏吸引了大批玩家的关注,想下载这款游戏,有很多粉丝都在问九游小编美食泡泡龙好玩吗?美食泡泡龙值不值得玩?现在就为大家来简单分析下,看看这款游戏的玩法特点和游戏剧情介绍 。
美食泡泡龙快速预约/下载地址(需优先下载九游APP):
》》》》》#美食泡泡龙#《《《《《
1、美食泡泡龙简要评析:
好玩的经典版单机泡泡龙!
游戏规则十分简单,非常容易上手,经典单机泡泡龙玩法。
2、美食泡泡龙图片欣赏:
通过上面的游戏介绍和图片,可能大家对美食泡泡龙有大致的了解了,不过这么游戏要怎么样才能抢先体验到呢?不用担心,目前九游客户端已经开通了测试提醒了,通过在九游APP中搜索“美食泡泡龙”,点击右边的【订阅】或者是【开测提醒】,订阅游戏就不会错过最先的下载机会了咯!
- 全球好游抢先下
- 福利礼包免费领
- 官方直播陪你玩
王者泡泡龙好玩吗 王者泡泡龙玩法简介
期待已久的手游王者泡泡龙即将登陆九游,这款手机游戏吸引了大批玩家的关注,想下载这款游戏,有很多粉丝都在问九游小编王者泡泡龙好玩吗?王者泡泡龙值不值得玩?现在就为大家来简单分析下,看看这款游戏的玩法特点和游戏剧情介绍 。
王者泡泡龙快速预约/下载地址(需优先下载九游APP):
》》》》》#王者泡泡龙#《《《《《
1、王者泡泡龙简要评析:
王者泡泡龙是一款非常好玩的消除类游戏,游戏中的画质十分清晰,画面简洁明亮,游戏操作玩法也很简单容易上手。
2、王者泡泡龙图片欣赏:
通过上面的游戏介绍和图片,可能大家对王者泡泡龙有大致的了解了,不过这么游戏要怎么样才能抢先体验到呢?不用担心,目前九游客户端已经开通了测试提醒了,通过在九游APP中搜索“王者泡泡龙”,点击右边的【订阅】或者是【开测提醒】,订阅游戏就不会错过最先的下载机会了咯!
- 全球好游抢先下
- 福利礼包免费领
- 官方直播陪你玩
每日泡泡龙好玩吗 每日泡泡龙玩法简介
期待已久的手游每日泡泡龙即将登陆九游,这款手机游戏吸引了大批玩家的关注,想下载这款游戏,有很多粉丝都在问九游小编每日泡泡龙好玩吗?每日泡泡龙值不值得玩?现在就为大家来简单分析下,看看这款游戏的玩法特点和游戏剧情介绍 。
每日泡泡龙快速预约/下载地址(需优先下载九游APP):
》》》》》#每日泡泡龙#《《《《《
1、每日泡泡龙简要评析:
经典模式——全新设计的经典模式,关卡持续更新,闯关不断!
挑战高分-挑战高分,根本停不下来!
强力道具——各种特殊泡泡和强力道具,游戏爽翻天!
绚丽画面-炫丽的游戏画面,完美的游戏体验!
2、每日泡泡龙图片欣赏:
通过上面的游戏介绍和图片,可能大家对每日泡泡龙有大致的了解了,不过这么游戏要怎么样才能抢先体验到呢?不用担心,目前九游客户端已经开通了测试提醒了,通过在九游APP中搜索“每日泡泡龙”,点击右边的【订阅】或者是【开测提醒】,订阅游戏就不会错过最先的下载机会了咯!
- 全球好游抢先下
- 福利礼包免费领
- 官方直播陪你玩
泡泡龙超人好玩吗 泡泡龙超人玩法简介
期待已久的手游泡泡龙超人即将登陆九游,这款手机游戏吸引了大批玩家的关注,想下载这款游戏,有很多粉丝都在问九游小编泡泡龙超人好玩吗?泡泡龙超人值不值得玩?现在就为大家来简单分析下,看看这款游戏的玩法特点和游戏剧情介绍 。
泡泡龙超人快速预约/下载地址(需优先下载九游APP):
》》》》》#泡泡龙超人#《《《《《
1、泡泡龙超人简要评析:
经典的泡泡龙游戏, 总会给你一些特殊的惊喜
2、泡泡龙超人图片欣赏:
通过上面的游戏介绍和图片,可能大家对泡泡龙超人有大致的了解了,不过这么游戏要怎么样才能抢先体验到呢?不用担心,目前九游客户端已经开通了测试提醒了,通过在九游APP中搜索“泡泡龙超人”,点击右边的【订阅】或者是【开测提醒】,订阅游戏就不会错过最先的下载机会了咯!
- 全球好游抢先下
- 福利礼包免费领
- 官方直播陪你玩
相关专题
最新专题
- csgo饰品交易平台选哪个
- 江湖英雄志下载地址推荐
- 原神账号交易哪个专业
- 仙剑世界下载手游安装地址分享
- 七日世界免费下载渠道有哪些
- 燕云十六声最新版下载链接分享
- 咒术回战幻影夜行最新版下载地址分享
- 七日世界内测下载地址说明
- 爆裂小队安卓下载地址一览
- 机械恐龙大作战下载地址推荐
- 宝可梦大集结正式服下载地址分享
- 无尽梦回手游下载渠道分享
- 下载无限暖暖地址分享
- 武侠转刀下载地址分享
- 七日世界下载安装链接分享
- 免费的篮球游戏有哪几个
- 燕云十六声安卓版下载地址分享
- 一个不断升级弓箭的塔防游戏有哪些
- 经典的初中益智游戏有哪些
- 有趣的音乐节奏游戏有哪些
- 适合女生玩的小游戏可爱治愈休闲有哪些
- 2024最新手游哪些值得玩
- hellokitty游戏安卓版盘点
- 2024双人游戏2-4人有什么
- 火柴人联盟3怎么下载
- 2024高人气多人联机生存手游排行榜top5
- 燕云十六声有内测资格怎么下载
- 无限大冒险下载渠道介绍
- 七日世界安卓版下载介绍
- 耐玩的5v5公平竞技游戏有没有