设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【Pygame 第8课】 火力全开

[复制链接]

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

24#
发表于 2016-2-4 18:59:23 |只看该作者
本来还想不明白这样和之前的子弹效果上有什么区别,截图后就明白啦,现在视觉效果上的确是更强了~~我设置的5发子弹,interval_b=50~~

Python29.png (111.46 KB, 下载次数: 297)

Python29.png

回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

23#
发表于 2016-2-4 17:05:39 |只看该作者
Crossin老师,index_b = (index_b + 1) % count_b这一句我不是很理解,%count_b的作用是什么?
回复

使用道具 举报

0

主题

0

好友

26

积分

新手上路

Rank: 1

22#
发表于 2015-12-3 13:24:36 |只看该作者
难道只有我发现了子弹无法发射出去么?
回复

使用道具 举报

0

主题

0

好友

25

积分

新手上路

Rank: 1

21#
发表于 2014-10-24 19:36:07 |只看该作者
IDE 请用pycharm,自动报错的哦,非常不错
回复

使用道具 举报

2

主题

0

好友

216

积分

中级会员

Rank: 3Rank: 3

20#
发表于 2014-7-18 20:25:27 |只看该作者
crossin先生 发表于 2014-7-18 14:15
你的这个b是个bool变量吧

BUG已解决. 是书写错误... 唉得弄个好用的IDE.
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

19#
发表于 2014-7-18 14:15:16 |只看该作者
toddlerya 发表于 2014-7-17 22:49
Traceback (most recent call last):
  File "E:\feijidazhan\hello.py", line 106, in
    if b.active() ...

你的这个b是个bool变量吧
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

216

积分

中级会员

Rank: 3Rank: 3

18#
发表于 2014-7-17 22:49:45 |只看该作者
Traceback (most recent call last):
  File "E:\feijidazhan\hello.py", line 106, in <module>
    if b.active():
TypeError: 'bool' object is not callable



这是为什么呢,先生,为什么无法调用呢?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

17#
发表于 2013-9-13 01:43:48 |只看该作者
test777 发表于 2013-9-11 13:17
感觉让Bullet类自己管理实例的状态的也不错

是的,这样似乎更符合面向对象
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

63

积分

注册会员

Rank: 2

16#
发表于 2013-9-11 13:17:32 |只看该作者
感觉让Bullet类自己管理实例的状态的也不错
  1. # -*- coding: utf-8 -*-
  2. import pygame,sys,random

  3. class Enemy:

  4.     def restart(self):
  5.         self.x = random.randint(50,400)
  6.         self.y = random.randint(-200,-50)
  7.         self.speed = random.random() + 0.1


  8.     def __init__(self):
  9.         self.restart()
  10.         self.image = pygame.image.load('enemy.png').convert_alpha()

  11.     def move(self):
  12.         if self.y < 800:
  13.             self.y += self.speed
  14.         else:
  15.             self.restart()

  16. class Bullet:

  17.     active_bullets = []
  18.     bullets = []

  19.     def __init__(self):
  20.         self.x = 0
  21.         self.y = -1
  22.         self.image = pygame.image.load('bullet.png').convert_alpha()
  23.         self.active = False
  24.         Bullet.bullets.append(self)
  25.         print(len(Bullet.bullets))

  26.     def move(self):
  27.         if self.y < 0:
  28.             Bullet.active_bullets.pop(Bullet.active_bullets.index(self))
  29.             Bullet.bullets.append(self)
  30.         if self in Bullet.active_bullets:
  31.             self.y -= 3

  32.     def restart(self):
  33.         mouseX,mouseY = pygame.mouse.get_pos()
  34.         self.x = mouseX - self.image.get_width()/2
  35.         self.y = mouseY - self.image.get_height()/2
  36.         self.active = True
  37.         Bullet.active_bullets.append(self)



  38. pygame.init()
  39. screen = pygame.display.set_mode((450,800),0,32)
  40. pygame.display.set_caption("Hello,Wrold!")
  41. background = pygame.image.load('back.jpg').convert()
  42. plane = pygame.image.load('plane.png').convert_alpha()


  43. for i in range(5):
  44.     Bullet()

  45. enemy = Enemy()
  46. interval_b = 0

  47. while True:
  48.     for event in pygame.event.get():
  49.         if event.type == pygame.QUIT:
  50.             pygame.quit()
  51.             sys.exit()
  52.     screen.blit(background,(0,0))

  53.     interval_b -= 1
  54.     if interval_b < 0:
  55.         if len(Bullet.bullets):
  56.             Bullet.bullets.pop(0).restart()
  57.         interval_b = 100

  58.     for b in Bullet.active_bullets:
  59.         b.move()
  60.         screen.blit(b.image,(b.x,b.y))

  61.     enemy.move()
  62.     screen.blit(enemy.image,(enemy.x,enemy.y))


  63.     x,y = pygame.mouse.get_pos()
  64.     x -= plane.get_width()/2
  65.     y -= plane.get_height()/2
  66.     screen.blit(plane,(x,y))
  67.     pygame.display.update()
复制代码
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

15#
发表于 2013-9-10 23:23:46 |只看该作者
aresli 发表于 2013-9-10 22:20
python 貌似没什么好的ide吧!

呵呵。。。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-20 03:06 , Processed in 0.040358 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部