Hi~ o(* ̄▽ ̄*)ブ我是闪电,今天给大家分享一个小游戏的完整代码(python3.6.5版本):

import pygame

from pygame import locals

import random, time, math, sys

class BulletSprite(pygame.sprite.Sprite):

def __init__(self,imagepath,pos,screen,m):

super().__init__()

self.image = pygame.image.load(imagepath)

self.image = pygame.transform.smoothscale(self.image, (10,10))

self.rect = self.image.get_rect()

self.pos = pos

self.rect.x = pos[0]

self.rect.y = pos[1]

self.m=m

self.a=0

self.screen=screen

#============== start ================

# 设置相关属性

#============== start ================

def move(self):

self.rect.y-=self.m[1]

self.rect.x+=self.m[0]+self.m[2]

if self.rect.x<=0 or self.rect.right>=640:

self.m[0]=-self.m[0]

if self.rect.y<=0 or self.rect.bottom>=680:

self.m[1]=-self.m[1]

#============== start ================

# 子弹移动方法

#============== start ================

def update(self):

self.move()

class Zombie(pygame.sprite.Sprite):

def __init__(self,imagepath,pos,screen,m,score,hp):

super().__init__()

self.image = pygame.image.load(imagepath)

self.image = pygame.transform.smoothscale(self.image, (40,50))

self.rect = self.image.get_rect()

self.pos = pos

self.hp=hp

self.rect.x = pos[0]

self.rect.y = pos[1]

self.m=m

self.score=score

self.screen=screen

def move(self,s):

self.rect.y+=1

self.l=['a','a','a','na','na','na','na','na','na','na']

self.pik=random.choice(self.l)

if self.pik=='a':

self.rect.y+=10

self.rect.x+=self.m

if self.rect.bottom>=680:

print('僵尸吃掉了你的脑子!!!')

print(s)

pygame.quit()

sys.exit()

if self.rect.x<=0 or self.rect.right>=640:

self.m=-self.m

def fire(self,b,g):

l=[-5,0,5]

for x in range(3):

a=b('./images/PeaNormal_0.png',[self.rect.x,self.rect.y],self.screen,[l[x],1,self.m])

g.add(a)

def update(self,b,g,s):

self.fire(b,g)

self.move(s)

if self.hp<=0:

# self.score+=1

self.kill()

class Plant(pygame.sprite.Sprite):

def __init__(self,imagepath,pos,screen,m):

super().__init__()

self.image = pygame.image.load(imagepath)

self.image = pygame.transform.smoothscale(self.image, (40,40))

self.rect = self.image.get_rect()

self.screen=screen

self.pos = pos

self.rect.x = pos[0]

self.rect.y = pos[1]

self.m=m

self.a=30

self.g=pygame.sprite.Group()

def move(self):

self.rect.y+=self.a

self.rect.x+=self.m

if self.rect.x<=0 or self.rect.right>=640:

self.m=-self.m

if self.rect.y<=0 or self.rect.bottom>=680:

self.a=-self.a

# if self.rect.bottom>=680:

# self.kill()

def fire(self,b,g):

a=b('./images/PeaNormal_0.png',[self.rect.x,self.rect.y],self.screen,[self.m,1,0])

g.add(a)

def update(self,b,g):

self.fire(b,g)

self.move()

def main():

pygame.init()

FPSclock = pygame.time.Clock()

screen = pygame.display.set_mode((640,680))

image_bg = pygame.image.load("./images/地图.png")

image_bg = pygame.transform.smoothscale(image_bg, (640,680))

mouse_cursor = pygame.image.load("./images/准星.png")

mouse_cursor = pygame.transform.smoothscale(mouse_cursor, (25, 25))

pygame.mouse.set_visible(False)

group_zombie = pygame.sprite.Group()

group_plant = pygame.sprite.Group()

group_bullet = pygame.sprite.Group()

group_bullet1 = pygame.sprite.Group()

group_b = pygame.sprite.Group()

font = pygame.font.Font("stxingka.ttf",32)

n=0

nn=0

ax=False

ap=0

pn=0

d=int(input('dif:'))

while d not in range(1,4):

d=int(input('dif:'))

score=0

if d==3:

plnt=Plant('./images/Peashooter_0.png',[random.randint(0,600),0],1,random.randint(0,2))

group_plant.add(plnt)

pn+=1

ppp=True

aax=False

while True:

# nn+=1

if ap>300:

ap=0

ax=False

FPSclock.tick(200)

screen.blit(image_bg, (0, 0))

n+=1

keys = pygame.key.get_pressed()

if keys[locals.K_x]:

if not aax:

ax=True

if pn>30:

pn=0

group_plant.empty()

if pn==0:

a=BulletSprite('./images/PeaNormal_0.png',[random.randint(0,630),0],screen,[5,1,0])

group_b.add(a)

if n==10:

n=0

