import pygame SCREEN_WIDTH=700 SCREEN_HEIGHT=500 BG_COLOR=pygame.Color(50,50,50) TEXT_COLOR=pygame.Color(250,0,0) class MainGame(): window=None #初始化方法 def __init__(self): pass #开始游戏 def startGame(self): #初始化窗口 pygame.display.init() #设置窗口大小 MainGame.window=pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT)) #设置窗口的标题 pygame.display.set_caption('坦克大战1.03') while True: #给窗口设置填充色 MainGame.window.fill(BG_COLOR) #添加文字信息提示 textSurface=self.getTextSurface("地方坦克剩余数量%d"%5) #主窗口显示文字信息 MainGame.window.blit(textSurface,(5,5)) self.getEvent() pygame.display.update() #结束游戏 def endGame(self): print("谢谢使用,欢迎下次使用") exit() #添加文字信息提示 def getTextSurface(self,text): #初始化字体模块 pygame.font.init() #获取所有字体 #print(pygame.font.get_fonts()) #获取字体对象 font=pygame.font.SysFont("kaiti",18) #绘制文字信息 textSurface=font.render(text,True,TEXT_COLOR) return textSurface #添加事件监听 def getEvent(self): #获取所有事件 eventlist=pygame.event.get() #遍历事件 for event in eventlist: #判断按下是否关闭 if event.type==pygame.QUIT: self.endGame() #判断是否是键盘事件 if event.type==pygame.KEYDOWN: #判断按下的是上 下 左 右 if event.key==pygame.K_LEFT: print("按下左键,坦克向左移动") elif event.key==pygame.K_RIGHT: print("按下右键,坦克向右移动") elif event.key==pygame.K_UP: print("按下上键,坦克向上移动") elif event.key==pygame.K_DOWN: print("按下下键,坦克向下移动") class Tank(): def __init__(self): pass #展示坦克的方法 def displayTank(self): pass #移动坦克 def move(self): pass #射击 def shot(self): pass #我方坦克 class MyTank(Tank): #初始化方法 def __init__(self): pass #敌方坦克 class EnemyTank(Tank): def __init__(self): pass #子弹类 class Bullet(): def __init__(self): pass #展示子弹 def displayBullet(self): pass #移动 def move(self): pass #墙壁类 class wall(): def __init__(self): pass #展示墙壁类 def displayWall(self): pass #爆炸音效类 class Explode(): def __init__(self): pass #展示爆炸效果 def displayExplode(self): pass #音效类 class Music(): def __init__(self): pass #播放音乐 def playMusic(self): pass if __name__=="__main__": MainGame().startGame()
老师,红色方框的那橫杠可以选择不显示吗?还有就是分割线可以指定起始点不?
老师GUI编程需要学到什么程度,这个会影响到后续的学习吗
老师,我查阅了一下pygame文档后找到pygame.key.set_repeat这个语句,可以直接实现按键的按下重复执行,抬起停止执行,但是在按下第一下方向键时,无法马上重复执行move(),只能调转方向,这是为什么呢?
if event.type == pygame.KEYDOWN: #按下按键保持重复执行 pygame.key.set_repeat(50) #具体按下向左 if event.key == pygame.K_LEFT: print("坦克向左掉头,移动") MainGame.TANK_P1.move() MainGame.TANK_P1.direction = "L" elif event.key == pygame.K_RIGHT: print("坦克向右掉头,移动") MainGame.TANK_P1.direction = "R" MainGame.TANK_P1.move() elif event.key == pygame.K_UP: print("坦克向上掉头,移动") MainGame.TANK_P1.direction = "U" MainGame.TANK_P1.move() elif event.key == pygame.K_DOWN: print("坦克向下掉头,移动") MainGame.TANK_P1.direction = "D" MainGame.TANK_P1.move()
老师,我这没有显示线程,是怎么回事啊
老师您好,麻烦问下,print(os.path.dirname("a.txt")) 这句怎么没有输出结果,控制台输出了一行空行?
老师,使用面向对象的方法实现的话,只能是这样吗?我自己觉着要是像课件里讲的调用两个Frame,只能是定义两个类。求解惑!!!
"""测试pack布局管理器""" from tkinter import * class Application(Frame): def __init__(self, master=None): super().__init__(master) # super()代表的是父类的定义,而不是父类对象 self.master = master self.pack() # 调用布局管理器 self.create_widget() def create_widget(self): btnText = ("流行风", "中国风", "日本风", "重金属", "轻音乐") for txt in btnText: Button(self, text=txt).pack(side="left", padx="10") class Application2(Frame): def __init__(self, master=None): super().__init__(master) # super()代表的是父类的定义,而不是父类对象 self.master = master self.pack() # 调用布局管理器 self.create_widget() def create_widget(self): for i in range(1, 15): Button(self, width=5, height=10, bg="black" if i % 2 == 0 else "white").pack(side="left") if __name__ == "__main__": root = Tk() # 创建根窗口对象 root.geometry("700x200+200+300") app = Application(master=root) app2 = Application2(master=root) root.mainloop() # 调用组件的mainloop(),进入时间循环
tkinter * tkinter messagebox Application(Frame): (master=): ().(master) .master = master .pack() .createWidget() (): .v = StringVar(); .v.set() .r1 = Radiobutton(===.v) .r2 = Radiobutton(===.v) .r1.pack(=); .r2.pack(=) Button(==.confirm).pack(=) (): messagebox.showinfo(+.v.get()) __name__== : root = Tk() root.geometry() app = Application(=root) root.mainloop()
不太懂1为什么只读标题而已。
2为什么只读内容,不包含标题,a_csv不是包含标题吗
这块儿的master=root 是使用默认值法在传递参数么?这和函数中的不一样吧?
这块有点不懂、为什么是master=root, 这里直接传进去root不行么?
為什麼寫好後Button鍵按下去沒有反應的?
老师 ,我照着高淇老师上传的模块显示,上传失败是怎么回事
1、Microsoft Windows [版本 10.0.18363.1379] (c) 2019 Microsoft Corporation。保留所有权利。 (mypro-modules) C:\Users\lzh\Desktop\资料\mypro-modules\math3>python setup.py sdist upload running sdist running check warning: check: missing required meta-data: url warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list) warning: sdist: standard file not found: should have one of README, README.txt, README.rst writing manifest file 'MANIFEST' creating baizhanSuperMath-1.0 creating baizhanSuperMath-1.0\baizhanSuperMath making hard links in baizhanSuperMath-1.0... hard linking setup.py -> baizhanSuperMath-1.0 hard linking baizhanSuperMath\__init__.py -> baizhanSuperMath-1.0\baizhanSuperMath hard linking baizhanSuperMath\demo1.py -> baizhanSuperMath-1.0\baizhanSuperMath hard linking baizhanSuperMath\demo2.py -> baizhanSuperMath-1.0\baizhanSuperMath Creating tar archive removing 'baizhanSuperMath-1.0' (and everything under it) running upload Submitting dist\baizhanSuperMath-1.0.tar.gz to https://upload.pypi.org/legacy/ Upload failed (400): Invalid value for blake2_256_digest. Error: Use a valid, hex-encoded, BLAKE2 message digest. error: Upload failed (400): Invalid value for blake2_256_digest. Error: Use a valid, hex-encoded, BLAKE2 message digest. (mypro-modules) C:\Users\lzh\Desktop\资料\mypro-modules\math3>
就显示失败 什么原因啊
总是提示找不到tkinter模块怎么解决
老师,为什么我的上下左右没有效果
那个encoding那前面为啥加#
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637