欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:pygame制作游戲第一天

柚子快報激活碼778899分享:pygame制作游戲第一天

http://yzkb.51969.com/

pygame制作第一天

?截個圖

首先還是黑屏哈。后面找時間慢慢做地圖跟其他角色,還有攻擊方式等。

這里先做了一個“炫酷”的雨云召喚技能。

人物可以移動,g鍵召喚持續(xù)10秒的跟隨目標(biāo)的雨云。角色會被雨滴攻擊。

思路很重要,不然數(shù)據(jù)傳遞就亂了。

雨滴是單個的,與其他元素?zé)o關(guān)(除了要傳入攻擊目標(biāo))。

云里面生成雨滴對象的集合,雨滴的x范圍在與的[x,x+cloud.width]內(nèi)

云需要跟隨目標(biāo)(這里暫定是玩家自己)需要定義其x,y的速度,以及方向。

人物我做了個基類charactor,玩家player繼承基類。未雨綢繆哈

charactor.py

class Charactor(object):

def __init__(self, x=0, y=0):

self.x = x

self.y = y

def attack(self):

pass

def update(self, keys):

pass

def draw_damage(self, damage, window):

pass

def draw(self, delta, window):

pass

player.py

import pygame

from cloud import Cloud

from settings import *

from charactor import Charactor

class Player(Charactor):

def __init__(self):

super().__init__()

self.hp = 100

self.x_speed = person_x_speed

self.y_speed = person_y_speed

self.facing = {

'right': True,

"left": False,

'up': False,

'down': False

}

self.pre_facing = 'right'

self.peron_down_walk_images = peron_down_walk_images

self.peron_up_walk_images = peron_up_walk_images

self.peron_right_walk_images = peron_right_walk_images

self.peron_left_walk_images = peron_left_walk_images

self.image_index = 0

self.image = peron_down_walk_images[self.image_index]

self.width = peron_down_walk_images[self.image_index].get_width()

self.height = peron_down_walk_images[self.image_index].get_height()

self.hit_by_raindrop = 0

self.font = pygame.font.Font(None, 36)

self.get_damage = 0 # 受到傷害

self.get_damage_text = None # 受到傷害文本

self.time_counter = 0 # 計時器

self.skills = {

'g': {'status': False,

'cloud': Cloud(self.x, self.y - 200),

'exist_time': 10,

}

}

def update(self, keys):

if keys[pygame.K_a]:

self.x -= self.x_speed

self.facing['right'], self.facing['left'], self.facing['up'], self.facing[

'down'] = False, True, False, False

if keys[pygame.K_d]:

self.x += self.x_speed

self.facing['right'], self.facing['left'], self.facing['up'], self.facing[

'down'] = True, False, False, False

if keys[pygame.K_w]:

self.y -= self.y_speed

self.facing['right'], self.facing['left'], self.facing['up'], self.facing[

'down'] = False, False, True, False

if keys[pygame.K_s]:

self.y += self.y_speed

self.facing['right'], self.facing['left'], self.facing['up'], self.facing[

'down'] = False, False, False, True

if keys[pygame.K_g]:

if not self.skills['g']['status']:

self.skills['g']['status'] = True

def skill_cloud(self, delta, window):

if self.time_counter >= self.skills['g']['exist_time']:

self.skills['g']['status'] = False

self.time_counter = 0

if self.skills['g']['status']:

self.skills['g']['cloud'].rained_objects = [self]

self.skills['g']['cloud'].update(delta, self)

self.skills['g']['cloud'].draw(window)

else:

self.skills['g']['cloud'] = Cloud(self.x, self.y - 200)

def damaged(self, damage):

font = pygame.font.Font(None, 24)

text1 = font.render(f"-{damage}", True, (255, 0, 0))

self.get_damage = damage

self.get_damage_text = text1

def draw(self, delta, window):

self.time_counter += delta

self.skill_cloud(delta, window)

for k, v in self.facing.items():

if v and self.pre_facing != k:

self.pre_facing = k

self.image_index = 0

if v and self.pre_facing == k:

self.image_index = self.image_index + int(delta * FPS) if self.image_index < 6 else 0

self.image = peron_down_walk_images[self.image_index]

self.width = peron_down_walk_images[self.image_index].get_width()

self.height = peron_down_walk_images[self.image_index].get_height()

if self.facing['right']:

images = self.peron_right_walk_images

elif self.facing['left']:

images = self.peron_left_walk_images

elif self.facing['up']:

images = self.peron_up_walk_images

else:

images = self.peron_down_walk_images

window.blit(images[self.image_index], (self.x, self.y))

