日韩av片子_国产自在自线午夜精品视频在_使劲快高潮了国语对白在线_久久免费毛片大全_激情丁香综合_欧美成人精品欧美一级乱黄码

中培偉業IT資訊頻道
您現在的位置:首頁 > IT資訊 > 軟件研發 > 如何用Python創建自己的Dino Run?

如何用Python創建自己的Dino Run?

2020-07-21 14:55:05 | 來源:中培企業IT培訓網

今天,將向大家展示如何構建離線狀態下幾乎每個人都可以玩的最受歡迎的游戲之一。如果您猜測哪個游戲,就是在談論瀏覽器的Dino游戲。但是,我們的Dino游戲是彩色版本的瀏覽器版本的修改形式。現在,讓我們直接進入教程,如何用Python創建自己的Dino Run?請遵循所有精心給出的說明,以免在運行Dino Run游戲時出現任何問題。

  如何用Python創建自己的Dino Run?

首先,從安裝python后,打開cmd 并鍵入以下命令。

其次,復制下面提供的代碼以及可以從下面的下載按鈕中獲得的資源。

1.點安裝pygame

2.點安裝random2

最后,使用python main.py命令運行python代碼。[在這里,main.py是文件名]。

源代碼:

__author__ = "Tripura Coders"

import os

import sys

import pygame

import random

from pygame import *

pygame.init()

scr_size = (width,height) = (600,600)

FPS = 60

gravity = 0.6

black = (0,0,0)

white = (255,255,255)

background_col = (235,235,235)

high_score = 0

screen = pygame.display.set_mode(scr_size)

clock = pygame.time.Clock()

pygame.display.set_caption("Dino Run by Tripura Coders")

jump_sound = pygame.mixer.Sound('templates/jump.wav')

die_sound = pygame.mixer.Sound('templates/die.wav')

checkPoint_sound = pygame.mixer.Sound('templates/checkPoint.wav')def load_image(

name,

sizex=-1,

sizey=-1,

colorkey=None,

):

fullname = os.path.join('templates', name)

image = pygame.image.load(fullname)

image = image.convert()

if colorkey is not None:

if colorkey is -1:

colorkey = image.get_at((0, 0))

image.set_colorkey(colorkey, RLEACCEL)

if sizex != -1 or sizey != -1:

image = pygame.transform.scale(image, (sizex, sizey))

return (image, image.get_rect())def load_sprite_sheet(

sheetname,

nx,

ny,

scalex = -1,

scaley = -1,

colorkey = None,

):

fullname = os.path.join('templates',sheetname)

sheet = pygame.image.load(fullname)

sheet = sheet.convert()

sheet_rect = sheet.get_rect()

templates = []

sizex = sheet_rect.width/nx

sizey = sheet_rect.height/ny

for i in range(0,ny):

for j in range(0,nx):

rect = pygame.Rect((j*sizex,i*sizey,sizex,sizey))

image = pygame.Surface(rect.size)

image = image.convert()

image.blit(sheet,(0,0),rect)

if colorkey is not None:

if colorkey is -1:

colorkey = image.get_at((0,0))

image.set_colorkey(colorkey,RLEACCEL)

if scalex != -1 or scaley != -1:

image = pygame.transform.scale(image,(scalex,scaley))

templates.append(image)

sprite_rect = templates[0].get_rect()

return templates,sprite_rectdef disp_gameOver_msg(retbutton_image,gameover_image):

retbutton_rect = retbutton_image.get_rect()

retbutton_rect.centerx = width / 2

retbutton_rect.top = height*0.52

gameover_rect = gameover_image.get_rect()

gameover_rect.centerx = width / 2

gameover_rect.centery = height*0.35

screen.blit(retbutton_image, retbutton_rect)

screen.blit(gameover_image, gameover_rect)def extractDigits(number):

if number > -1:

digits = []

i = 0

while(number/10 != 0):

digits.append(number%10)

number = int(number/10)

digits.append(number%10)

for i in range(len(digits),5):

digits.append(0)

digits.reverse()

return digitsclass Dino():

def __init__(self,sizex=-1,sizey=-1):

self.images,self.rect = load_sprite_sheet('dino.png',5,1,sizex,sizey,-1)

self.images1,self.rect1 = load_sprite_sheet('dino_ducking.png',2,1,59,sizey,-1)

