(python漂亮的代码结构一粘到简书就花了)
在自学python的坑中,不知不觉有三个月了,最近总算有点感觉了。
我从vba语言入门,vba语言虽然也是面对对象语言,但需要自己定义类的情况并不多,对象大多是固定的,只需要用面向过程的思想(顺序,逐步执行,循环判断的分支都能按照本身的流程找到)调用即可。
而在学习面向对象过程中,其中一个坎就是如何凭空制作一个类,怎样定义属性和方法,在没有具体的实参和方法的情况下,总觉得难以处理。
期间做了个将excel数据自动填入erp系统的小程序,还是有点小得意的(总算跨越了只会用excel表格的限制),虽然是简单的应用,但至少没学python前是无法想象的,同样也觉得前路漫漫,不知道多久才能熟练并做出一些更为实用的项目。
__author__ = 'Administrator'
import pygame,sys
from random import *
class Myballclass(pygame.sprite.Sprite):
def __init__(self,image_file,location,speed):
pygame.sprite.Sprite. __init__(self)#继承的一种方式
self.image=pygame.image.load(image_file)
self.rect=self.image.get_rect()
self.rect.left,self.rect.top=location
self.speed=speed
#定义方法
def move(self):
self.rect=self.rect.move(self.speed)
if self.rect.left<0 or self.rect.right>width:
self.speed[0]=-self.speed[0]
if self.rect.top<0 or self.rect.bottom>height:
self.speed[1]=-self.speed[1]
def animate(group):
screen.fill([250,250,250])
for ball in group:
ball.move()
for ball in group:
group.remove(ball)
if pygame.sprite.spritecollide(ball,group,False):
ball.speed[0]=-ball.speed[0]
ball.speed[1]=-ball.speed[1]
group.add(ball)
screen.blit(ball.image,ball.rect)
pygame.display.flip()
pygame.time.delay(20)
size=width,height=640,480
screen=pygame.display.set_mode(size)
screen.fill([250,250,250])
group=pygame.sprite.Group()
image_file='beach_ball.bmp'
for row in range(0,3):
for column in range(0,3):
location=[column*180+10,row*180+10]
speed=[choice([-2,2]),choice([-2,2])]
ball=Myballclass(image_file,location,speed)
group.add(ball)
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
animate(group)
网友评论