pygame.draw.rect(window, (0, 0, 255), (0, 0, 40, 30))

text1 = self.font.render(str(self.hp), True, (255, 0, 0))

window.blit(text1, (screen_width - 100, 5))

if self.get_damage:

window.blit(self.get_damage_text, (self.x, self.y - 30))

self.get_damage = 0

rain.py

import random

import pygame

from settings import *

class Rain(pygame.sprite.Sprite):

def __init__(self, x, y, rained_objects):

super().__init__()

self.width = random.randint(0, 3)

self.length = random.randint(8, 15)

self.image = pygame.Surface([self.width, self.length])

self.image.fill((244, 244, 255))

self.rect = self.image.get_rect()

self.rect.x = x

self.rect.y = y

self.rained_objects = rained_objects

self.drop_speed = random.randint(rain_drop_speed[0], rain_drop_speed[1]) # 下落速度隨機(jī)范圍

self.gravity = drop_gravity # 加速度

def check_collision(self, item):

return True if (item.x < self.rect.x < item.x + item.width

and item.y < self.rect.y < item.y + item.height) else False

def update(self):

self.drop_speed = self.drop_speed * (1 + self.gravity)

self.rect.y += int(self.drop_speed)

if self.rect.y > screen_height:

self.kill()

damage = int(10 * ((self.width * self.length) / 10))

for item in self.rained_objects:

if self.check_collision(item):

item.hit_by_raindrop += 1

item.hp -= damage

item.damaged(damage)

self.kill()

cloud.py

import random

import pygame

from settings import *

from rain import Rain

class Cloud:

def __init__(self, x, y):

self.x = x

self.y = y

self.image = pygame.image.load(cloud_image_path).convert_alpha()

self.width = self.image.get_width()

self.height = self.image.get_height()

self.x_speed = cloud_x_speed

self.y_speed = cloud_y_speed

self.move_right = True

self.move_down = True

self.delta = 0

self.raining = True

self.raindrops = pygame.sprite.Group()

self.rain_counts = rain_counts

self.rained_objects = []

self.raining_time = 0

self.total_raining_time = 10

self.target_distance = 100

def update(self, delta, target):

self.raining_time += delta

self.x = self.x + self.x_speed if self.move_right else self.x - self.x_speed

self.y = self.y + self.y_speed if self.move_down else self.y - self.y_speed

if self.x + self.width <= target.x: self.move_right = True

if self.x >= target.x + target.width: self.move_right = False

if self.y + self.height < target.y - self.target_distance:

self.move_down, self.y_speed = True, cloud_y_speed

elif self.y + self.height > target.y - self.target_distance:

self.move_down, self.y_speed = False, cloud_y_speed

else:

self.y_speed = 0

def rain(self, window):

rain_range = [i for i in range(self.x, self.x + self.width)]

if len(self.raindrops) <= self.rain_counts and self.raining:

x = random.choice(rain_range)

y = self.y + self.height

new_raindrop = Rain(x, y, self.rained_objects)

self.raindrops.add(new_raindrop)

self.raindrops.update()

self.raindrops.draw(window)

def draw(self, window):

window.blit(self.image, (self.x, self.y))

self.rain(window)

if self.raining_time >= self.total_raining_time:

self.raining = False

settings.py

import random

import pygame

screen_width = 1280

screen_height = 720

FPS = 60

cloud_image_path = "data/cloud.png"

cloud_x_speed = 2

cloud_y_speed = 1

person_x_speed = 5

person_y_speed = 3

rain_counts = 5

rain_drop_speed = [3, 8]

rain_drop_interval = 0.1

drop_gravity = 0.005

peron_down_walk_images = []

for i in range(0, 7):

img = pygame.image.load("data/catgame/walk/down_walk_%d.png" % i)

peron_down_walk_images.append(img)

peron_up_walk_images = []

for i in range(0, 7):

img = pygame.image.load("data/catgame/walk/up_walk_%d.png" % i)

peron_up_walk_images.append(img)

peron_left_walk_images = []

for i in range(0, 7):

img = pygame.image.load("data/catgame/walk/left_walk_%d.png" % i)

peron_left_walk_images.append(img)

peron_right_walk_images = []

for i in range(0, 7):

img = pygame.image.load("data/catgame/walk/right_walk_%d.png" % i)

peron_right_walk_images.append(img)

ground_path = "data/ground1.png"

ground_rows = 4

ground_columns = 8

柚子快報激活碼778899分享:pygame制作游戲第一天

http://yzkb.51969.com/

文章鏈接

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19475009.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