动象论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 224 | 回复: 35

秀 技 术

[复制链接]

55

主题

267

帖子

687

积分

清正廉明~版主

致敬·Mozilla Firefox

Rank: 16Rank: 16Rank: 16Rank: 16

积分
687

论坛官方最佳新人活跃会员

发表于 2020-7-11 20:10:08 | 显示全部楼层 |阅读模式
改天我再写个网络爬虫的程序。
需要准备:1、至少安装python3.6及以上版本。
2、安装完成后直接输入命令行pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygame后等待安装完pygame库。
3、下载帖子附件,解压后请不要对文件夹做任何更改。直接运行那个.py文件即可。
接下来是代码:
  1. import pygame
  2. import random
  3. import time

  4. pygame.init()
  5. screen=pygame.display.set_mode([288,512])  #此为assets/background.png背景图片尺寸

  6. background=pygame.image.load('assets/background.png')#背景图片
  7. pygame.display.set_caption('Flappy Bird')#标题

  8. bgm=pygame.mixer.Sound('sound/bgm2.wav')  #mixer专门负责音乐模块的混音器,用Sound拿到一个新的声音文件
  9. channel_1=pygame.mixer.Channel(1)
  10. channel_1.play(bgm)#用频道(channel)1来播放(play)这个声音文件bgm2.wav

  11. keep_going=True
  12. clock=pygame.time.Clock()

  13. class Bird(pygame.sprite.Sprite):   #pygame.sprite.Sprite包含编写游戏对象时所需的很多功能
  14.         def __init__(self):
  15.                 pygame.sprite.Sprite.__init__(self)  #调用主Sprite类的初始化函数
  16.                 self.birdSprites=[pygame.image.load('assets/0.png'),
  17.                 pygame.image.load('assets/1.png'),
  18.                 pygame.image.load('assets/2.png')]#3个造型
  19.                 self.a=0  #相当于newBird.birdSprites[0]
  20.                 self.birdX=50
  21.                 self.birdY=100  #初始的XY
  22.                 self.jumpSpeed=15  #跳跃速度
  23.                 self.gravity=0.55  #跳跃重力
  24.                 #让小鸟图片外接一个矩形
  25.                 self.rect=self.birdSprites[self.a].get_rect()#get_rect()获得矩形
  26.                 self.rect.center=(self.birdX,self.birdY)#让外接矩形的中心定位到小鸟那里

  27.         def birdUpdate(self):
  28.                 self.jumpSpeed-=self.gravity
  29.                 self.birdY-=self.jumpSpeed

  30.                 self.rect.center=(self.birdX,self.birdY)#让外接矩形的中心始终跟着小鸟运动

  31.                 if newBird.jumpSpeed<0:  #下落造型
  32.                         self.a=1
  33.                 if newBird.jumpSpeed>0:  #上升造型
  34.                         self.a=2

  35.         def birdCrush(self):
  36.                 global keep_going
  37.                 #调用矩形检测,若撞上水管,返回True
  38.                 resultU=self.rect.colliderect(newWall.wallUpRect)
  39.                 resultD=self.rect.colliderect(newWall.wallDownRect)

  40.                 if resultU or resultD or newBird.rect.top>512:
  41.                         hit=pygame.mixer.Sound('sound/hit.wav')
  42.                         channel_3=pygame.mixer.Channel(3)
  43.                         channel_3.play(hit)
  44.                         time.sleep(0.3)
  45.                         keep_going=False  #撞上/坠地就停止
  46.                         print(er)

  47. class Wall():
  48.         def __init__(self):
  49.                 self.wallUp=pygame.image.load('assets/bottom.png')#上水管图片
  50.                 self.wallDown=pygame.image.load('assets/top.png')#下水管图片
  51.                 #水管附上矩形
  52.                 self.wallUpRect=self.wallUp.get_rect()
  53.                 self.wallDownRect=self.wallDown.get_rect()

  54.                 self.gap=random.randint(50,100)  #上下水管间隔
  55.                 self.wallx=288  #水管的x坐标
  56.                 self.offset=random.randint(-50,50)  #水管偏移量

  57.                 #设置并存储俩水管的Y坐标
  58.                 self.wallUpY=360+self.gap-self.offset
  59.                 self.wallDownY=0-self.gap-self.offset
  60.                 #矩形中心跟着水管图像移动
  61.                 self.wallUpRect.center=(self.wallx,self.wallUpY)
  62.                 self.wallDownRect.center=(self.wallx,self.wallDownY)

  63.         def wallUpdate(self):
  64.                 self.wallx-=2
  65.                 #矩形中心重复跟着水管图像移动
  66.                 self.wallUpRect.center=(self.wallx,self.wallUpY)
  67.                 self.wallDownRect.center=(self.wallx,self.wallDownY)

  68.                 if self.wallx<-80:
  69.                         self.wallx=288
  70.                         self.offset=random.randint(-50,50)
  71.                         #重复设置并存储俩水管的Y坐标
  72.                         self.wallUpY=360+self.gap-self.offset
  73.                         self.wallDownY=0-self.gap-self.offset



  74. newBird=Bird()  #这个Bird()等于上面的self
  75. newWall=Wall()

  76. er='{{{Made by Mozilla!!!}}}'

  77. while keep_going:
  78.         for event in pygame.event.get():
  79.                 if event.type==pygame.QUIT:
  80.                         keep_going=False
  81.                         print(er)
  82.                 if event.type==pygame.MOUSEBUTTONDOWN:
  83.                         newBird.jumpSpeed=7
  84.                         #用频道2来播放飞行音效fly.WAV
  85.                         channel_2=pygame.mixer.Channel(2)
  86.                         fly=pygame.mixer.Sound('sound/fly.WAV')
  87.                         channel_2.play(fly)

  88.         screen.blit(background,(0,0))
  89.         screen.blit(newBird.birdSprites[newBird.a],newBird.rect)
  90.         screen.blit(newWall.wallUp,newWall.wallUpRect)
  91.         screen.blit(newWall.wallDown,newWall.wallDownRect)

  92.         newWall.wallUpdate()
  93.         newBird.birdUpdate()  #运行定义的函数,见Ln22
  94.         newBird.birdCrush()
  95.         pygame.display.update()
  96.         clock.tick(60)

  97. pygame.quit
