日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python小游戏】当当当当 万众瞩目得《滑雪大冒险》来啦~(附源码)

發布時間:2025/3/21 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python小游戏】当当当当 万众瞩目得《滑雪大冒险》来啦~(附源码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前文

大家好!我是梨子同學!

希望大家多多支持我!哈哈

為了感謝每一個關注我的小可愛:💓每篇文章的項目源碼都是無償分享滴💓見文末

很多csdn的功能還在研究中,還有小編的文筆不好勿怪,會慢慢進步跟大家一起學習的

小編也一直在學習編程,如果代碼小程序出現錯誤歡迎大家評論區留言哈!

最后——如果文章有幫助到你,記得“關注”、“點贊”、“評論”三連哦~

導語

雪崩來啦!快點跑呀!

故事小背景:(胡編亂造的)

在極地的雪峰上,住著一個年輕的狩獵者,沒有人知道其名字,因為沒人會來這個地方,雪峰上只

有企鵝、雪怪和獵鷹,一如既往的一天,狩獵者還在木屋中熟睡著,可是狩獵者不知道一場危機正

悄悄來臨,危險正逼近,巨大的聲響驚醒了狩獵者,狩獵者朝窗外一看,發現雪崩正快速逼近,雪

崩馬上就要淹沒房屋了,幸運的是,狩獵者被雪沖出了房屋,睡眼朦朧的狩獵者開始了逃避雪崩的

極限滑雪旅程,速度就是生命。

嘿嘿,今天小編來給大家制造一個Python《滑雪大冒險🏂》小游戲!這款小游戲操作特別簡單

啦,游戲開始之后按住方向鍵左右即可滑動不同的方向!好啦 我們正式開始吧👇

正文

冬天到了,我們來一場滑雪大冒險吧👇

效果展示:

?游戲開始——

?撞上樹之后一次減少30分,一顆🚩加10分!

主程序:

import sys import cfg import pygame import random'''滑雪者類''' class SkierClass(pygame.sprite.Sprite):def __init__(self):pygame.sprite.Sprite.__init__(self)# 滑雪者的朝向(-2到2)self.direction = 0self.imagepaths = cfg.SKIER_IMAGE_PATHS[:-1]self.image = pygame.image.load(self.imagepaths[self.direction])self.rect = self.image.get_rect()self.rect.center = [320, 100]self.speed = [self.direction, 6-abs(self.direction)*2]'''改變滑雪者的朝向. 負數為向左,正數為向右,0為向前'''def turn(self, num):self.direction += numself.direction = max(-2, self.direction)self.direction = min(2, self.direction)center = self.rect.centerself.image = pygame.image.load(self.imagepaths[self.direction])self.rect = self.image.get_rect()self.rect.center = centerself.speed = [self.direction, 6-abs(self.direction)*2]return self.speed'''移動滑雪者'''def move(self):self.rect.centerx += self.speed[0]self.rect.centerx = max(20, self.rect.centerx)self.rect.centerx = min(620, self.rect.centerx)'''設置為摔倒狀態'''def setFall(self):self.image = pygame.image.load(cfg.SKIER_IMAGE_PATHS[-1])'''設置為站立狀態'''def setForward(self):self.direction = 0self.image = pygame.image.load(self.imagepaths[self.direction])''' Function:障礙物類 Input:img_path: 障礙物圖片路徑location: 障礙物位置attribute: 障礙物類別屬性 ''' class ObstacleClass(pygame.sprite.Sprite):def __init__(self, img_path, location, attribute):pygame.sprite.Sprite.__init__(self)self.img_path = img_pathself.image = pygame.image.load(self.img_path)self.location = locationself.rect = self.image.get_rect()self.rect.center = self.locationself.attribute = attributeself.passed = False'''移動'''def move(self, num):self.rect.centery = self.location[1] - num'''創建障礙物''' def createObstacles(s, e, num=10):obstacles = pygame.sprite.Group()locations = []for i in range(num):row = random.randint(s, e)col = random.randint(0, 9)location = [col*64+20, row*64+20]if location not in locations:locations.append(location)attribute = random.choice(list(cfg.OBSTACLE_PATHS.keys()))img_path = cfg.OBSTACLE_PATHS[attribute]obstacle = ObstacleClass(img_path, location, attribute)obstacles.add(obstacle)return obstacles'''合并障礙物''' def AddObstacles(obstacles0, obstacles1):obstacles = pygame.sprite.Group()for obstacle in obstacles0:obstacles.add(obstacle)for obstacle in obstacles1:obstacles.add(obstacle)return obstacles'''顯示游戲開始界面''' def ShowStartInterface(screen, screensize):screen.fill((255, 255, 255))tfont = pygame.font.Font(cfg.FONTPATH, screensize[0]//5)cfont = pygame.font.Font(cfg.FONTPATH, screensize[0]//20)title = tfont.render(u'滑雪游戲', True, (255, 0, 0))content = cfont.render(u'按任意鍵開始游戲', True, (0, 0, 255))trect = title.get_rect()trect.midtop = (screensize[0]/2, screensize[1]/5)crect = content.get_rect()crect.midtop = (screensize[0]/2, screensize[1]/2)screen.blit(title, trect)screen.blit(content, crect)while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()elif event.type == pygame.KEYDOWN:returnpygame.display.update()'''顯示分數''' def showScore(screen, score, pos=(10, 10)):font = pygame.font.Font(cfg.FONTPATH, 30)score_text = font.render("Score: %s" % score, True, (0, 0, 0))screen.blit(score_text, pos)'''更新當前幀的游戲畫面''' def updateFrame(screen, obstacles, skier, score):screen.fill((255, 255, 255))obstacles.draw(screen)screen.blit(skier.image, skier.rect)showScore(screen, score)pygame.display.update()'''主程序''' def main():# 游戲初始化pygame.init()pygame.mixer.init()pygame.mixer.music.load(cfg.BGMPATH)pygame.mixer.music.set_volume(0.4)pygame.mixer.music.play(-1)# 設置屏幕screen = pygame.display.set_mode(cfg.SCREENSIZE)pygame.display.set_caption('滑雪大冒險')# 游戲開始界面ShowStartInterface(screen, cfg.SCREENSIZE)# 實例化游戲精靈# --滑雪者skier = SkierClass()# --創建障礙物obstacles0 = createObstacles(20, 29)obstacles1 = createObstacles(10, 19)obstaclesflag = 0obstacles = AddObstacles(obstacles0, obstacles1)# 游戲clockclock = pygame.time.Clock()# 記錄滑雪的距離distance = 0# 記錄當前的分數score = 0# 記錄當前的速度speed = [0, 6]# 游戲主循環while True:# --事件捕獲for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()if event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT or event.key == pygame.K_a:speed = skier.turn(-1)elif event.key == pygame.K_RIGHT or event.key == pygame.K_d:speed = skier.turn(1)# --更新當前游戲幀的數據skier.move()distance += speed[1]if distance >= 640 and obstaclesflag == 0:obstaclesflag = 1obstacles0 = createObstacles(20, 29)obstacles = AddObstacles(obstacles0, obstacles1)if distance >= 1280 and obstaclesflag == 1:obstaclesflag = 0distance -= 1280for obstacle in obstacles0:obstacle.location[1] = obstacle.location[1] - 1280obstacles1 = createObstacles(10, 19)obstacles = AddObstacles(obstacles0, obstacles1)for obstacle in obstacles:obstacle.move(distance)# --碰撞檢測hitted_obstacles = pygame.sprite.spritecollide(skier, obstacles, False)if hitted_obstacles:if hitted_obstacles[0].attribute == "tree" and not hitted_obstacles[0].passed:score -= 50skier.setFall()updateFrame(screen, obstacles, skier, score)pygame.time.delay(1000)skier.setForward()speed = [0, 6]hitted_obstacles[0].passed = Trueelif hitted_obstacles[0].attribute == "flag" and not hitted_obstacles[0].passed:score += 10obstacles.remove(hitted_obstacles[0])# --更新屏幕updateFrame(screen, obstacles, skier, score)clock.tick(cfg.FPS)'''run''' if __name__ == '__main__':main()

配置文件代碼:

import os'''FPS''' FPS = 40 '''游戲屏幕大小''' SCREENSIZE = (640, 640) '''圖片路徑''' SKIER_IMAGE_PATHS = [os.path.join(os.getcwd(), 'resources/images/skier_forward.png'),os.path.join(os.getcwd(), 'resources/images/skier_right1.png'),os.path.join(os.getcwd(), 'resources/images/skier_right2.png'),os.path.join(os.getcwd(), 'resources/images/skier_left2.png'),os.path.join(os.getcwd(), 'resources/images/skier_left1.png'),os.path.join(os.getcwd(), 'resources/images/skier_fall.png') ] OBSTACLE_PATHS = {'tree': os.path.join(os.getcwd(), 'resources/images/tree.png'),'flag': os.path.join(os.getcwd(), 'resources/images/flag.png') } '''背景音樂路徑''' BGMPATH = os.path.join(os.getcwd(), 'resources/music/bgm.mp3') '''字體路徑''' FONTPATH = os.path.join(os.getcwd(), 'resources/font/FZSTK.TTF')

總結

你們的支持是我最大的動力!!記得三連哦~mua?歡迎大家閱讀往期的文章哦~

關注小編獲取更多精彩內容!

?制作不易,記得一鍵三連哦!!?如需打包好的源碼+素材免費分享滴!傳送門

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的【Python小游戏】当当当当 万众瞩目得《滑雪大冒险》来啦~(附源码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。