self.rect.bottom = int(0.98*height)

self.rect.left = width/15

self.image = self.images[0]

self.index = 0

self.counter = 0

self.score = 0

self.isJumping = False

self.isDead = False

self.isDucking = False

self.isBlinking = False

self.movement = [0,0]

self.jumpSpeed = 11.5

self.stand_pos_width = self.rect.width

self.duck_pos_width = self.rect1.width

def draw(self):

screen.blit(self.image,self.rect)

def checkbounds(self):

if self.rect.bottom > int(0.98*height):

self.rect.bottom = int(0.98*height)

self.isJumping = False

def update(self):

if self.isJumping:

self.movement[1] = self.movement[1] + gravity

if self.isJumping:

self.index = 0

elif self.isBlinking:

if self.index == 0:

if self.counter % 400 == 399:

self.index = (self.index + 1)%2

else:

if self.counter % 20 == 19:

self.index = (self.index + 1)%2

elif self.isDucking:

if self.counter % 5 == 0:

self.index = (self.index + 1)%2

else:

if self.counter % 5 == 0:

self.index = (self.index + 1)%2 + 2

if self.isDead:

self.index = 4

if not self.isDucking:

self.image = self.images[self.index]

self.rect.width = self.stand_pos_width

else:

self.image = self.images1[(self.index)%2]

self.rect.width = self.duck_pos_width

self.rect = self.rect.move(self.movement)

self.checkbounds()

if not self.isDead and self.counter % 7 == 6 and self.isBlinking == False:

self.score += 1

if self.score % 100 == 0 and self.score != 0:

if pygame.mixer.get_init() != None:

checkPoint_sound.play()

self.counter = (self.counter + 1)class Cactus(pygame.sprite.Sprite):

def __init__(self,speed=5,sizex=-1,sizey=-1):

pygame.sprite.Sprite.__init__(self,self.containers)

self.images,self.rect = load_sprite_sheet('cacti-small.png',3,1,sizex,sizey,-1)

self.rect.bottom = int(0.98*height)

self.rect.left = width + self.rect.width

self.image = self.images[random.randrange(0,3)]

self.movement = [-1*speed,0]

def draw(self):

screen.blit(self.image,self.rect)

def update(self):

self.rect = self.rect.move(self.movement)

if self.rect.right < 0:

self.kill()class Ptera(pygame.sprite.Sprite):

def __init__(self,speed=5,sizex=-1,sizey=-1):

pygame.sprite.Sprite.__init__(self,self.containers)

self.images,self.rect = load_sprite_sheet('ptera.png',2,1,sizex,sizey,-1)

self.ptera_height = [height*0.82,height*0.75,height*0.60]

self.rect.centery = self.ptera_height[random.randrange(0,3)]

self.rect.left = width + self.rect.width

self.image = self.images[0]

self.movement = [-1*speed,0]

self.index = 0

self.counter = 0

def draw(self):

screen.blit(self.image,self.rect)

def update(self):

if self.counter % 10 == 0:

self.index = (self.index+1)%2

self.image = self.images[self.index]

self.rect = self.rect.move(self.movement)

self.counter = (self.counter + 1)

if self.rect.right < 0:

self.kill()class Ground():

def __init__(self,speed=-5):

self.image,self.rect = load_image('ground.png',-1,-1,-1)

self.image1,self.rect1 = load_image('ground.png',-1,-1,-1)

self.rect.bottom = height

self.rect1.bottom = height

self.rect1.left = self.rect.right

self.speed = speed

def draw(self):

screen.blit(self.image,self.rect)

screen.blit(self.image1,self.rect1)

def update(self):

self.rect.left += self.speed

self.rect1.left += self.speed

if self.rect.right < 0:

self.rect.left = self.rect1.right

if self.rect1.right < 0:

self.rect1.left = self.rect.rightclass Cloud(pygame.sprite.Sprite):

def __init__(self,x,y):

pygame.sprite.Sprite.__init__(self,self.containers)

self.image,self.rect = load_image('cloud.png',int(90*30/42),30,-1)

self.speed = 1

self.rect.left = x

self.rect.top = y

self.movement = [-1*self.speed,0]

def draw(self):

screen.blit(self.image,self.rect)

def update(self):

