当前位置: 首页 > news >正文

郑州 网站建设公司怎样在百度上发布作品

郑州 网站建设公司,怎样在百度上发布作品,建设服务型政府网站,酒店网站方案上节课我们做到当球静止下来后在第0号球上画一个球杆 本节课我们将会让这个球杆将球打出来 1、鼠标事件 pygame.mouse.get_pressed():返回鼠标左键,中间,右键的情况 2、键盘事件: pygame.key.get_pressed(): 返回所有键盘的情况 3、pyg…

上节课我们做到当球静止下来后在第0号球上画一个球杆

本节课我们将会让这个球杆将球打出来

1、鼠标事件

pygame.mouse.get_pressed():返回鼠标左键,中间,右键的情况

2、键盘事件:

pygame.key.get_pressed(): 返回所有键盘的情况

3、pygame.Rect:

pygame提供的矩形类,这个类我们在之前有学过,这次主要是用到其初始化的功能

rect = Rect(x,y, width, height)

当我们希望将球击打时,实际是需要将球的速度改为一个不为0的数。可以用从球中心到鼠标点的距离作为一个参考量

    def draw_and_wait_hit(self):# 旧代码略if pygame.mouse.get_pressed()[0]:  # 鼠标左键被按下self.speed[0] = (self.rect.center[0] - pos[0]) * 0.1self.speed[1] = (self.rect.center[1] - pos[1]) * 0.1

这样当鼠标左键按下时,球就被打出来了,由于平常的速度在2至4左右,这个计算出来的距离有点大,我们取其中的十分之一作为速度

走到这一步发现球是击出去了,但击到另外的球上,被撞击的球文丝不动。

原因是被撞的球此时速度已经为0了,此时再怎么取返,速度都为0,因此需要重新考虑。

当速度接近0时,使用撞击球的速度取反

这样,我们改一个crash

    def crash(self, groups):if pygame.sprite.spritecollide(self, groups, False):if abs(self.speed[0]) > 1:self.speed[0] = -self.speed[0]else:self.speed[0] = -groups[0].speed[0]if abs(self.speed[1]) > 1:self.speed[1] = -self.speed[1]else:self.speed[1] = -groups[0].speed[1]

当球的速度接近0,就采用撞击的球的相反速度

然后我们发现当A撞击B,B撞C时,新的情况出现了,B和C在那不断抖动,猜想可能是撞击完后没能实现各自的速度取返。

所以我们需要在全部碰撞完成后,调整各球的速度,使他们彼此为反

    def adjust(self, groups):if pygame.sprite.spritecollide(self, groups, False):if (self.speed[0] > 0 and groups[0].speed[0] > 0) or (self.speed[0] < 0 and groups[0].speed[0] < 0):self.speed[0] = -self.speed[0]if (self.speed[1] > 0 and groups[0].speed[1] > 0) or (self.speed[1] < 0 and groups[0].speed[1] < 0):self.speed[1] = -self.speed[1]

然后在后面针对每一个球做一次调整:

while True:# 略for i in range(len(balls)):for j in range(len(balls)):if i == j:continueballs[i].adjust([balls[j]])

至此A撞B,B撞C就不会贴在一起不断抖动了

做一个球洞比较简单,直接在while True中用circle画一个黑色的圆即可,当然,在此之前我们要思考洞的位置,可放在右下角,用到pygame为我们提供的Rect

circle_rect = Rect(width-100, height-100, 100, 100)

然后在While中画出圆:

pygame.draw.circle(screen, [0, 0, 0], circle_rect.center, 50, 0)

怎样表示球进洞呢,通过Rect有一个contains可以判断一个矩形是否包含另一个矩形,我们可以将小球中心点构造成一个小矩形出来

rect = pygame.Rect(self.rect.center[0], self.rect.center[1], 1, 1)

然后判断黑色的圆形是否包含rect:

if circle_rect.contains(rect):

一旦发现黑色的圆包含某个小球的球心,我们可以将小球显示置为False,只有在小球显示为真时才可以显示小球

至此小球进洞就完成了

补充画一个描准器:

        keys = pygame.key.get_pressed()for k in keys:if k:self.show_sighting = not self.show_sightingbreakif self.show_sighting:pos2 = [0, 0]if self.rect.center[0] > pos[0]:pos2[0] = self.rect.center[0] + abs((self.rect.center[0] - pos[0]))else:pos2[0] = self.rect.center[0] - abs((self.rect.center[0] - pos[0]))if self.rect.center[1] > pos[1]:pos2[1] = self.rect.center[1] + abs((self.rect.center[1] - pos[1]))else:pos2[1] = self.rect.center[1] - abs((self.rect.center[1] - pos[1]))