zomb=Zombie('./images/Zombie_0.png',[random.randint(0,600),0],random.randint(3,5),random.randint(1,3),score,15)

group_zombie.add(zomb)

# score=zomb.score

aaaa=100

aaaa//=16

print(aaaa)

if d==3:

if nn==500:

nn=500

for x in range(5):

plnt=Plant('./images/Peashooter_0.png',[random.randint(0,600),0],screen,10)

group_plant.add(plnt)

# pn+=1

for event in pygame.event.get():

pos = pygame.mouse.get_pos()

isPressed = pygame.mouse.get_pressed()[0]

if event.type == locals.QUIT:

print(score)

pygame.quit()

sys.exit()

# 当点击鼠标,从两个位置朝鼠标坐标点发射两颗子弹

#============== end ================

if not isPressed:

n1=pos[0]

n2=pos[0]+10

n3=pos[0]-10

if n1<40:

n1=40

if n1>600:

n1=600

if n2<40:

n2=40

if n2>600:

n2=600

if n3<40:

n3=40

if n3>600:

n3=600

plnt=Plant('./images/Peashooter_0.png',[n1,0],screen,random.randint(5,15))

group_plant.add(plnt)

plnt=Plant('./images/Peashooter_0.png',[n2,0],screen,random.randint(5,15))

group_plant.add(plnt)

plnt=Plant('./images/Peashooter_0.png',[n3,0],screen,random.randint(5,15))

group_plant.add(plnt)

pn+=1

# music = pygame.mixer.music

# music.load("./music/射击.mp3") # 加载音乐

# music.play(1)

group_bullet.update()

group_bullet.draw(screen)

group_bullet1.update()

group_bullet1.draw(screen)

group_zombie.update(BulletSprite,group_b,score)

group_zombie.draw(screen)

group_plant.update(BulletSprite,group_b)

group_plant.draw(screen)

if d==3:

group_b.update()

screen.blit(font.render("Score:"+str(score) , True,(255, 0, 0)),(20,20))

if d==3:

group_b.draw(screen)

screen.blit(font.render("plantspawntime:"+str(500-nn) , True,(255, 0, 0)),(20,40))

screen.blit(font.render("zombiespawntime:"+str(10-n) , True,(255, 0, 0)),(20,60))

screen.blit(font.render("plantnumber:"+str(pn) , True,(255, 0, 0)),(20,80))

screen.blit(font.render("ax:"+str(ax) , True,(255, 0, 0)),(20,100))

if ax:

ap+=1

screen.blit(font.render("ap:"+str(ap) , True,(255, 0, 0)),(20,120))

n=0

aax=True

pn=0

group_plant.empty()

# col=pygame.sprite.groupcollide(group_bullet,group_bullet1,True,True)

if d==3:

col=pygame.sprite.groupcollide(group_zombie,group_plant,False,False)

if col:

z=list(col.values())[0][0]

z.m=-z.m

z.a=-z.a

# col=pygame.sprite.groupcollide(plnt.g,group_bullet1,True,True)

col1=pygame.sprite.groupcollide(group_bullet1,group_zombie,True,False)

col2=pygame.sprite.groupcollide(group_bullet,group_zombie,True,False)

col3=pygame.sprite.groupcollide(group_bullet,group_plant,True,False)

col4=pygame.sprite.groupcollide(group_bullet1,group_plant,True,False)

if d==3:

col5=pygame.sprite.groupcollide(group_b,group_zombie,True,False)

if col5:

z=list(col5.values())[0][0]

print(z)

z.hp-=1

if z.hp==0:

if d==1:

score+=2

elif d==2:

score+=5

else:

score+=1

if col1:

z=list(col1.values())[0][0]

z.hp-=1

if z.hp==0:

if d==1:

score+=2

elif d==2:

score+=5

else:

score+=1

if col2:

z=list(col2.values())[0][0]

z.hp-=1

if z.hp==0:

if d==1:

score+=2

elif d==2:

score+=5

else:

score+=1

if col3 or col4:

print('击杀豌豆,误伤队友,失败!!!')

print(score)

pygame.quit()

sys.exit()

screen.blit(mouse_cursor, pos)

pygame.display.update()

if __name__ == "__main__":

main()

先添加images文件夹,再加入图片:Peashooter_0.png,Zombie_0.png,PeaNormal_0.png

地图和准星请自己找,因为没法再添加图片了

