实例介绍
【实例截图】
【核心代码】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | #!/usr/bin/env python import pygame,sys,time,random from pygame. locals import * # 定义颜色变量 redColour = pygame.Color( 255 , 46 , 10 ) blackColour = pygame.Color( 0 , 0 , 16 ) whiteColour = pygame.Color( 255 , 55 , 255 ) greyColour = pygame.Color( 150 , 10 , 150 ) # 定义gameOver函数 def gameOver(playSurface): gameOverFont = pygame.font.Font( 'arial.ttf' , 72 ) gameOverSurf = gameOverFont.render( 'Game Over' , True , greyColour) gameOverRect = gameOverSurf.get_rect() gameOverRect.midtop = ( 320 , 10 ) playSurface.blit(gameOverSurf, gameOverRect) pygame.display.flip() time.sleep( 5 ) pygame.quit() sys.exit() # 定义main函数 def main(): # 初始化pygame pygame.init() fpsClock = pygame.time.Clock() # 创建pygame显示层 playSurface = pygame.display.set_mode(( 640 , 480 )) pygame.display.set_caption( 'Raspberry Snake' ) # 初始化变量 snakePosition = [ 100 , 100 ] snakeSegments = [[ 100 , 100 ],[ 80 , 100 ],[ 60 , 100 ]] raspberryPosition = [ 300 , 300 ] raspberrySpawned = 1 direction = 'right' changeDirection = direction while True : # 检测例如按键等pygame事件 for event in pygame.event.get(): if event. type = = QUIT: pygame.quit() sys.exit() elif event. type = = KEYDOWN: # 判断键盘事件 if event.key = = K_RIGHT or event.key = = ord ( 'd' ): changeDirection = 'right' if event.key = = K_LEFT or event.key = = ord ( 'a' ): changeDirection = 'left' if event.key = = K_UP or event.key = = ord ( 'w' ): changeDirection = 'up' if event.key = = K_DOWN or event.key = = ord ( 's' ): changeDirection = 'down' if event.key = = K_ESCAPE: pygame.event.post(pygame.event.Event(QUIT)) # 判断是否输入了反方向 if changeDirection = = 'right' and not direction = = 'left' : direction = changeDirection if changeDirection = = 'left' and not direction = = 'right' : direction = changeDirection if changeDirection = = 'up' and not direction = = 'down' : direction = changeDirection if changeDirection = = 'down' and not direction = = 'up' : direction = changeDirection # 根据方向移动蛇头的坐标 if direction = = 'right' : snakePosition[ 0 ] = 20 if direction = = 'left' : snakePosition[ 0 ] - = 20 if direction = = 'up' : snakePosition[ 1 ] - = 20 if direction = = 'down' : snakePosition[ 1 ] = 20 # 增加蛇的长度 snakeSegments.insert( 0 , list (snakePosition)) # 判断是否吃掉了树莓 if snakePosition[ 0 ] = = raspberryPosition[ 0 ] and snakePosition[ 1 ] = = raspberryPosition[ 1 ]: raspberrySpawned = 0 else : snakeSegments.pop() # 如果吃掉树莓,则重新生成树莓 if raspberrySpawned = = 0 : x = random.randrange( 1 , 32 ) y = random.randrange( 1 , 24 ) raspberryPosition = [ int (x * 20 ), int (y * 20 )] raspberrySpawned = 1 # 绘制pygame显示层 playSurface.fill(blackColour) for position in snakeSegments: pygame.draw.rect(playSurface,whiteColour,Rect(position[ 0 ],position[ 1 ], 20 , 20 )) pygame.draw.rect(playSurface,redColour,Rect(raspberryPosition[ 0 ], raspberryPosition[ 1 ], 20 , 20 )) # 刷新pygame显示层 pygame.display.flip() # 判断是否死亡 if snakePosition[ 0 ] > 620 or snakePosition[ 0 ] < 0 : gameOver(playSurface) if snakePosition[ 1 ] > 460 or snakePosition[ 1 ] < 0 : for snakeBody in snakeSegments[ 1 :]: if snakePosition[ 0 ] = = snakeBody[ 0 ] and snakePosition[ 1 ] = = snakeBody[ 1 ]: gameOver(playSurface) # 控制游戏速度 fpsClock.tick( 5 ) if __name__ = = "__main__" : main() |
标签:
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论