python基础之--人机大战,编程思维

这篇具有很好参考价值的文章主要介绍了python基础之--人机大战,编程思维。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

import pygame
import time  #循环里面要sleep一下,不然一会儿就将内存占满了
from pygame.locals import * #检测键盘
import random
import sys  #退出系统
#动态的项目,先截个静态图来分析:化动为静,化难为易,一个西瓜切成块,再拼接起来
#拿到一个大项目,首先把项目的各个元素分成一个个的对象,确定对象具备的属性,方法,然后再组装成为一个项目
#玩家类:
#属性:显示窗口、位置、图片、子弹列表、移动状态
#方法:显示、移动、开火,凡是动作类都搞成方法
class player():
    def __init__(self,screen):
        self.screen=screen#将一个窗口对象作为了属性值
        self.x=150
        self.y=500
        self.img =pygame.image.load("飞机\\hero.gif")
        self.bullet_list=[]
        self.ifmoveright=0#0表示不移动,1表示移动
        self.ifmoveleft=0
    def display(self):
        self.screen.blit(self.img,(self.x,self.y))
        print()
        for f in self.bullet_list:
            f.move()
            f.display()
            if f.y<=0:
                self.bullet_list.remove(f)
    def move(self):
        if self.ifmoveleft==1 and self.x>=-30:
            self.x-=20
        if self.ifmoveright==1 and self.x<=270:
            self.x+=20
    def fire(self):
        d=playerzd(self.screen,self.x,self.y)
        self.bullet_list.append(d)
class playerzd():
    def __init__(self,screen,x,y):
        self.screen=screen
        self.x=x
        self.y=y
        self.img=pygame.image.load("飞机\\bullet.png")
    def display(self):
        self.screen.blit(self.img,(self.x,self.y))
    def move(self):
        self.y-=20
class diji():
    def __init__(self,screen):
        self.screen=screen#将一个窗口对象作为了属性值
        self.x=0
        self.y=0
        self.img =pygame.image.load("飞机\\enemy1.png")
        self.bullet_list=[]
        self.dijimove=0#0表示左移动,1表示右移动
    def display(self):
        self.screen.blit(self.img,(self.x,self.y))
        for b in self.bullet_list:
            b.move()
            b.display()
            if b.y>=600:
                self.bullet_list.remove(b)
    def move(self):
        if self.x<=0:
            self.dijimove=1
        if self.x>280:
            self.dijimove=0
        if self.dijimove==1:
            self.x+=10
        if self.dijimove==0:
            self.x-=10
    def fire(self):
        dijizd1=dijizd(self.screen,self.x,self.y)
        self.bullet_list.append(dijizd1)
class dijizd():
    def __init__(self,screen,x,y):
        self.screen=screen#将一个窗口对象作为了属性值
        self.x=x
        self.y=y
        self.img=pygame.image.load("飞机\\bullet-1.gif")
    def display(self):
        self.screen.blit(self.img,(self.x,self.y))
    def move(self):
        self.y+=20
#玩家子弹类
#键盘监控
def jpinput(player):
    for event in pygame.event.get():
        if event.type==QUIT:
            print("正在退出")
            sys.exit(0)#强制退出
        if event.type==KEYDOWN:
            if event.key==K_RIGHT:
                print("正在右移动")
                player.ifmoveright=1
            if event.key==K_LEFT:
                print("正在左移动")
                player.ifmoveleft=1
            if event.key==K_SPACE:
                print("玩家开火")
                player.fire()
        if event.type==KEYUP:
            if event.key==K_RIGHT:
                player.ifmoveright=0
            if event.key==K_LEFT:
                player.ifmoveleft=0
class main():
    screen=pygame.display.set_mode((300,600))
    backimg = pygame.image.load("飞机\\background.png")
    a = player(screen)
    b = diji(screen)
    while 1==1:
        screen.blit(backimg,(0,0))
        b.move()
        c=random.randint(1,5)
        if c==1:
            b.fire()
        b.display()
        jpinput(a)
        a.move()
        a.display()
        pygame.display.update()
        time.sleep(0.5)