在无聊的时候玩小游戏相关推荐

  1. 始终玩小游戏,我就是一个无聊之人

    我的大学生活,从始至终我都承认自己是一个无聊之人.而无聊之人的我最经常做的无聊之事便是玩小游戏.3527小游戏,一个相当精彩的小游戏站,玩之绝无其他,仅为消遣耳.        然通过玩小游戏.我会有 ...

  2. python3小游戏源代码_如何用python3代码玩小游戏?

    在大家的印象中,程序员似乎一直是在码代码的,做着枯燥无聊的生活,殊不知,他们其实也有很多在编程中的快乐.小编最羡慕的就是他们能写一段小程序运行出来,好玩又好看,看起来还很高大上!为了照顾众多pytho ...

  3. 华为手机计算机小游戏,创意满分!华为粉丝年会推手机黑科技,锁屏也能玩小游戏?...

    原标题:创意满分!华为粉丝年会推手机黑科技,锁屏也能玩小游戏? 锁屏壁纸最早就是一张照片,后来变成了锁屏画报,近日锁屏又有了新的玩法.荣耀在线上的花粉年会中推出了游戏锁屏.这个功能可以在锁屏界面简单的 ...

  4. 技术人玩小游戏,如何“不战而胜”

    虽然迟了一天,但还是祝各位小伙伴端午安康. 最近因为端午节到来,物业举办了一个网页小游戏,得分最高的前 N 名可以拿到奖品. 闲来无事的我参加了一下,发现自己实在是太菜了,总是玩不过别人,于是转变思路 ...

  5. 在LINUX下玩小游戏

    在LINUX下玩小游戏 阮志峰 2001年 4期 2001年春节就快到了,在春节假期中,大家都想尽情放松一下吧!其实,在Linux下也有很多好玩的小游戏.下面,小编就向大家介绍几个,愿大家过一个欢 ...

  6. Python跳跳兔小游戏源代码,兔年必玩小游戏,兔年大吉

    Python跳跳兔小游戏源代码,兔年必玩小游戏,兔年大吉,小兔子跳跳,按空格键向上跳跃,按键盘方向键进行左右移动,以避开飞弹,以防被炸,还可以捡到火箭道具哦. 完整程序下载地址:Python跳跳兔小游 ...

  7. 我用Python玩小游戏“跳一跳”,瞬间称霸了朋友圈!

    " 从前几天微信最新版本 6.6.1 的更新开始,微信小程序游戏"跳一跳"似乎在一夜之间风靡了朋友圈. 它甚至比五六年前的飞机大战游戏都火爆,这种小游戏的火爆不仅仅是因为 ...

  8. 好想学python怎么玩_我用Python玩小游戏“跳一跳”,瞬间称霸了朋友圈!

    你想问我怎么玩的? 很简单啊, 就一个字: 跳! 大家都在跳 为什么有的人能称霸朋友圈 有的人只有几百分呢 达妹给你整理了游戏攻略 (分普通版和进阶版哦) ▼ 游戏攻略拿高分 普通版本的高分秘籍是这样 ...

  9. 无聊的农场 - vue小游戏

    界面 游戏介绍 地址: 无聊的农场 玩法:鼠标移动到土地(白色区域)上就可以种植植物啦! 结局:没有结局 类型:放置类游戏 平台:PC chrome 浏览器(其他浏览器也许可以,没有测) 简介:你上班 ...

最新文章

  1. 基于小波变换到图像融合
  2. 中间显示内容_在Excel表格中,你知道编辑栏吗?可以编辑公式和录入内容
  3. MAT分析OOM问题
  4. 十分钟看懂什么是VoLTE【包学包会,否则退款】
  5. 为Cubieboard打造完美Debian系统
  6. 垂直串联六关节机器人调试手册_工业机器人有哪些应用你知道吗?
  7. 【中生代技术】1024程序员节快跑,提需求的来了
  8. 手机屏幕宽高像素计算_国内手机厂商纷纷支持,三星传感器终成正果!索尼还能雄起吗?...
  9. 【leetcode】二进制手表-经典或回溯题目
  10. Harmony OS — PageSliderIndicator滑动页面指示器
  11. 重塑企业协同价值链,致远互联将“组织精神”进行到底
  12. 阿里巴巴Java开发规范手册(详尽版)——免费下载
  13. Servlet思维导图总结
  14. iOS 读书笔记-单元测试XCTest
  15. 大漠插件ocr多选字库_易语言大漠插件模块制作设置字库及OcrEx识别字符串
  16. 算法复杂度及渐进符号
  17. Android阅读源码从工具开始
  18. 为什么电脑唯独搜不到自己家wifi?
  19. 如何使用Facebook进行选品使用
  20. ARCore之路:ARCore 中的 Session Config 配置中的参数介绍

热门文章

  1. PLC计数器例子——3个计数器构成的24小时时钟
  2. java 正则表达式验证
  3. python的logo长什么样子
  4. Android手工打造脑图控件
  5. 10万行代码电商项目
  6. 塔望 · ​食业​研究 |食品品牌能从植物奶第一股OATLY破圈中学到什么
  7. 我运营公众号这一个月
  8. unity3d学习笔记——老版动画系统的使用
  9. error C2039: ‘tr1‘: is not a member of ‘std‘
  10. FITC-WFA荧光素标记紫藤凝集素(WFA,WFL)