欢迎光临
我们一直在努力

pygame系列_箭刺Elephant游戏_源码下载

这个游戏原名为:Chimp,我们可以到:

http://www.pygame.org/docs/tut/chimp/ChimpLineByLine.html

获取到源码和详细的源码讲解

下面是我对游戏的改编:

运行效果:

pygame系列_箭刺Elephant游戏_源码下载

当箭刺到大象的时候,大象的身体就会翻转,并且发出声音,当然没有刺到的时候,也会发出另外的声音。

pygame系列_箭刺Elephant游戏_源码下载

在游戏中,有很多地方值得我们参考,如加载图片,声音和异常处理等

=========================================

代码部分:

=========================================

 1 #python elephant  2  3 #Import Modules  4 import os, pygame  5 from pygame.locals import *  6  7 __author__ = {'name' : 'Hongten',  8 'mail' : 'hongtenzone@foxmail.com',  9 'blog' : 'http://www.cnblogs.com/hongten',  10 'QQ' : '648719819',  11 'Version' : '1.0'}  12  13 if not pygame.font: print('Warning, fonts disabled')  14 if not pygame.mixer: print('Warning, sound disabled')  15  16  17 #functions to create our resources  18 def load_image(name, colorkey=None):  19 fullname = os.path.join('data', name)  20 try:  21 image = pygame.image.load(fullname)  22 except pygame.error as message:  23 print('Cannot load image:', fullname)  24 raise (SystemExit, message)  25 image = image.convert()  26 if colorkey is not None:  27 if colorkey is -1:  28 colorkey = image.get_at((0,0))  29  image.set_colorkey(colorkey, RLEACCEL)  30 return image, image.get_rect()  31  32 def load_sound(name):  33 class NoneSound:  34 def play(self): pass  35 if not pygame.mixer or not pygame.mixer.get_init():  36 return NoneSound()  37 fullname = os.path.join('data', name)  38 try:  39 sound = pygame.mixer.Sound(fullname)  40 except pygame.error as message:  41 print('Cannot load sound:', fullname)  42 raise (SystemExit, message)  43 return sound  44  45  46 #classes for our game objects  47 class Spear(pygame.sprite.Sprite):  48 """moves a clenched spear on the screen, following the mouse"""  49 def __init__(self):  50 pygame.sprite.Sprite.__init__(self) #call Sprite initializer  51 self.image, self.rect = load_image('spear-w.png', -1)  52 self.punching = 0  53  54 def update(self):  55 "move the spear based on the mouse position"  56 pos = pygame.mouse.get_pos()  57 self.rect.midtop = pos  58 if self.punching:  59 self.rect.move_ip(5, 10)  60  61 def punch(self, target):  62 "returns true if the spear collides with the target"  63 if not self.punching:  64 self.punching = 1  65 hitbox = self.rect.inflate(-5, -5)  66 return hitbox.colliderect(target.rect)  67  68 def unpunch(self):  69 "called to pull the spear back"  70 self.punching = 0  71  72  73 class Elephant(pygame.sprite.Sprite):  74 """moves a elephant critter across the screen. it can spin the  75  monkey when it is punched."""  76 def __init__(self):  77 pygame.sprite.Sprite.__init__(self) #call Sprite intializer  78 self.image, self.rect = load_image('elephant-nw.png', -1)  79 screen = pygame.display.get_surface()  80 self.area = screen.get_rect()  81 self.rect.topleft = 10, 10  82 self.move = 9  83 self.dizzy = 0  84  85 def update(self):  86 "walk or spin, depending on the monkeys state"  87 if self.dizzy:  88  self._spin()  89 else:  90  self._walk()  91  92 def _walk(self):  93 "move the monkey across the screen, and turn at the ends"  94 newpos = self.rect.move((self.move, 0))  95 if self.rect.left < self.area.left or \  96 self.rect.right > self.area.right:  97 self.move = -self.move  98 newpos = self.rect.move((self.move, 0))  99 self.image = pygame.transform.flip(self.image, 1, 0) 100 self.rect = newpos 101 102 def _spin(self): 103 "spin the monkey image" 104 center = self.rect.center 105 self.dizzy = self.dizzy + 12 106 if self.dizzy >= 360: 107 self.dizzy = 0 108 self.image = self.original 109 else: 110 rotate = pygame.transform.rotate 111 self.image = rotate(self.original, self.dizzy) 112 self.rect = self.image.get_rect(center=center) 113 114 def punched(self): 115 "this will cause the monkey to start spinning" 116 if not self.dizzy: 117 self.dizzy = 1 118 self.original = self.image 119 120 121 def main(): 122 """this function is called when the program starts. 123  it initializes everything it needs, then runs in 124  a loop until the function returns.""" 125 #Initialize Everything 126  pygame.init() 127 screen = pygame.display.set_mode((468, 60)) 128 pygame.display.set_caption('Monkey Fever') 129  pygame.mouse.set_visible(0) 130 131 #Create The Backgound 132 background = pygame.Surface(screen.get_size()) 133 background = background.convert() 134 background.fill((250, 250, 250)) 135 136 #Put Text On The Background, Centered 137 if pygame.font: 138 font = pygame.font.Font(None, 36) 139 text = font.render("Pummel The Elephant, And Win $$$", 1, (10, 10, 10)) 140 textpos = text.get_rect(centerx=background.get_width()/2) 141  background.blit(text, textpos) 142 143 #Display The Background 144  screen.blit(background, (0, 0)) 145  pygame.display.flip() 146 147 #Prepare Game Objects 148 clock = pygame.time.Clock() 149 whiff_sound = load_sound('elephant-jump.wav') 150 punch_sound = load_sound('elephant-mmove.wav') 151 elephant = Elephant() 152 spear = Spear() 153 allsprites = pygame.sprite.RenderPlain((spear, elephant)) 154 155 #Main Loop 156 while 1: 157 clock.tick(60) 158 159 #Handle Input Events 160 for event in pygame.event.get(): 161 if event.type == QUIT: 162 return 163 elif event.type == KEYDOWN and event.key == K_ESCAPE: 164 return 165 elif event.type == MOUSEBUTTONDOWN: 166 if spear.punch(elephant): 167 punch_sound.play() #punch 168  elephant.punched() 169 else: 170 whiff_sound.play() #miss 171 elif event.type is MOUSEBUTTONUP: 172  spear.unpunch() 173 174  allsprites.update() 175 176 #Draw Everything 177  screen.blit(background, (0, 0)) 178  allsprites.draw(screen) 179  pygame.display.flip() 180 181 #Game Over 182 183 184 #this calls the 'main' function when this script is executed 185 if __name__ == '__main__': main()

源码下载:https://files.cnblogs.com/hongten/spear_elephant.zip

 

 

========================================================

 

More reading,and english is important.

 

I'm Hongten

 

pygame系列_箭刺Elephant游戏_源码下载 

 

大哥哥大姐姐,觉得有用打赏点哦!多多少少没关系,一分也是对我的支持和鼓励。谢谢。
Hongten博客排名在100名以内。粉丝过千。
Hongten出品,必是精品。

 

E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten

 

========================================================

 

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《pygame系列_箭刺Elephant游戏_源码下载》
文章链接:https://www.456zj.com/37226.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址