文章来源地址https://www.toymoban.com/news/detail-467930.html

到了这里,关于python基础之--人机大战,编程思维的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言模块化编程思维

    eg1:代码案例演示 1:程序的头文件 2:程序逻辑函数文件(这里使用一个延时函数为例子) 3:程序的主文件控制函数的实现 (main函数是c语言程序的入口一个c文件有且仅仅只能有一个main函数文件) 以上是编写代码的一种思路,要进一步掌握需要在实际的编程中锻炼 c语言模

    2024年01月21日
    浏览(41)
  • 《编程思维与实践》1042.字串变换

    分两步解决: 1.判断是否可以通过两种变换使所有的字符串变得相同; 2.在能变换的前提下使变换的次数最少。 其中第一步可以将每个字符串的基底(将连续重复出现的字符视为一个字符)求出来, 如: aaabbb的基底就是ab,进而只需判断基底是否相同即可; 第二步考虑贪心算法,只需

    2024年02月02日
    浏览(22)
  • 【python】python编程基础

    一个元素不可修改的线性数据结构,数据项放在 () 内。 (1)元组的创建形式 其中,元组一旦创建就不能修改其中某一个元素的信息 (2)元组的查询 可以通过下标访问到元组中的每个元素 (3)元组的删除 元组一旦创建成功之后,元组内的数据是不可被修改的,要删除元组

    2024年02月12日
    浏览(27)
  • 读SQL进阶教程笔记15_SQL编程思维

    8.3.3.1. 同样的功能也可以用HAVING子句或者ALL谓词来实现

    2024年02月03日
    浏览(33)
  • 无人机编程实战第1讲——无人机简介

    目录 前言 一、飞控是什么? 二、扫盲行动!!! 1.微控制器 2.传感器 3.处理? 4.无人机飞行姿态 总结         随着开源无人机飞行控制器的不断发展,越来越多优秀的代码与算法不断涌现,无人机领域的技术不断趋于成熟,也使得无人机领域的门槛一再降低,现在国内工

    2024年02月11日
    浏览(33)
  • 【python】08.面向对象编程基础

    活在当下的程序员应该都听过\\\"面向对象编程\\\"一词,也经常有人问能不能用一句话解释下什么是\\\"面向对象编程\\\",我们先来看看比较正式的说法。 \\\"把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部

    2024年01月20日
    浏览(42)
  • Python十道基础编程题

    该函数的输入是一个包含数字的list,输出一个新的list,其中每个元素满足以下条件: 该元素是偶数 该元素在原list中是在偶数的位置(index是偶数)

    2024年02月05日
    浏览(23)
  • 【C++】面向对象编程(二)面向对象的编程思维:virtual虚拟调用、继承、protected成员、派生类与基类

    默认情形下,成员函数的解析都是编译时静态进行。如果要让成员函数的解析在程序运行时动态进行,需要在成员函数的声明前加上virtual: 虚函数的作用: 用基类的指针指向不同的派生类的对象时,基类指针调用其虚成员函数,会调用 真正指向对象的成员函数 ,而

    2024年02月07日
    浏览(38)
  • 【Unity入门】25.零基础实现游戏Demo--神鸟大战怪兽

        大家好,我是Lampard~~     欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢      经过了两个月的学习,我们也顺利的完成了入门课程,最后就用一个Demo作为我们的结课句号吧,这篇文章会带大家从0完成这些~~ 文末会附带项目资源包,一定要看到最后哇 (●

    2024年02月16日
    浏览(37)
  • 编程界的圣经:从Scheme到JavaScript构建你的计算思维

    《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs,简记为SICP)是MIT的基础课教材,出版后引起计算机教育界的广泛关注,对推动全世界大学计算机科学技术教育的发展和成熟产生了很大影响。这本书的第1版于1984年出版,第2版于1996年出版,至今已被全世

    2024年03月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包