Python:ゲームらしきものとゲーム(2020/07/14)

Python

ゲームらしきもの(標準のPythonで実行)

実行イメージ(Enterで次のメッセージが表示される)

スライムが現れた!

スライムの攻撃!
1 のダメージ

レオンハルト: 9 スライム:5

スライムの攻撃!
2 のダメージ

レオンハルト: 7 スライム:5

レオンハルトの攻撃!
スライム に1のダメージを与えた

レオンハルト: 7 スライム:4

レオンハルトの攻撃!
スライム に2のダメージを与えた

レオンハルト: 7 スライム:2

レオンハルトの攻撃!
スライム に3のダメージを与えた

レオンハルト: 7 スライム:-1

スライムを倒した!
10ゴールド手に入れた!             

ファイル名:slimega.py

# スライムが現れた
import random

player = ["レオンハルト", 10]
slime = ["スライム", 5]

print("{}が現れた!".format(slime[0]))
input()

while True:
    # 攻撃
    if random.randrange(2) == 1:
        print("{}の攻撃!".format(slime[0]))
        attack = random.randint(1,3)
        player[1] -= attack
        print("{} のダメージ".format(attack))
    else:
        print("{}の攻撃!".format(player[0]))
        attack = random.randint(1,3)
        slime[1] -= attack
        print("{} に{}のダメージを与えた".format(slime[0], attack))
        
    print("\n{}: {} {}:{}".format(player[0], player[1], slime[0], slime[1])) 
    input()

    # 判定
    if player[1] <= 0:
        print("{}は力尽きた...".format(player[0]))
        break
    if slime[1] <= 0:
        print("{}を倒した!".format(slime[0]))
        print("{}ゴールド手に入れた!".format(random.randint(5, 11)))
        break

ゲーム(ライブラリpgzeroをインストールして実行)

実行イメージ

準備

ライブラリpgzeroのインストールが必要。

pip install pgzero

利用している画像ファイルはこちらからダウンロードしてください。
展開してできたフォルダ images は名前を変更せずにスクリプト game0.py と同じフォルダに配置してください。

ファイル名:game0.py

# game0
import pgzrun
import random

WIDTH = 240 
HEIGHT = 320

player_name = "kero"
player = Actor(player_name, center=(100, 100) )
player.speed = 2

teki_name = "teki"

enemys = []
points = 0

def draw():
    global points
    screen.fill((65, 105, 225))
    player.draw()

    for enemy in enemys:
        enemy.draw()
        enemy.x -= enemy.speed

    screen.draw.text(str(points) + "Gets", (0, 0), owidth=1.0, ocolor="YELLOW", color="BLUE", fontsize=32)
    
def update():
    global points

    if random.randrange(100) == 1:
        teki = Actor(teki_name, center=(screen.width, random.randrange(screen.height)))
        teki.speed = random.randint(1,3)
        enemys.append(teki)

    if player.y < screen.height:
        if keyboard.space:
            player.speed = -2
        else:
            player.speed = 2
        player.y += player.speed
        points += 1

    for enemy in enemys:
        rect = Rect(enemy.center, (25, 25))
        if player.collidepoint(enemy.x, enemy.y):
            enemys.remove(enemy)
            player.y = screen.height

pgzrun.go()

コメント