设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 41736|回复: 1
打印 上一主题 下一主题

【Pygame 第8课】 火力全开

[复制链接]

3

主题

0

好友

32

积分

新手上路

Rank: 1

楼主
发表于 2013-9-8 04:12:23 |显示全部楼层
  1. # -*- coding: cp936 -*-
  2. import random
  3. import pygame
  4. from sys import exit

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

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

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

  18. <span style="line-height: 1.5;">class Bullet:</span>
  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.         
  25.     def move(self):
  26.         if self.active:
  27.             self.y -= 3
  28.         if self.y < 0:
  29.             self.active = False

  30.     def restart(self):
  31.         mouseX,mouseY = pygame.mouse.get_pos()
  32.         self.x = mouseX - self.image.get_width()/2
  33.         self.y = mouseY - self.image.get_height()/2
  34.         self.active = True

  35. pygame.init()
  36. screen = pygame.display.set_mode((450,800),0,32)
  37. pygame.display.set_caption("Hello,World!")
  38. background = pygame.image.load('bg.jpg').convert()
  39. plane = pygame.image.load('plane.png').convert_alpha()

  40. #创建子弹的list
  41. bullet = []
  42. for i in range(5):
  43.     bullets.append(Bullet())
  44. count_b = len(bullets)
  45. index_b = 0
  46. interval_b = 0
  47.    
  48. enemy = Enemy()
  49. while True:

  50.     for event in pygame.event.get():
  51.         if event.type == pygame.QUIT:
  52.             pygame.quit()
  53.             exit()
  54.     screen.blit(background,(0,0))
  55.     interval_b -= 1
  56.     if interval_b < 0:
  57.         bullets[index_b].restart()
  58.         interval_b = 100
  59.         index_b = (index_b + 1) % count_b
  60.     for b in bullets:
  61.         if b.active:
  62.             b.move()
  63.             screen.blit(b.image,(b.x,b.y))

  64.     enemy.move()
  65.     screen.blit(enemy.image,(enemy.x,enemy.y))
  66.     x,y = pygame.mouse.get_pos()
  67.     x -= plane.get_width()/2
  68.     y -= plane.get_height()/2
  69.     screen.blit(plane,(x,y))
  70.     pygame.display.update()
复制代码
为什么我的代码run了以后,python没有响应?跟第8课的代码一模一样啊。求教先生

回复

使用道具 举报

3

主题

0

好友

32

积分

新手上路

Rank: 1

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

...

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

使用道具 举报

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

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

GMT+8, 2024-5-4 02:44 , Processed in 0.024598 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部