国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

pygame制作游戲人物精靈的行走及二段跳實現方法

來源:懂視網 責編:小采 時間:2020-11-27 14:13:54
文檔

pygame制作游戲人物精靈的行走及二段跳實現方法

pygame制作游戲人物精靈的行走及二段跳實現方法:不得不承認《Python游戲編程入門》這本書翻譯、排版非常之爛,但是里面的demo還是很好的,之前做了些改編放到這里。先是素材:背景精靈所有素材均取自此書接下來就是精靈類的創建了: (self) self.master_image === -1= 1= 1=== 1======
推薦度:
導讀pygame制作游戲人物精靈的行走及二段跳實現方法:不得不承認《Python游戲編程入門》這本書翻譯、排版非常之爛,但是里面的demo還是很好的,之前做了些改編放到這里。先是素材:背景精靈所有素材均取自此書接下來就是精靈類的創建了: (self) self.master_image === -1= 1= 1=== 1======
不得不承認《Python游戲編程入門》這本書翻譯、排版非常之爛,但是里面的demo還是很好的,之前做了些改編放到這里。

先是素材:

背景

精靈

所有素材均取自此書

接下來就是精靈類的創建了:

 (self)
 self.master_image === -1= 1= 1=== 1============rect == (rect.width // width) * (rect.height // height) - 1 update(self, current_time, rate=30 current_time > self.last_time ++= 1 self.frame >== self.frame !== (self.frame % self.columns) *= (self.frame // self.columns) *=== self.frame

將精靈類“放置”到游戲屏幕上,并加上背景

pygame.init()
screen = pygame.display.set_mode((800, 600))
font = pygame.font.Font(None, 24)
framerate = pygame.time.Clock()

bg = pygame.image.load("background.png").convert_alpha()
pl = pygame.image.load('caveman.png').convert_alpha()# 創建精靈組group = pygame.sprite.Group()


player = MySprite(screen)
player.load("caveman.png", 50, 64, 8)
player.first_frame = 1player.last_frame = 7player.position = 400, 303group.add(player)while True:for event in pygame.event.get():if event.type == QUIT:
 sys.exit()# 設置幀數framerate.tick(30)
 ticks = pygame.time.get_ticks()

這樣的話精靈就在畫布上了,我們得讓它能左右移動:

keys = pygame.key.get_pressed()if keys[K_ESCAPE]:
 sys.exit()if keys[K_RIGHT]:
 player.X += 8if keys[K_LEFT]:if player.X > 0:
 player.X -= 8

然后實現跳躍及二段跳躍

這里需要說下二段跳躍的注意點:

1.直到落地前,只能跳兩次,也就是說精靈進行二次跳躍后不能再跳了

2.按下空格后,精靈的加速度重置

,這需要修改前面的代碼:

jump_vel = 0.0# 設置一個記錄跳躍次數的變量space_number = 0# 跳躍判斷player_jumping = False
player_start_y = player.Ywhile True:for event in pygame.event.get():if event.type == QUIT:
 sys.exit()if event.type == KEYDOWN:if event.key == K_SPACE:# 跳躍次數小于2次時,if space_number < 2:
 jump_vel = -15.0space_number += 1player_jumping = True

 keys = pygame.key.get_pressed()if keys[K_ESCAPE]:
 sys.exit()if keys[K_RIGHT]:
 player.X += 8if keys[K_LEFT]:if player.X > 0:
 player.X -= 8# 設置幀數framerate.tick(30)
 ticks = pygame.time.get_ticks()# 當按下空格后,jump_vel變量不斷變大,直到接觸地面if player_jumping:
 player.Y += jump_vel
 jump_vel += 2# 落地后,重置跳躍速度和其他判斷變量if player.Y >= player_start_y:
 player_jumping = False
 player.Y = player_start_y
 jump_vel = 0
 space_number = 0# 創建背景 screen.blit(bg, (0, 0))# 精靈組更新group.update(ticks, 50)
 group.draw(screen)

 pygame.display.update()

所有代碼:

import sys, time, random, math, pygamefrom pygame.locals import *class MySprite(pygame.sprite.Sprite):def __init__(self, target):
 pygame.sprite.Sprite.__init__(self)
 self.master_image = None
 self.frame = 0
 self.old_frame = -1self.frame_width = 1self.frame_height = 1self.first_frame = 0
 self.last_frame = 0
 self.columns = 1self.last_time = 0#   使用property方法,讓精靈類對坐標操作更方便def _getx(self):return self.rect.xdef _setx(self, value):
 self.rect.x = value

 X = property(_getx, _setx)def _gety(self):return self.rect.ydef _sety(self, value):
 self.rect.y = value

 Y = property(_gety, _sety)def _getpos(self):return self.rect.topleftdef _setpos(self, pos):
 self.rect.topleft = pos

 position = property(_getpos, _setpos)def load(self, filename, width, height, columns):
 self.master_image = pygame.image.load(filename).convert_alpha()
 self.frame_width = width
 self.frame_height = height
 self.rect = Rect(0, 0, width, height)
 self.columns = columns
 rect = self.master_image.get_rect()
 self.last_frame = (rect.width // width) * (rect.height // height) - 1def update(self, current_time, rate=30):#   更新幀數if current_time > self.last_time + rate:
 self.frame += 1if self.frame > self.last_frame:
 self.frame = self.first_frame
 self.last_time = current_time# 當幀數發生改變時,創建新的圖片if self.frame != self.old_frame:
 frame_x = (self.frame % self.columns) * self.frame_width
 frame_y = (self.frame // self.columns) * self.frame_height
 rect = Rect(frame_x, frame_y, self.frame_width, self.frame_height)
 self.image = self.master_image.subsurface(rect)
 self.old_frame = self.frame

pygame.init()
screen = pygame.display.set_mode((800, 600))
font = pygame.font.Font(None, 24)
framerate = pygame.time.Clock()

bg = pygame.image.load("background.png").convert_alpha()
pl = pygame.image.load('caveman.png').convert_alpha()# 創建精靈組group = pygame.sprite.Group()


player = MySprite(screen)
player.load("caveman.png", 50, 64, 8)
player.first_frame = 1player.last_frame = 7player.position = 400, 303group.add(player)


jump_vel = 0.0# 設置一個記錄跳躍次數的變量space_number = 0# 跳躍判斷player_jumping = False
player_start_y = player.Ywhile True:for event in pygame.event.get():if event.type == QUIT:
 sys.exit()if event.type == KEYDOWN:if event.key == K_SPACE:# 跳躍次數小于2次時,if space_number < 2:
 jump_vel = -15.0space_number += 1player_jumping = True

 keys = pygame.key.get_pressed()if keys[K_ESCAPE]:
 sys.exit()if keys[K_RIGHT]:
 player.X += 8if keys[K_LEFT]:if player.X > 0:
 player.X -= 8# 設置幀數framerate.tick(30)
 ticks = pygame.time.get_ticks()# 當按下空格后,jump_vel變量不斷變大,直到接觸地面if player_jumping:
 player.Y += jump_vel
 jump_vel += 2# 落地后if player.Y >= player_start_y:
 player_jumping = False
 player.Y = player_start_y
 jump_vel = 0
 space_number = 0
 rush_number = 0# 創建背景 screen.blit(bg, (0, 0))# 精靈組更新group.update(ticks, 50)
 group.draw(screen)

 pygame.display.update()

這樣,一個粗糙的、會二段跳的精靈就完成了。

很感謝這本書提供單次跳躍的思路,讓我有思考二段跳的想法。其實像二段跳這類看上去容易,但實現其實還是需要思考一番的。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

pygame制作游戲人物精靈的行走及二段跳實現方法

pygame制作游戲人物精靈的行走及二段跳實現方法:不得不承認《Python游戲編程入門》這本書翻譯、排版非常之爛,但是里面的demo還是很好的,之前做了些改編放到這里。先是素材:背景精靈所有素材均取自此書接下來就是精靈類的創建了: (self) self.master_image === -1= 1= 1=== 1======
推薦度:
標簽: 方法 游戲 實現
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美日韩国产码高清综合人成 | 亚洲国产精品日韩在线 | 欧美日韩国产亚洲人成 | 亚洲欧美另类自拍第一页 | 欧洲综合网 | 九九九国产在线 | 国产精品免费视频能看 | 波多野吉衣在线观看 | 欧美一区二区在线视频 | 国产欧美日韩在线 | 精品欧美一区二区三区精品久久 | 亚洲图欧美 | 另类亚洲色图 | 久久精品123 | 国产成人久久精品区一区二区 | 国产精品成久久久久三级 | 欧美一级爱操视频 | 欧美h网 | 亚洲一区二区在线免费观看 | 亚州色图欧美色图 | 欧美一区二区日韩一区二区 | 人人爽人人草 | 在线观看欧美 | 唯美清纯另类亚洲 | 免费一级a毛片在线播放直播 | 在线观看国产视频 | 国产欧美另类久久精品91 | 在线观看国产欧美 | 91精品久久久 | 在线观看视频亚洲 | 国产在线视频一区 | 亚洲欧美一区二区三区九九九 | 国产一区二区久久久 | 久久经典视频 | 国产欧美曰韩一区二区三区 | 欧美视频精品一区二区三区 | 国产美女一级毛片 | 国产成人欧美一区二区三区的 | 国产91久久久久久久免费 | 亚洲成a人一区二区三区 | 亚洲精品在线免费 |