当たり判定なしで画像を移動

#-*- coding:sjis -*-

import pygame

from pygame.locals import *

class Player:

	def __init__(self,scr): #クラスの初期化

		self.rect = pygame.Rect(0,0,40,10) #player のサイズ

		self.color = (0, 255, 128) #playerの色

		self.rect.center = (160,200) #playerのxy座標

		self.scr = scr # 画面の関連付け
		

	def DrawImage(self): # 画面に絵を表示

		pygame.draw.rect(self.scr,self.color,self.rect) #四角を描画

	
	def SetPos(self, x, y): #自キャラのx,y座標を指定する

		self.rect.topleft = (x,y)

	def MoveKeyin(self): #キー入力で移動させる
		keyin = pygame.key.get_pressed()
		mx = 0
		if keyin[K_LEFT]:mx = -2
		if keyin[K_RIGHT]:mx = 2
		# 画面の枠内に、自分の移動先の四角が完全に
		#含まれているなら、移動させる。
		if self.scr.get_rect().contains(self.rect.move(mx,0)):
			self.rect.move_ip(mx,0)



class Ball:

	def __init__(self,scr): #クラスの初期化

		self.rect = pygame.Rect(0,0,10,10) #ballのサイズ

		self.color = (255,128,0) #ballの色

		self.rect.center = (160,100) #playerのxy座標

		self.scr = scr # 画面の関連付け

	 	self.scrRect = scr.get_rect() #スクリーンの大きさ
		
		self.vx = 2 # x方向の移動速度
		
		self.vy = -2 #y方向の移動速度
		
	
	def DrawImage(self): #画面に絵を表示
	
		pygame.draw.ellipse(self.scr,self.color,self.rect) #内接円を描画

	def SetPos(self, x, y):

		self.rect.topleft = (x,y)

	def Move(self):
		mr = self.rect.move(self.vx, self.vy) #移動先のrectを取得
		if self.scrRect.right < mr.right or self.scrRect.left > mr.left:
			self.vx = -self.vx # x方向の移動を反転させる
		if self.scrRect.bottom < mr.bottom or self.scrRect.top > mr.top:
			self.vy = -self.vy # y方向の移動を反転させる
		self.rect.move_ip(self.vx, self.vy)


def main():

	pygame.init() #pygameの初期化

	screen = pygame.display.set_mode( ( 320, 240)) #画面を作る

	pygame.display.set_caption('Class Replacement')# タイトル

	player = Player(screen)

	ball = Ball(screen)
	
	clock = pygame.time.Clock()

	while 1:
		
		clock.tick(60)

		player.DrawImage()

		ball.DrawImage()
		

		pygame.display.flip() # 画面を反映


		screen.fill((0,0,0)) #全画面を黒で塗りつぶす
		player.MoveKeyin()
		ball.Move()

		for event in pygame.event.get(): # イベントチェック

			if event.type == QUIT: # 終了された?

				return

		if (event.type == KEYDOWN and

		    event.key == K_ESCAPE): #ESCが押された?

			return

if __name__=='__main__':main()

#end of file