请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生

【Pygame 第8课】 火力全开

[复制链接]

3

主题

0

好友

32

积分

新手上路

Rank: 1

发表于 2013-9-8 04:16:51 |显示全部楼层
waller516435165 发表于 2013-9-8 04:12
为什么我的代码run了以后,python没有响应?跟第8课的代码一模一样啊。求教先生

...

发现问题了...我的变量命名错了,bullets,我的是bullet....粗心要不得啊
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-9-8 12:45:36 |显示全部楼层
waller516435165 发表于 2013-9-8 04:12
为什么我的代码run了以后,python没有响应?跟第8课的代码一模一样啊。求教先生

...

有报错吗?
图片文件都有吗?
之前几课代码有没有运行成功过?
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-9-8 16:03:25 |显示全部楼层
waller516435165 发表于 2013-9-8 04:16
发现问题了...我的变量命名错了,bullets,我的是bullet....粗心要不得啊

一般都会遇到这种问题。所以一个好的ide会帮上大忙
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

1

好友

132

积分

注册会员

Rank: 2

发表于 2013-9-10 22:20:17 |显示全部楼层
crossin先生 发表于 2013-9-8 16:03
一般都会遇到这种问题。所以一个好的ide会帮上大忙

python 貌似没什么好的ide吧!
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-9-10 23:23:46 |显示全部楼层
aresli 发表于 2013-9-10 22:20
python 貌似没什么好的ide吧!

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

使用道具 举报

0

主题

0

好友

63

积分

注册会员

Rank: 2

发表于 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

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-9-13 01:43:48 |显示全部楼层
test777 发表于 2013-9-11 13:17
感觉让Bullet类自己管理实例的状态的也不错

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

使用道具 举报

2

主题

0

好友

216

积分

中级会员

Rank: 3Rank: 3

发表于 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

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 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

发表于 2014-7-18 20:25:27 |显示全部楼层
crossin先生 发表于 2014-7-18 14:15
你的这个b是个bool变量吧

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

使用道具 举报

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

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

GMT+8, 2024-3-29 14:07 , Processed in 0.018532 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部