self.rect = self.rect.move(self.movement)

if self.rect.right < 0:

self.kill()class Scoreboard():

def __init__(self,x=-1,y=-1):

self.score = 0

self.tempimages,self.temprect = load_sprite_sheet('numbers.png',12,1,11,int(11*6/5),-1)

self.image = pygame.Surface((55,int(11*6/5)))

self.rect = self.image.get_rect()

if x == -1:

self.rect.left = width*0.89

else:

self.rect.left = x

if y == -1:

self.rect.top = height*0.1

else:

self.rect.top = y

def draw(self):

screen.blit(self.image,self.rect)

def update(self,score):

score_digits = extractDigits(score)

self.image.fill(background_col)

for s in score_digits:

self.image.blit(self.tempimages[s],self.temprect)

self.temprect.left += self.temprect.width

self.temprect.left = 0def introscreen():

temp_dino = Dino(44,47)

temp_dino.isBlinking = True

gameStart = False

temp_ground,temp_ground_rect = load_sprite_sheet('ground.png',15,1,-1,-1,-1)

temp_ground_rect.left = width/20

temp_ground_rect.bottom = height

logo,logo_rect = load_image('logo.jpg',300,140,-1)

logo_rect.centerx = width*0.6

logo_rect.centery = height*0.6

while not gameStart:

if pygame.display.get_surface() == None:

print("Couldn't load display surface")

return True

else:

for event in pygame.event.get():

if event.type == pygame.QUIT:

return True

if event.type == pygame.KEYDOWN:

if event.key == pygame.K_SPACE or event.key == pygame.K_UP:

temp_dino.isJumping = True

temp_dino.isBlinking = False

temp_dino.movement[1] = -1*temp_dino.jumpSpeed

temp_dino.update()

if pygame.display.get_surface() != None:

screen.fill(background_col)

screen.blit(temp_ground[0],temp_ground_rect)

if temp_dino.isBlinking:

screen.blit(logo,logo_rect)

temp_dino.draw()

pygame.display.update()

clock.tick(FPS)

if temp_dino.isJumping == False and temp_dino.isBlinking == False:

gameStart = Truedef gameplay():

global high_score

gamespeed = 4

startMenu = False

gameOver = False

gameQuit = False

playerDino = Dino(44,47)

new_ground = Ground(-1*gamespeed)

scb = Scoreboard()

highsc = Scoreboard(width*0.78)

counter = 0

cacti = pygame.sprite.Group()

pteras = pygame.sprite.Group()

clouds = pygame.sprite.Group()

last_obstacle = pygame.sprite.Group()

Cactus.containers = cacti

Ptera.containers = pteras

Cloud.containers = clouds

retbutton_image,retbutton_rect = load_image('replay_button.png',35,31,-1)

gameover_image,gameover_rect = load_image('game_over.png',190,11,-1)

temp_images,temp_rect = load_sprite_sheet('numbers.png',12,1,11,int(11*6/5),-1)

HI_image = pygame.Surface((22,int(11*6/5)))

HI_rect = HI_image.get_rect()

HI_image.fill(background_col)

HI_image.blit(temp_images[10],temp_rect)

temp_rect.left += temp_rect.width

HI_image.blit(temp_images[11],temp_rect)

HI_rect.top = height*0.1

HI_rect.left = width*0.73

while not gameQuit:

while startMenu:

pass

while not gameOver:

if pygame.display.get_surface() == None:

print("Couldn't load display surface")

gameQuit = True

gameOver = True

else:

for event in pygame.event.get():

if event.type == pygame.QUIT:

gameQuit = True

gameOver = True

if event.type == pygame.KEYDOWN:

if event.key == pygame.K_SPACE:

if playerDino.rect.bottom == int(0.98*height):

playerDino.isJumping = True

if pygame.mixer.get_init() != None:

jump_sound.play()

playerDino.movement[1] = -1*playerDino.jumpSpeed

if event.key == pygame.K_DOWN:

if not (playerDino.isJumping and playerDino.isDead):

playerDino.isDucking = True

if event.type == pygame.KEYUP:

if event.key == pygame.K_DOWN:

playerDino.isDucking = False

for c in cacti:

c.movement[0] = -1*gamespeed

if pygame.sprite.collide_mask(playerDino,c):

playerDino.isDead = True

