是男人就坚持20秒—python版本
2015-02-14 00:17
531 查看
记得玩这个游戏的时候是初中三年级,那时候在qq空间,网页版的,是男人就坚持20秒!很好奇!玩得忘了吃饭,还是坚持不到20秒,现在给大家机会!
# coding = utf-8 # time 2015-02-13-20:15 # by qiu import pygame, sys, time, os, random from pygame.locals import * # set up pygame pygame.init() # set up the window WINDOWWIDTH = 640 WINDOWHEIGHT = 480 windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32) pygame.display.set_caption('是男人就坚持20秒-Python版本') # set up direction variables DOWNLEFT = 1 DOWNRIGHT = 3 UPLEFT = 7 UPRIGHT = 9 MOVESPEED = 10 # set FPS FPS = 40 # set up the colors BLACK = (0, 0, 0) RED = (255, 0, 0) GREEN = (0, 255, 0) BLUE = (0, 0, 255) WHITE = (255, 255, 255) colors = {1:RED, 2:GREEN, 3:BLUE, 4:WHITE} # move moveleft = False moveright = False moveup = False movedown = False # set time time.clock() mainClock = pygame.time.Clock() # set up the block data structure b1 = {'rect':pygame.Rect(random.randint(100, 500), random.randint(100, 500), random.randint(10, 100), random.randint(10, 100)), 'color':colors[random.randint(1, 4)], 'dir':UPRIGHT} b2 = {'rect':pygame.Rect(random.randint(100, 500), random.randint(100, 500), random.randint(10, 100), random.randint(10, 100)), 'color':colors[random.randint(1, 4)], 'dir':DOWNLEFT} b3 = {'rect':pygame.Rect(random.randint(100, 500), random.randint(100, 500), random.randint(10, 100), random.randint(10, 100)), 'color':colors[random.randint(1, 4)], 'dir':UPLEFT} b4 = {'rect':pygame.Rect(random.randint(100, 500), random.randint(100, 500), random.randint(10, 100), random.randint(10, 100)), 'color':colors[random.randint(1, 4)], 'dir':DOWNRIGHT} player = {'rect':pygame.Rect(0, 0, 20, 20), 'color':colors[random.randint(1, 4)]} blocks = [b1, b2, b3, b4] # show text def show_text(surface_handle, text, pos, color, font_bold = False, font_size = 13, font_italic = False): cur_font = pygame.font.SysFont('Courier', font_size) cur_font.set_bold(font_bold) cur_font.set_italic(font_italic) text_fmt = cur_font.render(text, 1, color) surface_handle.blit(text_fmt, pos) # run the game loop mainloop = True while mainloop: # check for the QUIT event for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() # draw the black background onto the surface windowSurface.fill(BLACK) # move player if event.type == KEYDOWN: if event.key == K_LEFT or event.key == ord('a'): moveleft = True moveright = False if event.key == K_RIGHT or event.key == ord('b'): moveright = True moveleft = False if event.key == K_UP or event.key == ord('w'): moveup = True movedown = False if event.key == K_DOWN or event.key == ord('s'): movedown = True moveup = False if event.type == KEYUP: if event.key == K_ESCAPE: pygame.quit() sys.exit() if event.key == K_LEFT or event.key == ord('a'): moveleft = False if event.key == K_RIGHT or event.key == ord('d'): moveright = False if event.key == K_UP or event.key == ord('w'): moveup = False if event.key == K_DOWN or event.key == ord('s'): movedown = False if event.type == MOUSEBUTTONUP: player['rect'].left = event.pos[0] player['rect'].top = event.pos[1] if moveleft and player['rect'].left > 0: player['rect'].left -= MOVESPEED if moveright and player['rect'].right < WINDOWWIDTH: player['rect'].right += MOVESPEED if moveup and player['rect'].top > 0: player['rect'].top -= MOVESPEED if movedown and player['rect'].bottom < WINDOWHEIGHT: player['rect'].top += MOVESPEED for b in blocks: # move the block data structure if b['dir'] == DOWNLEFT: b['rect'].left -= MOVESPEED b['rect'].top += MOVESPEED if b['dir'] == DOWNRIGHT: b['rect'].left += MOVESPEED b['rect'].top += MOVESPEED if b['dir'] == UPLEFT: b['rect'].left -= MOVESPEED b['rect'].top -= MOVESPEED if b['dir'] == UPRIGHT: b['rect'].left += MOVESPEED b['rect'].top -= MOVESPEED # check if the block has move out of the window if b['rect'].top < 0: # block has moved past the top if b['dir'] == UPLEFT: b['dir'] = DOWNLEFT if b['dir'] == UPRIGHT: b['dir'] = DOWNRIGHT if b['rect'].bottom > WINDOWHEIGHT: # block has moved past the bottom if b['dir'] == DOWNLEFT: b['dir'] = UPLEFT if b['dir'] == DOWNRIGHT: b['dir'] = UPRIGHT if b['rect'].left < 0: # block has moved past the left side if b['dir'] == DOWNLEFT: b['dir'] = DOWNRIGHT if b['dir'] == UPLEFT: b['dir'] = UPRIGHT if b['rect'].right > WINDOWWIDTH: # block has moved past the right side if b['dir'] == DOWNRIGHT: b['dir'] = DOWNLEFT if b['dir'] == UPRIGHT: b['dir'] = UPLEFT # draw the block onto the surface pygame.draw.rect(windowSurface, b['color'], b['rect']) # draw player onto the surface pygame.draw.rect(windowSurface, player['color'], player['rect']) # show some info text_time = "time:%.3d" % (time.clock()) show_text(windowSurface, text_time, (20, 400), (0, 255, 0), True) text_pos = "pos:(%d,%d)" % (player['rect'].left, player['rect'].top) show_text(windowSurface, text_pos, (20, 420), (0, 255, 255), True) for bb in blocks: # game over if player['rect'].colliderect(bb['rect']): mainloop = False break; pygame.display.update() mainClock.tick(FPS) # open show score try: fo = open("foo.txt", 'r') show_time = fo.read() except IOError: print ("can\'t open file or read data!") sys.exit() finally: fo.close() curtime = "%.3d" % time.clock() if int(curtime) > int(show_time): try: fo = open("foo.txt", 'w') fo.write(str(curtime)) except IOError: print ("can\'t open file or write data!") sys.exit() finally: fo.close() # show game over mainloop = True show_info = "Game over!" while mainloop: for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() try: fo = open("foo.txt", 'r') tmp_time = fo.read() except IOError: print ("can\'t open file or read data!") finally: fo.close() text_info = "Max time:" + tmp_time show_text(windowSurface, show_info, (120, 180), GREEN, True, 60) show_text(windowSurface, text_info, (20, 380), WHITE, True) pygame.display.update()
相关文章推荐
- 是男人就坚持20秒 java的swing弹弹球GAME
- CocosCreator手记04——是男人就坚持20秒Remastered (TypeScript版)
- javascript版是男人就坚持20秒吧
- SDL小尝试,是男人就坚持20秒
- Java小游戏——是男人就坚持20秒
- cocos2d-x游戏例子01:是男人就坚持20秒(WIN32)
- boost.python和python-dev的ubuntu 8.10下的安装,版本以及注意事项(7)
- 【Python】Python解释器的几种实现版本
- linux下python默认版本的选择
- Python获取操作系统版本信息
- Python项目版本规范
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(4)二分搜索算法
- 2.3版本python如何进行调试
- [python]获取svn版本库里当天日志
- 搞定mod_python安装版本不匹配的问题
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(2) IntCell类
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(6)高效率的幂运算
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(3) 最大子序列和问题