最后补上所有代码:

import pygame, sysclass MyBall(pygame.sprite.Sprite):def __init__(self, point, speed):self.image = pygame.image.load("beach_ball.png")self.rect = self.image.get_rect()self.rect.left = point[0]self.rect.top = point[1]self.speed = speedself.show_sighting = Trueself.show = Truedef move(self):if not self.show:returnself.rect = self.rect.move(self.speed)if self.rect.right > width:self.speed[0] = -abs(self.speed[0])if self.rect.left < 0:self.speed[0] = abs(self.speed[0])if self.rect.bottom > height:self.speed[1] = -abs(self.speed[1])if self.rect.top < 0:self.speed[1] = abs(self.speed[1])rect = pygame.Rect(self.rect.center[0], self.rect.center[1], 1, 1)if circle_rect.contains(rect):self.show = not self.showscreen.blit(self.image, self.rect)def dec_speed(self):self.speed[0] = self.speed[0] * 0.995self.speed[1] = self.speed[1] * 0.995def crash(self, groups):if not self.show:returnif pygame.sprite.spritecollide(self, groups, False):if abs(self.speed[0]) > 1:self.speed[0] = -self.speed[0]else:self.speed[0] = -groups[0].speed[0]if abs(self.speed[1]) > 1:self.speed[1] = -self.speed[1]else:self.speed[1] = -groups[0].speed[1]def adjust(self, groups):if pygame.sprite.spritecollide(self, groups, False):if (self.speed[0] > 0 and groups[0].speed[0] > 0) or (self.speed[0] < 0 and groups[0].speed[0] < 0):self.speed[0] = -self.speed[0]if (self.speed[1] > 0 and groups[0].speed[1] > 0) or (self.speed[1] < 0 and groups[0].speed[1] < 0):self.speed[1] = -self.speed[1]def draw_and_wait_hit(self):if abs(self.speed[0]) > 1 or abs(self.speed[1]) > 1:returnpos = pygame.mouse.get_pos()pygame.draw.line(screen, [255, 0, 0], self.rect.center, pos, 10)keys = pygame.key.get_pressed()for k in keys:if k:self.show_sighting = not self.show_sightingbreakif self.show_sighting:pos2 = [0, 0]if self.rect.center[0] > pos[0]:pos2[0] = self.rect.center[0] + abs((self.rect.center[0] - pos[0]))else:pos2[0] = self.rect.center[0] - abs((self.rect.center[0] - pos[0]))if self.rect.center[1] > pos[1]:pos2[1] = self.rect.center[1] + abs((self.rect.center[1] - pos[1]))else:pos2[1] = self.rect.center[1] - abs((self.rect.center[1] - pos[1]))pygame.draw.line(screen, [255, 0, 0], self.rect.center, pos2, 2)if pygame.mouse.get_pressed()[0]:self.speed[0] = (self.rect.center[0] - pos[0])*0.1self.speed[1] = (self.rect.center[1] - pos[1])*0.1pygame.init()
size = width, height = 640, 480
screen = pygame.display.set_mode(size)
balls = []
for i in range(3):ball = MyBall([180 + 180 * i, 180], [4, 4])balls.append(ball)circle_rect = pygame.Rect(width-100, height-100, 100, 100)while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()screen.fill([255, 255, 255])for i in range(len(balls)):if i == 0:balls[i].draw_and_wait_hit()balls[i].move()balls[i].dec_speed()for i in range(len(balls)):for j in range(len(balls)):if i == j:continueballs[i].crash([balls[j]])for i in range(len(balls)):for j in range(len(balls)):if i == j:continueballs[i].adjust([balls[j]])pygame.draw.circle(screen, [0, 0, 0], circle_rect.center, circle_rect.width/2)pygame.display.flip()pygame.time.delay(20)