复制代码
独立完成。
话说@-墟- 你是不是也该多秀秀你过硬的C++算法技术!
动象论坛欢迎您!文明发帖,理性交流!(๑`・ᴗ・´๑)

55

主题

267

帖子

687

积分

清正廉明~版主

致敬·Mozilla Firefox

Rank: 16Rank: 16Rank: 16Rank: 16

积分
687

论坛官方最佳新人活跃会员

 楼主| 发表于 2020-7-11 20:32:29 | 显示全部楼层
游戏玩法可以去网上搜搜,很知名的游戏
动象论坛欢迎您!文明发帖,理性交流!(๑`・ᴗ・´๑)
回复

使用道具 举报

12

主题

94

帖子

227

积分

清正廉明~版主

风纪委员

Rank: 16Rank: 16Rank: 16Rank: 16

积分
227

论坛官方最佳新人活跃会员

发表于 2020-7-11 20:39:39 | 显示全部楼层
牛逼了,你这个这么多,我那个太少了,干白皙风。
网络爬虫不要太爽!我用他自动抓取妹子涩图

tel:181 5707 6602
回复

使用道具 举报

138

主题

1043

帖子

2916

积分

清正廉明~管理员

用心做好论坛,用心创造精品!

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
2916

论坛官方最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老论坛财主在线王比特币王

