Day11-作业

吃球:

'''__author__==fubo'''

'''


'''
import pygame
from random import randint
from math import sqrt
import math
def rand_color():
    return randint(0,255),randint(0,255),randint(0,255)
if __name__ == '__main__':
    pygame.init()
    screen=pygame.display.set_mode((600,400))
    screen.fill((255,255,255))
    pygame.display.flip()
    # all_balls中保存多个信息
    # 每个球要保存:半径、圆心坐标、颜色、x速度、y速度
    all_balls = [
        {'r': randint(10, 25),
         'pos':(200,300),
         'color': (255,0,0),
         'x_speed': 3,
         'y_speed': 0},
        {'r': randint(10, 25),
         'pos': (300, 140),
         'color': (0, 255, 0),
         'x_speed': 1,
         'y_speed': 0},
        {'r': randint(10, 25),
         'pos': (130, 240),
         'color': (0,0, 255),
         'x_speed': 0,
         'y_speed': 2}

    ]
    ball_dict = {}
    while True:
        screen.fill((255, 255, 255))
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                exit()
            if event.type==pygame.MOUSEBUTTONDOWN:
                print(event.pos)
                random_color=rand_color()
                ball_dict={'r':randint(10,25),
                           'pos':event.pos,
                           'color':random_color,
                           'x_speed':randint(-3,3),
                           'y_speed': randint(-3, 3)}
                all_balls.append(ball_dict)
                pygame.draw.circle(screen,ball_dict['color'],ball_dict['pos'],ball_dict['r'])
        for item in all_balls:
            x, y = item['pos']
            x_speed = item['x_speed']
            y_speed = item['y_speed']
            x += x_speed
            y += y_speed
            if x+item['r']>=600:
                x=600-item['r']
                x_speed=-x_speed
                item['x_speed']=x_speed
            if x - item['r']<=0:
                x = 0 +item['r']
                x_speed = -x_speed
                item['x_speed'] = x_speed
            if y+item['r']>=400:
                y=400-item['r']
                y_speed=-y_speed
                item['y_speed'] = y_speed
            if y - item['r']<=0:
                y = 0 +item['r']
                y_speed = -y_speed
                item['y_speed'] = y_speed
            pygame.time.delay(10)
            pygame.draw.circle(screen, item['color'], (x, y), item['r'])
            item['pos'] = x, y
        num=0
        for item1 in all_balls[:]:
            if item1['r']>=150:
                item1['r']=0
                print('sfg')
                all_balls.remove(item1)
                break
        for item1 in all_balls[:]:
            dict2=all_balls.copy()
            num+=1
            x1,y1=item1['pos']
            r1=item1['r']
            for mul in range(num,len(dict2)):
                x2,y2=dict2[mul]['pos']
                r2=all_balls[mul]['r']
                if (r1+r2)>=int(sqrt((x1-x2)**2+(y1-y2)**2)):
                    if r1>r2:
                        item1['r']= r1+r2
                        all_balls.pop(mul)
                        break
                    else:
                        all_balls[mul]['r'] = r1 + r2
                        all_balls.remove(item1)
                        break

        pygame.display.update()


结果:

