#主要包括坦克的创建,显示,移动及射击的功能 import pygame COLOR_BLUE=pygame.Color(0,0,0) COLOR_red=pygame.Color(255,0,0) class MainGame(): window=None def __init__(self): pass #开始游戏方法 def startGame(self): #加载主窗口 pygame.display.init() #创建窗口 MainGame.window=pygame.display.set_mode([700,600]) pygame.display.set_caption("坦克大战") while True: MainGame.window.fill(COLOR_BLUE) self.eventlist() pygame.display.update() MainGame.window.blit(self.getTextSurface("剩余敌方坦克数量%d"%6)(5,5)) #结束游戏 def endGame(self): print("谢谢使用,欢迎下次使用") exit() def eventlist(self): enentlist=pygame.event.get() for event in enentlist: if event.type==pygame.QUIT: self.endGame() if event.type==pygame.KEYDOWN: if event.key==pygame.K_UP: print("按下上键,坦克向上移动") if event.key == pygame.K_DOWN: print("按下下键,坦克向下移动") if event.key == pygame.K_LEFT: print("按下左键,坦克向左移动") if event.key == pygame.K_RIGHT: print("按下右键,坦克向右移动") def getTextSurface(self,text): pygame.font.init() font=pygame.font.SysFont("kaiti",18) testSurface=font.render(text,True,COLOR_red) return testSurface MainGame().startGame() class Tank(): def __init__(self): pass #坦克的移动方法 def moveTank(self): pass #碰撞墙壁的方法 def hitwalls(self): pass #展示坦克 def displayTank(self): pass
老师看一下,我找不出哪个代码出现了问题
pygametimerandom pygame.sprite Sprite SCREEN_WIDTH = SCREEN_HEIGHT = BG_COLOR = pygame.Color() TEXT_COLOR = pygame.Color() BaseItem(Sprite): (): pygame.sprite.Sprite.() MainGame(): window = my_tank = enemyTankList = [] enemyTankCount = myBulletList = [] enemyBulletList = [] explodeList = [] (): (): pygame.display.init() MainGame.window = pygame.display.set_mode([SCREEN_WIDTHSCREEN_HEIGHT]) MainGame.my_tank = Tank() .createEnemyTank() pygame.display.set_caption() : time.sleep() MainGame.window.fill(BG_COLOR) .getEvent() MainGame.window.blit(.getTextSuface(% (MainGame.enemyTankList))()) MainGame.my_tank MainGame.my_tank.live: MainGame.my_tank.displayTank() : MainGame.my_tank MainGame.my_tank = .blitEnemyTank() .blitMyBullet() .blitEnemyBullet() .blitExplode() MainGame.my_tank MainGame.my_tank.live: MainGame.my_tank.stop: MainGame.my_tank.move() pygame.display.update() (): top = i (MainGame.enemyTankCount): left = random.randint() speed = random.randint() enemy = EnemyTank(lefttopspeed) MainGame.enemyTankList.append(enemy) (): enemyTank MainGame.enemyTankList: enemyTank.live: enemyTank.displayTank() enemyTank.randMove() enemyBullet = enemyTank.shot() enemyBullet: MainGame.enemyBulletList.append(enemyBullet) : MainGame.enemyTankList.remove(enemyTank) (): myBullet MainGame.myBulletList: myBullet.live: myBullet.displayBullet() myBullet.move() myBullet.myBullet_hit_enemyTank() : MainGame.myBulletList.remove(myBullet) (): enemyBullet MainGame.enemyBulletList: enemyBullet.live: enemyBullet.displayBullet() enemyBullet.move() enemyBullet.enemyBullet_hit_myTank() : MainGame.enemyBulletList.remove(enemyBullet) (): explode MainGame.explodeList: explode.live: explode.displayExplode() : MainGame.explodeList.remove(explode) (): () () (text): pygame.font.init() font = pygame.font.SysFont() textSuface = font.render(textTEXT_COLOR) textSuface (): eventList = pygame.event.get() event eventList: event.type == pygame.QUIT: .endGame() event.type == pygame.KEYDOWN: MainGame.my_tank MainGame.my_tank.live: event.key == pygame.K_LEFT: MainGame.my_tank.direction = MainGame.my_tank.stop = () event.key == pygame.K_RIGHT: MainGame.my_tank.direction = MainGame.my_tank.stop = () event.key == pygame.K_UP: MainGame.my_tank.direction = MainGame.my_tank.stop = () event.key == pygame.K_DOWN: MainGame.my_tank.direction = MainGame.my_tank.stop = () event.key == pygame.K_SPACE: () (MainGame.myBulletList) < : myBullet = Bullet(MainGame.my_tank) MainGame.myBulletList.append(myBullet) event.type == pygame.KEYUP: event.key == pygame.K_UP event.key == pygame.K_DOWN event.key == pygame.K_RIGHT event.key == pygame.K_LEFT: MainGame.my_tank MainGame.my_tank.live: MainGame.my_tank.stop = Tank(Sprite): (lefttop): .images = { : pygame.image.load(): pygame.image.load(): pygame.image.load(): pygame.image.load()} .direction = .image = .images[.direction] .rect = .image.get_rect() .rect.left = left .rect.top = top .speed = .stop = .live = (): .direction == : .rect.left > : .rect.left -= .speed .direction == : .rect.left + .rect.height < SCREEN_WIDTH: .rect.left += .speed .direction == : .rect.top > : .rect.top -= .speed .direction == : .rect.top + .rect.height < SCREEN_HEIGHT: .rect.top += .speed (): Bullet() (): .image = .images[.direction] MainGame.window.blit(.image.rect) MyTank(Tank): (): EnemyTank(Tank): (lefttopspeed): (EnemyTank).(lefttop) .images = { : pygame.image.load(): pygame.image.load(): pygame.image.load(): pygame.image.load()} .direction = .randDirection() .image = .images[.direction] .rect = .image.get_rect() .rect.left = left .rect.top = top .speed = speed .flag = .step = (): num = random.randint() num == : num == : num == : num == : (): .step <= : .direction = .randDirection() .step = : .move() .step -= (): num = random.randint() num < : Bullet() Bullet(Sprite): (Tank): .image = pygame.image.load() .direction = Tank.direction .rect = .image.get_rect() .direction == : .rect.left = Tank.rect.left + Tank.rect.width / - .rect.width / .rect.top = Tank.rect.top - .rect.height .direction == : .rect.left = Tank.rect.left + Tank.rect.width / - .rect.width / .rect.top = Tank.rect.top + Tank.rect.height .direction == : .rect.left = Tank.rect.left - .rect.height .rect.top = Tank.rect.top + Tank.rect.width / - .rect.height / .direction == : .rect.left = Tank.rect.left + Tank.rect.height .rect.top = Tank.rect.top + Tank.rect.height / - .rect.height / .speed = .live = (): .direction == : .rect.top > : .rect.top -= .speed : .live = .direction == : .rect.top + .rect.height < SCREEN_HEIGHT: .rect.top += .speed : .live = .direction == : .rect.left > : .rect.left -= .speed : .live = .direction == : .rect.left + .rect.width < SCREEN_WIDTH: .rect.left += .speed : .live = (): MainGame.window.blit(.image.rect) (): enemyTank MainGame.enemyTankList: pygame.sprite.collide_rect(enemyTank): enemyTank.live = .live = explode = Explode(enemyTank) MainGame.explodeList.append(explode) (): MainGame.my_tank MainGame.my_tank.live: pygame.sprite.collide_rect(MainGame.my_tank): explode = Explode(MainGame.my_tank) MainGame.explodeList.append(explode) .live = MainGame.my_tank.live = Wall(): (): (): Explode(): (tank): .rect = tank.rect .images = [ pygame.image.load()pygame.image.load()pygame.image.load()pygame.image.load()pygame.image.load()] .step = .image = .images[.step] .live = (): .step < (.images): .image = .images[.step] .step += MainGame.window.blit(.image.rect) : .live = .step = Music(): (): (): __name__ == : MainGame().startGame()
老师 为啥我写完后敌方子弹碰到我方坦克后整个画面就卡住不动了呢,也不报错
请问老师,从哪里可以下载坦克image的图片
老师,还有什么放发下载pygame的方法吗
老师没找到exe文件
"""扑克牌游戏的界面设计""" from tkinter import * class Application(Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.createWidget() def createWidget(self): """通过place布局管理器实现扑克牌位置控制""" # self.photo = PhotoImage(file="puke/puke1.gif") # self.label = Label(self.master, image=self.photo) # self.label.place(x=10, y=50) self.photos = [PhotoImage(file="puke/puke"+str(i+1)+".gif") for i in range(10)] self.labels = [Label(self.master, image=self.photos[i]) for i in range(10)] for i in range(10): self.labels[i].place(x=10+i*40, y=50) # 为所有的label增加事件处理 self.labels[0].bind_class("Label", "<Button-1>", self.chupai) def chupai(self, event): print(event.widget.winfo_geometry()) print(event.widget.winfo_y()) if event.widget.winfo_y() == 50: event.widget.place(y=30) else: event.widget.place(y=50) if __name__ == "__main__": root = Tk() root.geometry("600x270+200+300") root.title("扑克牌游戏界面") app = Application(master=None) root.mainloop() #老师,我的窗口最后关不掉,关掉就会报错
from tkinter import * from tkinter import messagebox class Application(Frame): """一个经典的GUI程序类的写法""" def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.createWidget() def createWidget(self): self.lab01=Label(self,text="用户名") self.lab01.pack() s1=StringVar() self.entry01=Entry(self,textvariable=s1) self.entry01.pack() s1.set("admin") print(s1.get()) #创建密码框 self.lab02=Label(self,text="密码",) self.lab02.pack() s2 = StringVar() self.entry02 = Entry(self, textvariable=s2,show="*") self.entry02.pack() self.btn01=Button(self,text="登录",command=self.chenggong) self.btn01.pack() def chenggong(self): print("去数据库比对数据") print("用户名"+self.entry01.get()) print("密码"+self.entry02.get()) if self.entry01.get()=="gaoqi" and self.entry02.get=="123456": messagebox.showinfo("尚学堂学习系统", "欢迎进入北京尚学堂") else: messagebox.showinfo("尚学堂学习系统","登录失败,用户名或密码错误")
用户名和密码输入正确,这个结果为什么显示登录失败
from tkinter import * from tkinter import messagebox class Application(Frame): """一个经典的GUI程序类的写法""" def __int__(self, master=None): super().__init__(master) self.master = master self.pack() self.createWidget() def createWidget(self): """创建·组件 """ self.btn01 = Button(self) self.btn01["text"] = "点击送花" self.btn01.pack() self.btn01["command"] = self.songhua #创建一个退出按钮 self.btnQuit = Button(self, text="退出", command=root.destroy) self.btnQuit.pack() def songhua(self): messagebox.showinfo("送花", "送你99朵玫瑰花") if __name__ == '__main__': root = Tk() root.geometry("400x200+200+300") root.title("一个经典的GUI程序类的测试") app = Application(master=root) root.mainloop()
我错在哪,明明和老师一样,结果就是运营不出来
grid()方法没有形成了大小一致的单元格吗?entry组件和label组件默认宽高是多个字符
老师,我怎么找不到这个文件呀
老师代码一样为什么我的是这样
我这个是直接复制老师的,怎么点击“点我就送花”却没有反应
def testTag(self): self.w1.delete(1.0, END) self.w1.insert(INSERT, "g good good study,day day up!\n北京尚学堂\n百战程序员\n百度,搜一下就知道") self.w1.tag_add("good", 1.0, 1.5) self.w1.tag_config("good", background="yellow", foreground="red") self.w1.tag_add("baidu", 4.0, 4.2) self.w1.tag_config("baidu", underline=True) self.w1.tag_bind("baidu", "<Button->", self.webshow)
老师,这里的tag_add()方法和tag_config()方法以及tag_bind()方法第一个参数只要一样就行,是什么其实无所谓是吧
我这个怎么报错了,解决办法是什么?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637