发表于 2020-7-11 20:46:32 | 显示全部楼层
黄蕊小白花 发表于 2020-7-11 20:39
牛逼了,你这个这么多,我那个太少了,干白皙风。
网络爬虫不要太爽!我用他自动抓取妹子涩图 ...

额~
动象论坛
点滴纯粹 简单自然
动象论坛,用心做好论坛!用心创造精品!
[点我进入]dxbbs.twxne.top
回复

使用道具 举报

174

主题

1026

帖子

2222

积分

清正廉明~版主

虽然不怎么在线,但管理还是有一套

Rank: 16Rank: 16Rank: 16Rank: 16

积分
2222

论坛官方最佳新人活跃会员灌水之王

QQ
发表于 2020-7-12 17:30:36 | 显示全部楼层
@admin 话说你什么时候你也弄个视频链接生成器
使用我的脚本的先安装ybc模块!cmd输入以下内容即可安装:
Python安装位置 -m pip install ybc-speech

想支持我吗?快来!
官方论坛
动象论坛(本坛)
回复

使用道具 举报

138

主题

1043

帖子

2916

积分

清正廉明~管理员

用心做好论坛,用心创造精品!

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
2916

论坛官方最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老论坛财主在线王比特币王

发表于 2020-7-12 19:03:43 | 显示全部楼层
汪子凯 发表于 2020-7-12 17:30
@admin 话说你什么时候你也弄个视频链接生成器

图床好整,视频不好弄,还没人提供免费视频床呢
动象论坛
点滴纯粹 简单自然
动象论坛,用心做好论坛!用心创造精品!
[点我进入]dxbbs.twxne.top
回复

使用道具 举报

138

主题

1043

帖子

2916

积分

清正廉明~管理员

用心做好论坛,用心创造精品!

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
2916

论坛官方最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老论坛财主在线王比特币王

发表于 2020-7-16 17:57:07 | 显示全部楼层
20.8M,,,我得做个限制了。。。
动象论坛
点滴纯粹 简单自然
动象论坛,用心做好论坛!用心创造精品!
[点我进入]dxbbs.twxne.top
回复

使用道具 举报

55

主题

267

帖子

687

积分

清正廉明~版主

致敬·Mozilla Firefox

Rank: 16Rank: 16Rank: 16Rank: 16

积分
687

论坛官方最佳新人活跃会员

 楼主| 发表于 2020-7-16 18:51:59 | 显示全部楼层
admin 发表于 2020-7-16 17:57
20.8M,,,我得做个限制了。。。

什么?
动象论坛欢迎您!文明发帖,理性交流!(๑`・ᴗ・´๑)
回复

使用道具 举报

138

主题

1043

帖子

2916

积分

清正廉明~管理员

用心做好论坛,用心创造精品!

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
2916

论坛官方最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老论坛财主在线王比特币王

发表于 2020-7-16 18:54:32 | 显示全部楼层

(ー_ー)!!您上传的附件大小
动象论坛
点滴纯粹 简单自然
动象论坛,用心做好论坛!用心创造精品!
[点我进入]dxbbs.twxne.top
回复

使用道具 举报

55

主题

267

帖子

687

积分

清正廉明~版主

致敬·Mozilla Firefox

Rank: 16Rank: 16Rank: 16Rank: 16

积分
687

论坛官方最佳新人活跃会员

 楼主| 发表于 2020-7-16 18:55:16 | 显示全部楼层
admin 发表于 2020-7-16 18:54
(ー_ー)!!您上传的附件大小

我换个.7z的试试
动象论坛欢迎您!文明发帖,理性交流!(๑`・ᴗ・´๑)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

 QQ 手机版小黑屋网站地图

GMT+8, 2021-7-26 06:12 Processed in 0.174731 second(s), 24 queries .

CopyRight © 2020-2021 DongXiang BBS. All Rights Reserved.

ICP备案号:粤ICP备17035028号-1

Sectigo签章 MySSL签章

快速回复 返回顶部 返回列表