![
吃2.JPG

吃2.JPG

作业2

'''__author__==fubo'''

'''


'''
import pygame
from random import  randint
def draw_button(address):
    #
    font = pygame.font.SysFont('Times', 60)
    title = font.render('gameover', True, (255,0,0))
    screen.blit(title, (250, 300))
def get_rect(address,pos):
    # 画反弹板
    x1, y1 = event.pos
    point_x1=x1-int(width/2)
    point_y1=y1-int(hight/2)
    pygame.draw.rect(address,(0,255,0), (point_x1,point_y1,width,hight))
    return point_x1,point_y1
def is_in_rect(pos,rect):
    # 判断鼠标是否在反弹板上
    x1,y1=event.pos
    point_x1,point_y1,width,hight=rect
    if (point_x1<x1<point_x1+width) and (point_y1<y1<point_y1+hight):
        return True
    return False
def set_ball(address,point_x,point_y,ridius):
    # 画圆
    pygame.draw.circle(address,(randint(0,255),randint(0,255),randint(0,255)),(point_x,point_y),ridius)
if __name__ == '__main__':
    pygame.init()
    screen=pygame.display.set_mode((600,650))
    screen.fill((250,250,250))
    # 圆的圆心
    point_x = randint(25, 575)
    point_y = randint(25, 625)
    # 圆的半径
    ridius = randint(15, 25)
    # 板的坐标
    point_x1 = randint(0, 540)
    point_y1 = randint(0, 610)
    # 板的长宽
    hight=randint(20, 40)
    width = randint(50, 100)
    set_ball(screen,point_x,point_y,ridius)
    pygame.draw.rect(screen,(0,255,0),(point_x1,point_y1,width,hight),0)
    pygame.display.flip()
    # 球的速度
    x_speed=randint(-4,4)
    y_speed=randint(-4,4)
    mul = 0
    flage=False
    if point_y1>=325:
        flage=True
    while True:
        num1=0
        num2= 0
        num3= 0
        num4=0
        screen.fill((255,255,255))
        point_y+=y_speed
        point_x+=x_speed
        # 宽的出界判断
        if point_x+ridius>600:
            point_x=600-ridius
            x_speed=-x_speed
        if point_x - ridius <0:
            point_x = 0 +ridius
            x_speed = -x_speed
        # 高的出界判断,并判断保护方向,及木板反弹方向
        if point_y+ridius>650 and not flage:
            point_y=650-ridius
            y_speed=-y_speed
        elif point_y+ridius>650 and  flage:
            print('你输了')
            break
        if point_y-ridius<=0 and flage:
            point_y=0+ridius
            y_speed=-y_speed
        elif point_y-ridius<=0 and not flage:
            print('你输了')
            break

        set_ball(screen, point_x, point_y, ridius)
        pygame.draw.rect(screen, (0, 255, 0), (point_x1, point_y1, width, hight), 0)
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                exit()
            if event.type==pygame.MOUSEBUTTONDOWN: #点击木板
                if is_in_rect(event.pos,(point_x1, point_y1, width, hight)):
                    num1,num2=event.pos
                    mul=1
            if event.type==pygame.MOUSEMOTION and mul==1:#移动木板
                point_x1,point_y1=get_rect(screen,event.pos)

            if event.type==pygame.MOUSEBUTTONUP and mul==1:#放开木板
                mul=0
        if flage: #反弹球
            if point_y < point_y1 and abs(point_y1 - point_y) == ridius:
                if point_x1 <= point_x <= point_x1 + width:
                    y_speed = -y_speed
        else:
            if point_y > point_y1 and abs(point_y1 + hight - point_y) == ridius:
                if point_x1 <= point_x <= point_x1 + width:
                    y_speed = -y_speed

        pygame.time.wait(40)
        pygame.display.update()
        draw_button(screen)

结果:
作业2.JPG

作业22.JPG
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容

  • 徐雯老师的思维导图课程学习到今天正式过半,小伙伴们依然不惧挑战反而愈发纯熟,真好! 一、31号学员史鸿瑜的对比分析...
    lilycat阅读 247评论 0 1
  • 今天是五四青年节,是我们的节日哦! 一、46号学员Sofie的六何分析作业 Sofie今天的作业带给我们的是用六何...
    lilycat阅读 170评论 0 0
  • 简单的碰撞
    HavenYoung阅读 213评论 0 2
  • 双重对照图 深入对比分析两家企业,两个品牌或两个人、两种思维模式、两种学习方式……等等之间的异同。如果给出对其未来...
    gsx阅读 153评论 0 0
  • 不知道是风大还是门锁确实钝了,总之在她听来,关门声不说惊天动地,至少也是震聋发聩了。对他情绪的判断,她只能从接下来...
    唐糖酱阅读 469评论 8 6