写简单游戏,学编程语言-python篇:传说哥大战剧毒术士
2014-01-03 19:05
453 查看
上篇写的动画示例其实算不上一个游戏,顶多算是利用pygame进行的图形操作,今天着手实现一个小游戏:传说哥大战剧毒术士。名字很玄乎,其实就是最简单的一个射击游戏。好了废话不多说,先上截图吧:
View Code
import pygame import math import random # 1 - Initialize the game pygame.init() # prepare the variables width, height = 640, 480 screen=pygame.display.set_mode((width, height)) playerpos=[100,100] speed_x=5 speed_y=5 speed_bullet=10 speed_shit=3 shot=0 alive=True bullet=[] shit=[] badguy_x=random.randrange(0,640) badguy_y=random.randrange(0,480) badguy_pos=[badguy_x,badguy_y] green=[0,255,0] # 2 - Load images player = pygame.image.load("1.bmp") badguy = pygame.image.load("2.bmp") backgroud= pygame.image.load("3.bmp") bullet_bmp=pygame.image.load("4.bmp") shit_bmp=pygame.image.load("5.bmp") player.set_colorkey([0,0,0]) badguy.set_colorkey([0,0,0]) shit_bmp.set_colorkey([255,255,255]) # 3 - main loop while 1: # 4 - clear the screen before drawing it again screen.fill(0) # 5 - draw the backgroud for x in range(width/backgroud.get_width()+1): for y in range(height/backgroud.get_height()+1): screen.blit(backgroud,(x*90,y*65)) # 6 - loop through the events for event in pygame.event.get(): # check if the event is the X button if event.type==pygame.QUIT: # if it is quit the game pygame.quit() exit(0) if event.type==pygame.KEYDOWN: if event.key == pygame.K_w: playerpos[1]-=speed_y elif event.key == pygame.K_s: playerpos[1]+=speed_y elif event.key == pygame.K_a: playerpos[0]-=speed_x elif event.key == pygame.K_d: playerpos[0]+=speed_x position = pygame.mouse.get_pos() angle = math.atan2(position[1]-(playerpos[1]+32),position[0]-(playerpos[0]+32)) playerrot = pygame.transform.rotate(player, 360-angle*57.29) playerpos1 = (playerpos[0]-playerrot.get_rect().width/2, playerpos[1]-playerrot.get_rect().height/2) if event.type==pygame.MOUSEBUTTONDOWN: position=pygame.mouse.get_pos() bullet.append([math.atan2(position[1]-(playerpos1[1]+32), position[0]-(playerpos1[0]+32)),playerpos1[0]+32,playerpos1[1]+32]) # 7 - process fight screen.blit(playerrot, playerpos1) for oneshot in bullet: index=0 velx=math.cos(oneshot[0])*speed_bullet vely=math.sin(oneshot[0])*speed_bullet oneshot[1]+=velx oneshot[2]+=vely if oneshot[1]<-64 or oneshot[1]>640 or oneshot[2]<-64 or oneshot[2]>480: bullet.pop(index) index+=1 for eachone in bullet: pos_x=int(eachone[1]) pos_y=int(eachone[2]) pos=[pos_x,pos_y] bullet_bmp_new=pygame.transform.rotate(bullet_bmp,360-eachone[0]*57.29) screen.blit(bullet_bmp_new,pos) pygame.display.flip() for oneshot in bullet: if oneshot[1]<badguy_pos[0]+57 and oneshot[1]>badguy_pos[0] and\ oneshot[2]<badguy_pos[1]+70 and oneshot[2]>badguy_pos[1]: shot+=1 alive=False break if shot<5 and alive==False: badguy_x=random.randrange(0,640-57) badguy_y=random.randrange(0,480-70) badguy_pos=[badguy_x,badguy_y] alive=True if alive ==True: screen.blit(badguy, badguy_pos) else: pygame.quit() exit(0) if len(shit)<2: shit.append([math.atan2(playerpos1[1]-(badguy_pos[1]+32), playerpos1[0]-(badguy_pos[0]+32)),badguy_pos[0]+32,badguy_pos[1]+32]) for oneshit in shit: index=0 velx=math.cos(oneshit[0])*speed_shit vely=math.sin(oneshit[0])*speed_shit oneshit[1]+=velx oneshit[2]+=vely if oneshit[1]<-64 or oneshit[1]>640 or oneshit[2]<-64 or oneshit[2]>480: shit.pop(index) index+=1 for eachshit in shit: pos_x=int(eachshit[1]) pos_y=int(eachshit[2]) pos=[pos_x,pos_y] shit_bmp_new=pygame.transform.rotate(shit_bmp,360-eachshit[0]*57.29) screen.blit(shit_bmp_new,pos) pygame.display.flip() for oneshit in shit: if oneshit[1]<playerpos1[0]+66 and oneshit[1]>playerpos1[0] and\ oneshit[2]<playerpos1[1]+66 and oneshit[2]>playerpos1[1]: pygame.quit() exit(0) pygame.display.flip()
View Code
相关文章推荐
- 写简单游戏,学编程语言-python篇:大鱼吃小鱼
- 写简单游戏,学编程语言-python篇
- node.js websocket+html5实现的简单联网tank大战的游戏模型
- Win32游戏制作之---五子棋的简单设计
- 推荐榜单新上榜游戏的超简单分析[8.24]iPhone
- godot制作简单2D游戏Pong
- java 小项目:简单扑克牌游戏
- (转)【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 一个简单的游戏(3)
- 回归游戏的世界,简单图形编程学习的开始
- 爱学习,爱编程,爱咖啡可乐 爱挑战,爱钻研,爱打游戏 爱晚起,也爱工作到深夜 我擅长技术,崇尚简单和懒惰 我神秘而孤僻,沉默而爱憎分明 Don't Panic! I'm a programmer
- 数据结构在游戏中的简单应用
- 如何写一个简单的局域网游戏
- cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第5天
- 游戏辅助原理与制作第二课--------植物大战僵尸修改阳光(一)
- Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏
- 一个简单的游戏引擎核心状态机的C++实现
- [Unity3D]手机3D游戏开发:简单的移动和缩放鼠标手势脚本源码
- 简单的android游戏测试
- Cocos2d-x简单游戏<捕鱼达人>代码实现|第五部分:游戏类