import pygame
from pygame import mixer
import random
import math
import tkinter
Initialize the pygame
pygame.init()
create the screen
screen = pygame.display.set_mode((800, 600))
Title
pygame.display.set_caption('Space Invaders')
Player
playerImg = pygame.image.load('player.png')
playerX, playerY = 370, 480
playerX_change = 0
#ランダムにしてみる
ani=0
Enemy
enemyImg = pygame.image.load('enemy.png')
enemyX = random.randint(0, 736)
enemyY = random.randint(50, 150)
enemyX_change, enemyY_change = 4, 40
scene=0 #シーンを番号で管理する
Bullet
bulletImg = pygame.image.load('bullet.png')
bulletX, bulletY = 0, 480
bulletX_change, bulletY_change = 0, 3
bullet_state = 'ready'
Score
score_value = 0
def player(x, y):
screen.blit(playerImg, (x, y))
def enemy(x, y):
screen.blit(enemyImg, (x, y))
def fire_bullet(x, y):
global bullet_state
bullet_state = 'fire'
screen.blit(bulletImg, (x + 16, y + 10))
def isCollision(enemyX, enemyY, bulletX, bulletY):
distance = math.sqrt(math.pow(enemyX - bulletX, 2) + math.pow(enemyY - bulletY, 2))
if distance < 27:
return True
else:
return False
#ランダムにしてみる
def main():
move()
animation()
def animaition():
global animation,enemyX,enemyY
canvas.create_image(enemyX,enemyY,image=enemy,tag="player")
def move():
global playerX,playerY,key,animation,scene
if scene == 0: move_enemy() root.after(100,main)
def move_enemy():
global enemyX,enemyY,scene
muki=random.randint(800,440)
Game Loop
running = True
while running:
# RGB = Red, Green, Blue
screen.fill((0, 0, 0))
# playerX += 0.1
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: playerX_change = -2.5 if event.key == pygame.K_RIGHT: playerX_change = 2.5 if event.key == pygame.K_SPACE: if bullet_state is 'ready': bulletX = playerX fire_bullet(bulletX, bulletY) # Player playerX += playerX_change if playerX <= 0: playerX = 0 elif playerX >= 736: playerX = 736 # Enemy if enemyY > 440: break if muki == 0:#上 enemyY=enemyY-10 if muki == 1:#下 enemyY=enemyY+10 if muki == 2:#右 enemyX=enemyX+10 if muki == 3:#左 enemyX=enemyX-10 if enemyX<10: enemyX=enemyX+10 if enemyX>290: enemyX=enemyX-10 if enemyY<10: enemyY=enemyY+10 if enemyY>290: enemyY=enemyY-10
#ここ消した
collision = isCollision(enemyX, enemyY, bulletX, bulletY) if collision: bulletY = 480 bullet_state = 'ready' score_value += 1 enemyX = random.randint(0, 736) enemyY = random.randint(50, 150) enemy(enemyX, enemyY) # Bullet Movement if bulletY <=0: bulletY = 480 bullet_state = 'ready' if bullet_state is 'fire': fire_bullet(bulletX, bulletY) bulletY -= bulletY_change # Score font = pygame.font.SysFont(None, 32) # フォントの作成 Noneはデフォルトのfreesansbold.ttf score = font.render("Score : " + str(score_value), True, (255,255,255)) # テキストを描画したSurfaceの作成 screen.blit(score, (20,50)) player(playerX, playerY) pygame.display.update() #ランダム root=tkinter.Tk() main() root.mainloop()