if pygame.mixer.get_init() != None:

die_sound.play()

for p in pteras:

p.movement[0] = -1*gamespeed

if pygame.sprite.collide_mask(playerDino,p):

playerDino.isDead = True

if pygame.mixer.get_init() != None:

die_sound.play()

if len(cacti) < 2:

if len(cacti) == 0:

last_obstacle.empty()

last_obstacle.add(Cactus(gamespeed,40,40))

else:

for l in last_obstacle:

if l.rect.right < width*0.7 and random.randrange(0,50) == 10:

last_obstacle.empty()

last_obstacle.add(Cactus(gamespeed, 40, 40))

if len(pteras) == 0 and random.randrange(0,200) == 10 and counter > 500:

for l in last_obstacle:

if l.rect.right < width*0.8:

last_obstacle.empty()

last_obstacle.add(Ptera(gamespeed, 46, 40))

if len(clouds) < 5 and random.randrange(0,300) == 10:

Cloud(width,random.randrange(height/5,height/2))

playerDino.update()

cacti.update()

pteras.update()

clouds.update()

new_ground.update()

scb.update(playerDino.score)

highsc.update(high_score)

if pygame.display.get_surface() != None:

screen.fill(background_col)

new_ground.draw()

clouds.draw(screen)

scb.draw()

if high_score != 0:

highsc.draw()

screen.blit(HI_image,HI_rect)

cacti.draw(screen)

pteras.draw(screen)

playerDino.draw()

pygame.display.update()

clock.tick(FPS)

if playerDino.isDead:

gameOver = True

if playerDino.score > high_score:

high_score = playerDino.score

if counter%700 == 699:

new_ground.speed -= 1

gamespeed += 1

counter = (counter + 1)

if gameQuit:

break

while gameOver:

if pygame.display.get_surface() == None:

print("Couldn't load display surface")

gameQuit = True

gameOver = False

else:

for event in pygame.event.get():

if event.type == pygame.QUIT:

gameQuit = True

gameOver = False

if event.type == pygame.KEYDOWN:

if event.key == pygame.K_ESCAPE:

gameQuit = True

gameOver = False

if event.key == pygame.K_RETURN or event.key == pygame.K_SPACE:

gameOver = False

gameplay()

highsc.update(high_score)

if pygame.display.get_surface() != None:

disp_gameOver_msg(retbutton_image, gameover_image)

if high_score != 0:

highsc.draw()

screen.blit(HI_image, HI_rect)

pygame.display.update()

clock.tick(FPS)

pygame.quit()

quit()def main():

isGameQuit = introscreen()

if not isGameQuit:

gameplay()

main()

以上就是關于如何用Python創建自己的Dino Run的全部內容介紹,想了解更多關于Python的信息,請繼續關注中培偉業。

標簽: Python 軟件研發
主站蜘蛛池模板: 国产成人亚洲精品另类动态图 | 在线观看免费视频 | 免费视频一级片 | 黑人30厘米少妇高潮全部进入 | 色网站在线视频 | 91影视免费版 | 精品国产午夜福利在线观看 | 久久视频免费在线 | 国产91对白刺激露脸在线观看 | 99视频网 | 国产精品久久观看 | japanese丰满少妇最高潮 | 77777五月色婷婷丁香视频 | 欧美牲交a欧美在线 | 日韩成人久久久 | tube69最新 | 欧美不卡在线观看一区 | 99精品视频在线观看 | www.youjizz.com中国 | 99久久国产综合精品女不卡 | 日本一区二区三区视频免费看 | 国产成人日日夜夜 | 日本乱码卡一卡二新区不卡 | 亚洲精品国产福利一二区 | 欧美a在线看| 成人精品一区 | 一级一级一级一级毛片 | 无码国产玉足脚交极品网站 | 亚洲精品狼友在线播放 | 少妇大叫太大太粗太爽了A片软件 | 强行扒开女同学腿看屁股眼 | 亚洲不卡中文字幕无码 | 欧美精产国品一二三区 | 亚洲逼院 | 成全影视免费观看大全二 | 在线精品一区二区三区 | 91干干 | 亚洲国产成人A精品不卡在线 | 久久精品色欧美aⅴ一区二区 | 国模丽丽啪啪一区二区 | 亚洲精品久久久久不卡激情文学 |