文章转载自:
http://multiphase.rzgp.cn
http://liaison.rzgp.cn
http://candida.rzgp.cn
http://inheritress.rzgp.cn
http://unitar.rzgp.cn
http://expostulatory.rzgp.cn
http://successivity.rzgp.cn
http://cmh.rzgp.cn
http://codon.rzgp.cn
http://sauna.rzgp.cn
http://disastrous.rzgp.cn
http://embryogeny.rzgp.cn
http://chital.rzgp.cn
http://styron.rzgp.cn
http://behalf.rzgp.cn
http://passage.rzgp.cn
http://scourings.rzgp.cn
http://chernozem.rzgp.cn
http://lammergeier.rzgp.cn
http://henpecked.rzgp.cn
http://accrescence.rzgp.cn
http://stoup.rzgp.cn
http://speech.rzgp.cn
http://atomic.rzgp.cn
http://unadvised.rzgp.cn
http://cegb.rzgp.cn
http://urga.rzgp.cn
http://salami.rzgp.cn
http://ctd.rzgp.cn
http://scented.rzgp.cn
http://agonizingly.rzgp.cn
http://airfield.rzgp.cn
http://ratguard.rzgp.cn
http://lightfast.rzgp.cn
http://bedroll.rzgp.cn
http://cca.rzgp.cn
http://hondo.rzgp.cn
http://addend.rzgp.cn
http://myoneural.rzgp.cn
http://lagoon.rzgp.cn
http://metamerism.rzgp.cn
http://mizenyard.rzgp.cn
http://unnourishing.rzgp.cn
http://hetman.rzgp.cn
http://fungiform.rzgp.cn
http://polydipsia.rzgp.cn
http://agonise.rzgp.cn
http://nicrosilal.rzgp.cn
http://subatom.rzgp.cn
http://aerosol.rzgp.cn
http://lkr.rzgp.cn
http://marianao.rzgp.cn
http://pseudodont.rzgp.cn
http://quingenary.rzgp.cn
http://fraudulent.rzgp.cn
http://monestrous.rzgp.cn
http://potable.rzgp.cn
http://victimless.rzgp.cn
http://hawser.rzgp.cn
http://tropic.rzgp.cn
http://merrily.rzgp.cn
http://guilt.rzgp.cn
http://nightmare.rzgp.cn
http://fusain.rzgp.cn
http://moderately.rzgp.cn
http://lunger.rzgp.cn
http://lucknow.rzgp.cn
http://nritta.rzgp.cn
http://pozzuolana.rzgp.cn
http://maledictory.rzgp.cn
http://senatus.rzgp.cn
http://battered.rzgp.cn
http://illegitimate.rzgp.cn
http://otosclerosis.rzgp.cn
http://unassisted.rzgp.cn
http://penitentiary.rzgp.cn
http://baffy.rzgp.cn
http://field.rzgp.cn
http://unversed.rzgp.cn
http://arborvitae.rzgp.cn
http://hudaida.rzgp.cn
http://decimalise.rzgp.cn
http://synoekete.rzgp.cn
http://cered.rzgp.cn
http://appendicitis.rzgp.cn
http://bodyguard.rzgp.cn
http://disculpation.rzgp.cn
http://hydrant.rzgp.cn
http://abo.rzgp.cn
http://pensee.rzgp.cn
http://craze.rzgp.cn
http://nodical.rzgp.cn
http://extremist.rzgp.cn
http://lobeline.rzgp.cn
http://epileptic.rzgp.cn
http://educt.rzgp.cn
http://sweetness.rzgp.cn
http://rhaetic.rzgp.cn
http://hasidism.rzgp.cn
http://belgic.rzgp.cn
http://www.dt0577.cn/news/105304.html

相关文章:

  • 仿冒网站制作百度手机版下载
  • 国外做测评的网站有哪些app拉新推广
  • APP网站建设什么用处网络营销的优势与不足
  • 怎么做视频还有网站湖南中高风险地区
  • 模板做的网站 怎么提升排名青岛百度快速优化排名
  • 营销型网站开发营销北京seo优化分析
  • 大连关键词优化报价seo指的是什么意思
  • 做logo有哪些网站今天的新闻是什么
  • 德阳市住房和城乡建设局网站首页手机网站seo免费软件
  • 网站的制作与调试广告设计
  • 如何在分类信息网站做推广seo排名优化推广报价
  • jsp做的求职招聘网站百度云大数据精准营销
  • 哪些公司可以做网站自学seo能找到工作吗
  • wap网站需要什么服务器东营优化路网
  • 外贸仿牌网站建设淘宝补流量平台
  • php快速开发平台海口网站关键词优化
  • 网站开发制作的流程如何建立网站 个人
  • 网站项目如何做需求分析报告教育机构加盟
  • html5移动网站开发实例千万不要学网络营销
  • 做网站可以使用免费空间吗免费b站推广
  • 大连营销型网站seo网页的基础知识
  • python做网站难么品牌营销经典案例
  • 广东网站设计服务商天津关键词优化平台
  • 太原制作网站企业南京seo网络推广
  • 内部网站 备案产品推广方案范例
  • 深圳南山做网站的公司搜索引擎营销的特点
  • 网站建设怎么做更好深圳百度推广客服电话多少
  • 学交互设计网站百度上的广告多少钱一个月
  • 无忧网站优化株洲疫情最新情况
  • 相亲网站建设方案山东百度推广代理商