日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python實現超級瑪麗游戲

瀏覽:26日期:2022-08-02 09:07:45

python制作超級瑪麗游戲,供大家參考,具體內容如下

這篇文章,我們優先介紹超級瑪麗游戲中的多狀態跳躍,和行走地圖拖動的原理,然后實現。并實現倒計時和金幣動態效果

python實現超級瑪麗游戲

python實現超級瑪麗游戲

python實現超級瑪麗游戲

接下來用下面這四張圖,就可以完全懂得游戲中背景是怎么會移動的。

圖1

python實現超級瑪麗游戲

圖2

python實現超級瑪麗游戲

圖3

python實現超級瑪麗游戲

圖4

python實現超級瑪麗游戲

由于代碼是我前幾年學習python的時候做的,代碼寫的很擠都整到一個源文件中,大家看的時候仔細。

然后上源代碼:

#!/usr/bin/env python # -*- coding:utf-8 -*- import pygame,os,wxfrom random import randintfrom sys import exitfrom pygame.locals import *pygame.init()def main(): #獲取屏幕大小 app=wx.App() WHFRAMES=wx.DisplaySize() WIDTH=int(WHFRAMES[0]*0.7) HEIGHT=int(WHFRAMES[1]*0.8) Timers = 0 #游戲定時器 TimersSec = 0 #秒 tim_psd = 0 #獲取屏幕大小 screen=pygame.display.set_mode((WIDTH,HEIGHT),0,32) caption=pygame.display.set_caption('超級馬里奧') screen.fill([255,255,255]) mariofont = pygame.font.Font(’fonts/poster.ttf’,22) mario_name = mariofont.render('MARIO',True,(84,65,190),None) #Game_world = mariofont.render('WORLD',True,(84,65,190),None) Game_moneyX = mariofont.render('X',True,(255,255,128),None) Game_time = mariofont.render('TIME',True,(84,65,190),None) money_ic5 = pygame.image.load(’images/PTModelSprite_ID21675.png’) money_ic5 = pygame.transform.scale(money_ic5, (25, 25)) money_ic6 = pygame.image.load(’images/PTModelSprite_ID21676.png’) money_ic6 = pygame.transform.scale(money_ic6, (10, 25)) money_ic7 = pygame.image.load(’images/PTModelSprite_ID21677.png’) money_ic7 = pygame.transform.scale(money_ic7, (25, 25)) money_ic8 = pygame.image.load(’images/PTModelSprite_ID21678.png’) money_ic8 = pygame.transform.scale(money_ic8, (25, 25)) money_timers = 0 #圖片輪播定時器 Game_world = pygame.image.load(’images/PTModelSprite_ID2478.png’) background = pygame.image.load(’images/PTModelSprite_ID35342.png’).convert_alpha() background = pygame.transform.scale(background, (WIDTH, HEIGHT)) Roads = pygame.image.load(’images/PTModelSprite_ID3790.png’).convert_alpha() Roads2 = pygame.image.load(’images/PTModelSprite_ID4224.png’).convert_alpha() hero = pygame.image.load(’images/PTModelSprite_ID34297.png’).convert_alpha() x,y = 15,HEIGHT-200 inp_flag = -2 #(stop:-1 left drection ,-2 right drection) ,(walk:1 right drection ,2 left drection) times,times2 = 0,0 #人物動作定時器 move_values,jump_values,jump_values2,jump_values3 = 12,0,0,0 #一步移動的距離 和 跳躍的值1,2 jump_adder,jump_max_point = 0,50 #跳躍累加器 用來累加按鍵的長短 然后判斷跳躍的高度,跳躍的初始值最高點 jump_flag = 0 bg_w_1,bg_w_2 = 0,WIDTH-2 #兩張壁紙 一前一后循環拖動的變量 #播放背景 #播放背景 #游戲信息數據定義 score = 0 money = 0 world = 11 time = 400 Gdata = [score,money,world,time] #游戲信息數據定義 #初始化函數 def game_initializaion(score,money,world,time,Gdata,TimersSec,Timers,x,y,inp_flag,times,times2,move_values,jump_values,jump_values2,jump_values3,jump_adder,jump_max_point,jump_flag,bg_w_1,bg_w_2,tim_psd):#數據初始化 #游戲初始化數據 inp_flag = -2 #(stop:-1 left drection ,-2 right drection) ,(walk:1 right drection ,2 left drection) x,y = 15,HEIGHT-200 #馬里奧坐標 times,times2 = 0,0 #人物動作定時器 move_values,jump_values,jump_values2,jump_values3 = 12,0,0,0 #一步移動的距離 和 跳躍的值1,2 jump_adder,jump_max_point = 0,50 #跳躍累加器 用來累加按鍵的長短 然后判斷跳躍的高度,跳躍的初始值最高點 jump_flag = 0 tim_psd = 0 bg_w_1,bg_w_2 = 0,WIDTH-2 #兩張壁紙 一前一后循環拖動的變量 Timers = 0 #游戲定時器 score = 0 #開始分數 money = 0 #開始金錢 world = 11 #世界關卡第一關1-1 = 11 time = 400 #游戲總時間 TimersSec = 0 #游戲里的秒 Gdata = [score,money,world,time] #游戲初始化數據 return score,money,world,time,Gdata,TimersSec,Timers,x,y,inp_flag,times,times2,move_values,jump_values,jump_values2,jump_values3,jump_adder,jump_max_point,jump_flag,bg_w_1,bg_w_2,tim_psd #初始化函數 score,money,world,time,Gdata,TimersSec,Timers,x,y,inp_flag,times,times2,move_values,jump_values,jump_values2,jump_values3,jump_adder,jump_max_point,jump_flag,bg_w_1,bg_w_2,tim_psd = game_initializaion(score,money,world,time,Gdata,TimersSec,Timers,x,y,inp_flag,times,times2,move_values,jump_values,jump_values2,jump_values3,jump_adder,jump_max_point,jump_flag,bg_w_1,bg_w_2,tim_psd)#數據初始化主調函數 clock = pygame.time.Clock() pygame.key.set_repeat(55) pygame.display.flip() def WalkAction(times,times2,inp_flag,hero): #walk action if y < HEIGHT -200: #如果在空中 為跳躍圖片 if inp_flag == 1: #right hero = pygame.image.load(’images/PTModelSprite_ID34259.png’).convert_alpha() if inp_flag == 2: #left hero = pygame.image.load(’images/PTModelSprite_ID34259.png’).convert_alpha() hero = pygame.transform.flip(hero, True, False) else: if inp_flag == 1: #right times += 2 if times < 20: hero = pygame.image.load(’images/PTModelSprite_ID34256.png’).convert_alpha() elif times < 20: hero = pygame.image.load(’images/PTModelSprite_ID34257..png’).convert_alpha() elif times < 40: hero = pygame.image.load(’images/PTModelSprite_ID34258.png’).convert_alpha() elif times < 60: hero = pygame.image.load(’images/PTModelSprite_ID34259.png’).convert_alpha() elif times < 80: hero = pygame.image.load(’images/PTModelSprite_ID34260.png’).convert_alpha() elif times < 100: hero = pygame.image.load(’images/PTModelSprite_ID34261.png’).convert_alpha() elif times < 120: hero = pygame.image.load(’images/PTModelSprite_ID34297.png’).convert_alpha() elif times < 140: times = 0 if inp_flag == 2: #left times2 += 2 if times2 < 20: hero = pygame.image.load(’images/PTModelSprite_ID34256.png’).convert_alpha() hero = pygame.transform.flip(hero, True, False) elif times2 < 20: hero = pygame.image.load(’images/PTModelSprite_ID34257..png’).convert_alpha() hero = pygame.transform.flip(hero, True, False) elif times2 < 40: hero = pygame.image.load(’images/PTModelSprite_ID34258.png’).convert_alpha() hero = pygame.transform.flip(hero, True, False) elif times2 < 60: hero = pygame.image.load(’images/PTModelSprite_ID34259.png’).convert_alpha() hero = pygame.transform.flip(hero, True, False) elif times2 < 80: hero = pygame.image.load(’images/PTModelSprite_ID34260.png’).convert_alpha() hero = pygame.transform.flip(hero, True, False) elif times2 < 100: hero = pygame.image.load(’images/PTModelSprite_ID34261.png’).convert_alpha() hero = pygame.transform.flip(hero, True, False) elif times2 < 120: hero = pygame.image.load(’images/PTModelSprite_ID34297.png’).convert_alpha() hero = pygame.transform.flip(hero, True, False) elif times2 < 140: times2 = 0 elif inp_flag == -1: hero = pygame.image.load(’images/PTModelSprite_ID34297.png’).convert_alpha() hero = pygame.transform.flip(hero, True, False) times2 = 0 elif inp_flag == -2: hero = pygame.image.load(’images/PTModelSprite_ID34297.png’).convert_alpha() times2 = 0 return times,times2,inp_flag,hero def HeroHeightIs(): #判斷角色是否為地面y軸 if y >= HEIGHT-200: return False else: #這是在控制的狀況 return True def Reset_max_point(jump_max_point): #在地面重設默認跳躍的最高點(還原) if y >= (HEIGHT-200): jump_max_point = 50 #默認最高點是 50 return jump_max_point def jump_leftScreenBgnotMove(x): if x<(WIDTH/4): if jump_max_point == 50 : if inp_flag == 1: x+=(2.7) if inp_flag == 2: x-=(2.7) elif jump_max_point == 100 : if inp_flag == 1: x+=(0.27) if inp_flag == 2: x-=(0.27) return x def Screen_MoneyIc(screen,money_ic5,money_ic6,money_ic7,money_ic8,money_timers) : #繪制第二項 金錢圖標 money_timers += 1 if money_timers < 15 : screen.blit(money_ic5,(WIDTH*0.24,25)) #繪制第二項 金錢圖標1 elif money_timers < 40 : screen.blit(money_ic6,(WIDTH*0.24+7.5,25)) #繪制第二項 金錢圖標2 elif money_timers < 55 : screen.blit(money_ic7,(WIDTH*0.24,25)) #繪制第二項 金錢圖標3 elif money_timers < 80 : screen.blit(money_ic8,(WIDTH*0.24,25)) #繪制第二項 金錢圖標4 else: money_timers = 0 return screen,money_ic5,money_ic6,money_ic7,money_ic8,money_timers def Game_Timers(TimersSec,Gdata,time_passed,tim_psd) : #游戲定時器 tim_psd += time_passed if tim_psd >= 1000 : #為1秒的時候 TimersSec += 1 tim_psd = 0 Gdata[3] = 400 - TimersSec #游戲所剩時間 return TimersSec,Gdata,time_passed,tim_psd while True: #事件檢測 for event in pygame.event.get(): if event.type == pygame.QUIT: exit() if event.type == KEYDOWN: keys=pygame.key.get_pressed() if keys[pygame.K_a]: if event.key == K_w and inp_flag == 0: if y <= HEIGHT-200: #看y坐標 必須在起點 jump_flag = 3 #按了上 和 向前 if y >= HEIGHT-200:#如果角色在平地才走動 后退 左 #if bg_w_1==0: #x-=5 x-=(move_values+3.5) inp_flag = 2 if keys[pygame.K_d]: if event.key == K_w and inp_flag == 0: if y <= HEIGHT-200: #看y坐標 必須在起點 jump_flag = 2 #按了上 和 向前 if y >= HEIGHT-200:#如果角色在平地才走動 前景 右 if x<(WIDTH/4): #角色還在屏幕左邊 可移動 x+=(move_values+3.5) inp_flag = 1 if keys[pygame.K_w]: #jump jump_flag = 1 #僅僅是按了跳躍 jump_adder += 1 #跳躍累加器 if event.key == pygame.K_d and (jump_flag == 1): if y == HEIGHT-200: #看y坐標 必須在起點 jump_flag = 2 #按了上 和 向前 if event.key == pygame.K_a and (jump_flag == 1): if y == HEIGHT-200: #看y坐標 必須在起點 jump_flag = 3 #按了上 和 向后 if keys[pygame.K_p]: #重啟 score,money,world,time,Gdata,TimersSec,Timers,x,y,inp_flag,times,times2,move_values, jump_values,jump_values2,jump_values3,jump_adder,jump_max_point,jump_flag,bg_w_1,bg_w_2,tim_psd = game_initializaion(score,money,world,time,Gdata,TimersSec,Timers,x,y,inp_flag,times,times2, move_values,jump_values,jump_values2,jump_values3,jump_adder,jump_max_point,jump_flag,bg_w_1, bg_w_2,tim_psd) if event.type == KEYUP: if keys[pygame.K_a]: inp_flag = -1 if keys[pygame.K_d]: inp_flag = -2 if keys[pygame.K_w]: if jump_adder < 4 : #如果松開按鍵沒有達到jump_adder跳躍累加器的值 (那么就他們置零) jump_adder = 0 ##在地面時 重設默認跳躍的最高點(還原) jump_max_point = Reset_max_point(jump_max_point) #jump action 1 if jump_flag == 1: #只有跳躍 #讓其他方式跳躍值為 0 jump_values2 = 0 jump_values3 = 0 #------ #持續按鍵跳躍的結構 if jump_adder >=4 : jump_max_point = 100 #第二次跳躍最大值 jump_adder = 0 #------ jump_values+=1.25 if jump_values <= jump_max_point: y -= 5 x = jump_leftScreenBgnotMove(x) if jump_max_point == 100:#跳躍的高度不同 y坐標的速度也要慢點 y += 1.5 x = jump_leftScreenBgnotMove(x) elif jump_values <= jump_max_point+8: pass elif jump_values <=jump_max_point*2+8: if HeroHeightIs(): #如果角色在控制 就繼續加y軸的值 1 y += 5 x = jump_leftScreenBgnotMove(x) if jump_max_point == 100:#跳躍的高度不同 y坐標的速度也要慢點 y -= 1.5 x = jump_leftScreenBgnotMove(x) else: y = HEIGHT-200 jump_flag = 0 jump_values = 0 #wall detection if x<=0: x=0 if x+hero.get_width()>WIDTH: x=WIDTH-hero.get_width() #角色的動作 函數 times,times2,inp_flag,hero = WalkAction(times,times2,inp_flag,hero) #1 .bg move---blit screen.blit(background,(bg_w_2,0)) screen.blit(background,(bg_w_1,0)) #繪制信息 screen.blit(mario_name,(WIDTH*0.03,3))#繪制第一項 名字 screen,money_ic5,money_ic6,money_ic7,money_ic8,money_timers = Screen_MoneyIc(screen,money_ic5,money_ic6,money_ic7,money_ic8,money_timers) #繪制第二項 金錢圖標 screen.blit(Game_moneyX,(WIDTH*0.28,24))#繪制第二項 x screen.blit(Game_world,(WIDTH*0.5-Game_world.get_width()/2,3))#繪制第三項 世界地圖 screen.blit(Game_time,(WIDTH*0.84,3))#繪制第四項 游戲時間 for DATAi in range(4): Game_data = mariofont.render('%s'% Gdata[DATAi],True,(255,255,128),None) #綜合繪制: 分數 金幣 關卡 游戲時間 if DATAi != 2: screen.blit(Game_data,(WIDTH*(0.03+DATAi*0.27),24)) elif DATAi == 2: Game_data = mariofont.render('%s-%s'% (Gdata[DATAi]/10,Gdata[DATAi]%10),True,(255,255,128),None) #綜合繪制: 分數 金幣 關卡 游戲時間 screen.blit(Game_data,(WIDTH*0.5-Game_data.get_width()/2,15)) #繪制信息 #2 .bg move--panel #if inp_flag == 2: #往左走 壁紙向右拖動 # bg_w_1+=move_values/4 # bg_w_2+=move_values/4 if inp_flag == 1 and x>=(WIDTH/4):#往右走 壁紙向左拖動 bg_w_1-=(move_values/4-0.5) bg_w_2-=(move_values/4-0.5) if bg_w_1>=0: bg_w_1,bg_w_2 = 0,WIDTH-2 if bg_w_1<-WIDTH: bg_w_1,bg_w_2 = 0,WIDTH-2 screen.blit(hero,(x,y)) pygame.time.delay(2) #毫秒 time_passed = clock.tick() TimersSec,Gdata,time_passed,tim_psd = Game_Timers(TimersSec,Gdata,time_passed,tim_psd) #游戲定時 pygame.display.update() if __name__ == ’__main__’: main()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品三级| 麻豆精品蜜桃| 蜜臀久久99精品久久久久宅男| 99re国产精品| 日韩一区欧美二区| 日韩专区欧美专区| 欧美粗暴jizz性欧美20| 欧美亚洲国产精品久久| 欧美精品一线| 蜜桃久久久久久| 日产欧产美韩系列久久99| 国产亚洲精品精品国产亚洲综合| 国产欧美一区二区色老头| 国产精品成人自拍| 成人精品动漫一区二区三区| 国产精品毛片久久| 国精品一区二区三区| 久久国产88| 日韩av成人高清| 久久av偷拍| 日韩精品dvd| 蜜桃国内精品久久久久软件9| 美女少妇全过程你懂的久久| 一区二区精品| 国产精品中文字幕制服诱惑| 国产一区二区三区不卡av| 国产精品字幕| 免费一级片91| 国产精品成人自拍| 中国字幕a在线看韩国电影| 香蕉精品视频在线观看| 亚洲日本免费电影| 久久99久久久精品欧美| 日韩欧美字幕| 免费久久久久久久久| 日本亚洲欧美天堂免费| 日本特黄久久久高潮| 久久久久久一区二区| 红桃视频欧美| 欧美日韩va| av资源亚洲| 免费国产亚洲视频| 久久99蜜桃| 女人天堂亚洲aⅴ在线观看| 日本久久一区| av资源亚洲| 亚洲乱码一区| 欧美天堂视频| 香蕉久久久久久| 亚洲播播91| 日韩精品高清不卡| 欧美好骚综合网| 一本一道久久a久久| 久久久久久婷| 在线精品一区| a天堂资源在线| 亚洲日本免费电影| 国产一区二区三区黄网站| 99re国产精品| 国产中文字幕一区二区三区| 视频一区中文字幕国产| 国产一区二区三区精品在线观看| 乱人伦精品视频在线观看| 国产伦一区二区三区| 在线一区免费| 精品一区二区三区亚洲| 九一精品国产| 久久av免费看| 石原莉奈在线亚洲二区| 精品少妇一区| 日韩毛片一区| 99久久激情| 国产精品三级| 免费日韩av| 日韩国产一区二区| 国产丝袜一区| 免费国产自线拍一欧美视频| 麻豆理论在线观看| 欧美日韩亚洲一区三区| 亚洲综合精品四区| 日韩欧美中文| 欧美日本精品| 日韩中文欧美在线| 国产伊人精品| 91免费精品| 国产精品国码视频| 亚洲tv在线| 男人的天堂亚洲一区| 久久一级电影| 国产精品原创| 欧美极品中文字幕| 日韩中文字幕无砖| 久久亚洲精品伦理| 蜜桃国内精品久久久久软件9| 福利在线免费视频| 久久精品五月| 国产欧美69| 日韩高清一区在线| 亚洲一二av| 久久亚洲影院| 午夜亚洲一区| 久久中文视频| 日韩欧美综合| zzzwww在线看片免费| 粉嫩av一区二区三区四区五区| 日韩在线电影| 日韩精品免费一区二区夜夜嗨 | 亚洲欧洲美洲国产香蕉| 九九综合在线| 五月精品视频| 91tv亚洲精品香蕉国产一区| 久久毛片亚洲| 国产亚洲一区二区手机在线观看 | 精品亚洲a∨| 久久不见久久见免费视频7| 国产日韩在线观看视频| 久久精品72免费观看| 日韩亚洲精品在线观看| 日韩在线观看中文字幕| 日本vs亚洲vs韩国一区三区二区| 综合精品一区| 日韩三级视频| 91成人在线| 国产精品xxx在线观看| 日本欧美一区二区在线观看| 欧美一区久久| 麻豆精品一区二区综合av| 久久激情五月婷婷| 日韩欧美一区免费| 欧美13videosex性极品| 久热精品在线| 亚洲欧美日韩国产一区二区| 国产美女一区| 综合亚洲色图| 奇米777国产一区国产二区| 国产日韩一区| 国产精品www994| 九九久久国产| 日本免费久久| 精品免费av在线| 免费不卡中文字幕在线| 免费精品视频| 清纯唯美亚洲综合一区| 久久久免费人体| 日韩黄色大片| 先锋影音国产一区| 日韩黄色免费网站| 麻豆国产欧美日韩综合精品二区| 在线天堂中文资源最新版| 欧美日韩在线播放视频| 99国产精品私拍| 日韩福利视频一区| 欧美国产亚洲精品| 国产精品久久久久av电视剧| 欧美亚洲激情| 日韩精品a在线观看91| 久久精品资源| 99久久激情| 日韩精品福利一区二区三区| 九九久久国产| 在线国产一区| 欧美精品观看| 影视先锋久久| 亚洲aa在线| 国产色播av在线| 蜜桃一区二区三区在线观看| 久久一区视频| 一区免费在线| 国产精品最新自拍| 午夜精品久久久久久久久久蜜桃| 久久亚洲国产精品一区二区| 国产精品v亚洲精品v日韩精品| 少妇精品导航| 婷婷亚洲成人| 中文字幕在线高清| 亚洲精选久久| 欧美成人a交片免费看| 中文无码日韩欧| 视频在线不卡免费观看| 亚洲一区二区免费看| 国产精久久一区二区| 免费观看不卡av| 国产精品一区二区精品视频观看| 999国产精品视频| 日本精品在线播放| 欧美日韩水蜜桃| 国产精品三级| 亚洲国产成人精品女人| 国产精品玖玖玖在线资源| 亚洲二区三区不卡| 久久精品资源| 蜜臀精品久久久久久蜜臀| 日本一区二区高清不卡| 亚洲制服欧美另类| 日韩国产网站| 久久99久久人婷婷精品综合| 六月丁香综合| 999国产精品永久免费视频app| 国产欧美88| 免播放器亚洲|