位置: IT常识 - 正文

学习 Python 之 Pygame 开发坦克大战(五)(python怎么学)

编辑:rootadmin
学习 Python 之 Pygame 开发坦克大战(五) 学习 Python 之 Pygame 开发坦克大战(五)坦克大战完善地图1. 创建砖墙2. 给砖墙增加子弹击中的碰撞效果3. 给砖墙添加坦克不能通过的碰撞效果4. 添加石墙5. 添加玩家基地6. 最终效果坦克大战完善地图

推荐整理分享学习 Python 之 Pygame 开发坦克大战(五)(python怎么学),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python语言怎么学,python咋学,python怎样学,python怎么学,python 如何学,python learning,python语言怎么学,python语言怎么学,内容如对您有帮助,希望把文章链接给更多的朋友!

我的素材放到了百度网盘里,里面还有原版坦克大战素材,我都放在一起来,我的素材是从原版改的,各位小伙伴可以直接用或者自己改一下再用,做出适合自己的素材

素材链接:百度网盘 链接:https://pan.baidu.com/s/19sCyH7rp37f6DzRj0iXDCA?pwd=tkdz 提取码:tkdz

那我们就继续编写坦克大战吧

1. 创建砖墙

坦克大战中,砖墙是最常见的墙,子弹都可以轻松击穿,下面我们来加入到自己的坦克大战中

创建砖墙类

import pygame.imagefrom ParentObject import ParentObjectclass BrickWall(ParentObject): def __init__(self, x, y): super().__init__() self.image = pygame.image.load('../Image/Wall/BrickWall.png') self.rect = self.image.get_rect() self.rect.left = x self.rect.top = y self.isDestroy = False def draw(self, window): window.blit(self.image, self.rect)

在主类中加入砖墙列表

class MainGame: ... # 砖墙 brickWallList = [] ...

在主类中加入初始化砖墙函数和显示砖墙函数

def drawBrickWall(self, brickWallList): for brickWall in brickWallList: if brickWall.isDestroy: brickWallList.remove(brickWall) else: brickWall.draw(MainGame.window)def initBrickWall(self): for i in range(20): MainGame.brickWallList.append(BrickWall(i * 25, 200))

这里我在y = 200的位置,连续画出20个砖,砖的图片是25x25的,所以为了防止重叠,要间隔25个距离(像素)

在主函数startGame()函数中调用函数

def startGame(self): # 初始化展示模块 pygame.display.init() # 设置窗口大小 size = (SCREEN_WIDTH, SCREEN_HEIGHT) # 初始化窗口 MainGame.window = pygame.display.set_mode(size) # 设置窗口标题 pygame.display.set_caption('Tank Battle') # 初始化我方坦克 MainGame.playerTank = PlayerTank(PLAYER_TANK_POSITION[0], PLAYER_TANK_POSITION[1], 1, 1) # 播放开始音乐 MainGame.startingSound.play() # 初始化场景 self.initBrickWall() while 1: # 设置背景颜色 MainGame.window.fill(BACKGROUND_COLOR) # 获取窗口事件 self.getPlayingModeEvent() # 显示物体 self.drawBrickWall(MainGame.brickWallList) # 展示敌方坦克 self.drawEnemyTank() # 显示我方坦克 MainGame.playerTank.draw(MainGame.window, PLAYER_TANK_POSITION[0], PLAYER_TANK_POSITION[1]) # 我方坦克移动 if not MainGame.playerTank.stop: MainGame.playerTank.move() MainGame.playerTank.collideEnemyTank(MainGame.enemyTankList) # 显示我方坦克子弹 self.drawPlayerBullet(MainGame.playerBulletList) # 展示敌方坦克子弹 self.drawEnemyBullet() # 展示爆炸效果 self.drawExplode() # 更新窗口 pygame.display.update()

运行一下,看看结果 但是墙只是摆设,子弹可以穿过,坦克也可以穿过,下面给墙增加碰撞效果

2. 给砖墙增加子弹击中的碰撞效果

在子弹类中增加函数

def bulletCollideBrickWall(self, brickWallList, explodeList): for brickWall in brickWallList: # 子弹与墙发生碰撞 if pygame.sprite.collide_rect(self, brickWall): self.isDestroy = True brickWall.isDestroy = True # 碰撞出现爆炸效果 explode = Explode(brickWall, 25) explodeList.append(explode) # 出现爆炸播放音效 Sound('../Sound/block.wav').play()

在主函数中调用 修改显示子弹的两个函数

def drawPlayerBullet(self, playerBulletList): # 遍历整个子弹列表,如果是没有被销毁的状态,就把子弹显示出来,否则从列表中删除 for bullet in playerBulletList: if not bullet.isDestroy: bullet.draw(MainGame.window) bullet.move(MainGame.explodeList) bullet.playerBulletCollideEnemyTank(MainGame.enemyTankList, MainGame.explodeList) bullet.bulletCollideBrickWall(MainGame.brickWallList, MainGame.explodeList) else: playerBulletList.remove(bullet)def drawEnemyBullet(self): for bullet in MainGame.enemyTankBulletList: if not bullet.isDestroy: bullet.draw(MainGame.window) bullet.move(MainGame.explodeList) bullet.enemyBulletCollidePlayerTank(MainGame.playerTank, MainGame.explodeList) bullet.bulletCollideBrickWall(MainGame.brickWallList, MainGame.explodeList) else: bullet.source.bulletCount -= 1 MainGame.enemyTankBulletList.remove(bullet)

运行一下看看

可以看到墙可以被打掉了

3. 给砖墙添加坦克不能通过的碰撞效果

在敌方坦克类中加入函数,在我方坦克类中加入函数 collideBrickWall()

def collideBrickWall(self, brickWallList): for brickWall in brickWallList: if pygame.sprite.collide_rect(self, brickWall): self.rect.left = self.prvX self.rect.top = self.prvY

在主类中调用 在while循环中调用

while 1: # 设置背景颜色 MainGame.window.fill(BACKGROUND_COLOR) # 获取窗口事件 self.getPlayingModeEvent() # 显示物体 self.drawBrickWall(MainGame.brickWallList) # 展示敌方坦克 self.drawEnemyTank() # 显示我方坦克 MainGame.playerTank.draw(MainGame.window, PLAYER_TANK_POSITION[0], PLAYER_TANK_POSITION[1]) # 我方坦克移动 if not MainGame.playerTank.stop: MainGame.playerTank.move() MainGame.playerTank.collideEnemyTank(MainGame.enemyTankList) # 不能撞墙 MainGame.playerTank.collideBrickWall(MainGame.brickWallList)

在主类的drawEnemyTank()中调用

def drawEnemyTank(self): ... for tank in MainGame.enemyTankList: # 坦克还有生命值 if tank.life > 0: tank.draw(MainGame.window) tank.move() tank.collidePlayerTank(MainGame.playerTank) tank.collideEnemyTank(MainGame.enemyTankList) # 不能撞墙 tank.collideBrickWall(MainGame.brickWallList) bullet = tank.shot() if bullet is not None: MainGame.enemyTankBulletList.append(bullet) # 坦克生命值为0,就从列表中剔除 else: MainGame.enemyTankCurrentCount -= 1 MainGame.enemyTankList.remove(tank)

运行一下,看看效果 确实是不能穿过了 那就完成啦,接下来就是添加其他的物体了 添加的过程跟添加砖墙是一样的

4. 添加石墙

创建石墙类

import pygame.imagefrom ParentObject import ParentObjectclass StoneWall(ParentObject): def __init__(self, x, y): super().__init__() self.image = pygame.image.load('../Image/Wall/StoneWall.png') self.rect = self.image.get_rect() self.rect.left = x self.rect.top = y self.isDestroy = False def draw(self, window): window.blit(self.image, self.rect)

在主类中加入石墙列表 在主类中加入显示石墙函数

def initStoneWall(self): for i in range(20): MainGame.stoneWallList.append(StoneWall(i * 25, 400))def drawStoneWall(self, stoneWallList): for stoneWall in stoneWallList: if stoneWall.isDestroy: stoneWallList.remove(stoneWall) else: stoneWall.draw(MainGame.window)学习 Python 之 Pygame 开发坦克大战(五)(python怎么学)

给石墙添加坦克不能通过的碰撞效果 在敌方坦克类中加入函数,在我方坦克类中加入函数 collideStoneWall()

def collideStoneWall(self, stoneWallList): for stoneWall in stoneWallList: if pygame.sprite.collide_rect(self, stoneWall): self.rect.left = self.prvX self.rect.top = self.prvY

在主类中调用函数

接下来是给子弹添加打击石墙的效果

def bulletCollideStoneWall(self, stoneWallList, explodeList): for stoneWall in stoneWallList: if pygame.sprite.collide_rect(self, stoneWall): # 判断坦克的等级,大于等于2时,可以打穿石墙 if self.source.level >= 2: stoneWall.isDestroy = True self.isDestroy = True explode = Explode(stoneWall, 25) explodeList.append(explode) Sound('../Sound/block.wav').play()

在主类中调用函数

主类的完整代码

import pygameimport sysfrom PlayerTank import PlayerTankfrom EnemyTank import EnemyTankfrom Sound import Soundfrom BrickWall import BrickWallfrom StoneWall import StoneWallSCREEN_WIDTH = 1100SCREEN_HEIGHT = 600BACKGROUND_COLOR = pygame.Color(0, 0, 0)FONT_COLOR = (255, 255, 255)PLAYER_TANK_POSITION = (325, 550)class MainGame: # 窗口Surface对象 window = None # 玩家坦克 playerTank = None # 玩家子弹 playerBulletList = [] playerBulletNumber = 3 # 敌人坦克 enemyTankList = [] enemyTankTotalCount = 5 # 用来给玩家展示坦克的数量 enemyTankCurrentCount = 5 # 敌人坦克子弹 enemyTankBulletList = [] # 爆炸列表 explodeList = [] # 坦克移动音效 playerTankMoveSound = Sound('../Sound/player.move.wav').setVolume() # 游戏开始音效 startingSound = Sound('../Sound/intro.wav') # 砖墙 brickWallList = [] # 石墙 stoneWallList = [] def __init__(self): pass def startGame(self): # 初始化展示模块 pygame.display.init() # 设置窗口大小 size = (SCREEN_WIDTH, SCREEN_HEIGHT) # 初始化窗口 MainGame.window = pygame.display.set_mode(size) # 设置窗口标题 pygame.display.set_caption('Tank Battle') # 初始化我方坦克 MainGame.playerTank = PlayerTank(PLAYER_TANK_POSITION[0], PLAYER_TANK_POSITION[1], 1, 1) # 播放开始音乐 MainGame.startingSound.play() # 初始化场景 self.initBrickWall() self.initStoneWall() while 1: # 设置背景颜色 MainGame.window.fill(BACKGROUND_COLOR) # 获取窗口事件 self.getPlayingModeEvent() # 显示物体 self.drawBrickWall(MainGame.brickWallList) self.drawStoneWall(MainGame.stoneWallList) # 展示敌方坦克 self.drawEnemyTank() # 显示我方坦克 MainGame.playerTank.draw(MainGame.window, PLAYER_TANK_POSITION[0], PLAYER_TANK_POSITION[1]) # 我方坦克移动 if not MainGame.playerTank.stop: MainGame.playerTank.move() MainGame.playerTank.collideEnemyTank(MainGame.enemyTankList) MainGame.playerTank.collideBrickWall(MainGame.brickWallList) MainGame.playerTank.collideStoneWall(MainGame.stoneWallList) # 显示我方坦克子弹 self.drawPlayerBullet(MainGame.playerBulletList) # 展示敌方坦克子弹 self.drawEnemyBullet() # 展示爆炸效果 self.drawExplode() # 更新窗口 pygame.display.update() def getPlayingModeEvent(self): # 获取所有事件 eventList = pygame.event.get() for event in eventList: if event.type == pygame.QUIT: sys.exit() """ stop属性用来控制坦克移动,当键盘按键按下时,坦克可以移动,一直按住一直移动,当按键抬起时,停止移动 如果没有该属性,按一下按键移动一次,按一下移动一下,不能一直按住一直移动 """ if event.type == pygame.KEYDOWN: MainGame.playerTankMoveSound.play(-1) if event.key == pygame.K_w: MainGame.playerTank.direction = 'UP' MainGame.playerTank.stop = False elif event.key == pygame.K_s: MainGame.playerTank.direction = 'DOWN' MainGame.playerTank.stop = False elif event.key == pygame.K_a: MainGame.playerTank.direction = 'LEFT' MainGame.playerTank.stop = False elif event.key == pygame.K_d: MainGame.playerTank.direction = 'RIGHT' MainGame.playerTank.stop = False elif event.key == pygame.K_j: # 判断子弹数量是否超过指定的个数 if len(MainGame.playerBulletList) < MainGame.playerBulletNumber: bullet = MainGame.playerTank.shot() MainGame.playerBulletList.append(bullet) # 添加音效 Sound('../Sound/shoot.wav').play(0) if event.type == pygame.KEYUP: MainGame.playerTankMoveSound.stop() if event.key == pygame.K_w: MainGame.playerTank.stop = True elif event.key == pygame.K_s: MainGame.playerTank.stop = True elif event.key == pygame.K_a: MainGame.playerTank.stop = True elif event.key == pygame.K_d: MainGame.playerTank.stop = True def drawPlayerBullet(self, playerBulletList): # 遍历整个子弹列表,如果是没有被销毁的状态,就把子弹显示出来,否则从列表中删除 for bullet in playerBulletList: if not bullet.isDestroy: bullet.draw(MainGame.window) bullet.move(MainGame.explodeList) bullet.playerBulletCollideEnemyTank(MainGame.enemyTankList, MainGame.explodeList) bullet.bulletCollideBrickWall(MainGame.brickWallList, MainGame.explodeList) bullet.bulletCollideStoneWall(MainGame.stoneWallList, MainGame.explodeList) else: playerBulletList.remove(bullet) def drawEnemyTank(self): # 如果当前坦克为0,那么就该重新生成坦克 if len(MainGame.enemyTankList) == 0: # 一次性产生三个,如果剩余坦克数量超过三,那只能产生三个 n = min(3, MainGame.enemyTankTotalCount) # 如果最小是0,就说明敌人坦克没有了,那么就赢了 if n == 0: print('赢了') return # 没有赢的话,就产生n个坦克 self.initEnemyTank(n) # 总个数减去产生的个数 MainGame.enemyTankTotalCount -= n # 遍历坦克列表,展示坦克并且移动 for tank in MainGame.enemyTankList: # 坦克还有生命值 if tank.life > 0: tank.draw(MainGame.window) tank.move() tank.collidePlayerTank(MainGame.playerTank) tank.collideEnemyTank(MainGame.enemyTankList) tank.collideBrickWall(MainGame.brickWallList) tank.collideStoneWall(MainGame.stoneWallList) bullet = tank.shot() if bullet is not None: MainGame.enemyTankBulletList.append(bullet) # 坦克生命值为0,就从列表中剔除 else: MainGame.enemyTankCurrentCount -= 1 MainGame.enemyTankList.remove(tank) def initEnemyTank(self, number): y = 0 position = [0, 425, 850] index = 0 for i in range(number): x = position[index] enemyTank = EnemyTank(x, y) MainGame.enemyTankList.append(enemyTank) index += 1 def drawEnemyBullet(self): for bullet in MainGame.enemyTankBulletList: if not bullet.isDestroy: bullet.draw(MainGame.window) bullet.move(MainGame.explodeList) bullet.enemyBulletCollidePlayerTank(MainGame.playerTank, MainGame.explodeList) bullet.bulletCollideBrickWall(MainGame.brickWallList, MainGame.explodeList) bullet.bulletCollideStoneWall(MainGame.stoneWallList, MainGame.explodeList) else: bullet.source.bulletCount -= 1 MainGame.enemyTankBulletList.remove(bullet) def drawExplode(self): for e in MainGame.explodeList: if e.isDestroy: MainGame.explodeList.remove(e) else: e.draw(MainGame.window) def drawBrickWall(self, brickWallList): for brickWall in brickWallList: if brickWall.isDestroy: brickWallList.remove(brickWall) else: brickWall.draw(MainGame.window) def initBrickWall(self): for i in range(20): MainGame.brickWallList.append(BrickWall(i * 25, 200)) def initStoneWall(self): for i in range(20): MainGame.stoneWallList.append(StoneWall(i * 25, 400)) def drawStoneWall(self, stoneWallList): for stoneWall in stoneWallList: if stoneWall.isDestroy: stoneWallList.remove(stoneWall) else: stoneWall.draw(MainGame.window)if __name__ == '__main__': MainGame().startGame()5. 添加玩家基地

坦克大战是玩家坦克在保护自己基地的同时消灭敌方坦克,当玩家坦克生命值为0或者基地爆炸时,游戏失败,下面来添加玩家的基地

创建基地类

import pygame.imagefrom ParentObject import ParentObjectclass Home(ParentObject): def __init__(self, x, y): super().__init__() self.image = pygame.image.load('../Image/Home/Home.png') self.rect = self.image.get_rect() self.rect.left = x self.rect.top = y self.isDestroy = False def draw(self, window): window.blit(self.image, self.rect)

为基地添加碰撞效果,在两个坦克类中加入下面的函数

def collideHome(self, home): if pygame.sprite.collide_rect(self, home): self.rect.left = self.prvX self.rect.top = self.prvY

在主函数创建基地变量,并初始化和调用上面的函数

之后给基地加入子弹击中效果

def bulletCollidePlayerHome(self, home, explodeList): if pygame.sprite.collide_rect(self, home): self.isDestroy = True explode = Explode(home, 50) explodeList.append(explode) Sound('../Sound/buh.wav').play() return True else: return False

返回值用来判断是否结束游戏 在主类中设置一个变量记录是否游戏结束

def __init__(self):# 初始化 MainGame.home = Home(425, 550) # 记录是否输了 self.isDefeated = False

在循环中检查

while 1:... # 检查是否输了 if self.isDefeated: self.defeated() break ...def defeated(self): # 失败了坦克不能移动了 MainGame.playerTankMoveSound.stop() # 播放失败音乐 Sound('../Sound/gameOver.wav').play() print('游戏结束') self.isDefeated = True

游戏结束后要改变窗口中的内容,显示你输了,所以要用break跳出

这里需要使用到在窗口显示文字,编写一个函数

def drawText(self, text, x, y, fontSize, window): # 初始化字体 pygame.font.init() font = pygame.font.SysFont('georgia', fontSize) # 加载文字并设置颜色 fontColor = pygame.Color(255, 255, 255) fontObject = font.render(text, True, fontColor) # 展示文字 window.blit(fontObject, (x, y))

记得在主函数中调用

while 1: # 设置背景颜色 MainGame.window.fill(BACKGROUND_COLOR) # 获取窗口事件 self.getPlayingModeEvent() # 显示物体 self.drawBrickWall(MainGame.brickWallList) self.drawStoneWall(MainGame.stoneWallList) MainGame.home.draw(MainGame.window) # 展示敌方坦克 self.drawEnemyTank() # 显示我方坦克 MainGame.playerTank.draw(MainGame.window, PLAYER_TANK_POSITION[0], PLAYER_TANK_POSITION[1]) # 我方坦克移动 if not MainGame.playerTank.stop: MainGame.playerTank.move() MainGame.playerTank.collideEnemyTank(MainGame.enemyTankList) MainGame.playerTank.collideBrickWall(MainGame.brickWallList) MainGame.playerTank.collideStoneWall(MainGame.stoneWallList) MainGame.playerTank.collideHome(MainGame.home) # 显示我方坦克子弹 self.drawPlayerBullet(MainGame.playerBulletList) # 展示敌方坦克子弹 self.drawEnemyBullet() # 展示爆炸效果 self.drawExplode() # 检查是否输了 if self.isDefeated: self.defeated() break # 更新窗口 pygame.display.update()# 设置背景颜色MainGame.window.fill(BACKGROUND_COLOR)# 显示字体self.drawText('Defeated', 200, 200, 50, MainGame.window)# 更新窗口pygame.display.update()

给玩家提示敌人坦克数量

到这里,坦克大战的基本功能就实现了,接下来就是添加其他的场景物体和坦克样子了

6. 最终效果

主界面,这里直接放了一张图片上去,图片在素材里,上面的坦克是自己画上去的,w和s键可以上下移动坦克,选择对应的模式 选择关卡,这里使用用了四张图片,左右箭头,上面的标题和start文字,这些都是图片,按下黄色箭头可以选择关卡,使用的鼠标事件

游戏界面

其中加入了奖励功能

地图制作可以使用excel读取信息,下面是第一关的地图

坦克大战代码

链接:https://pan.baidu.com/s/1qFV-0hi0cgZS1Hnvx6mK6Q?pwd=90tk 提取码:90tk

本文链接地址:https://www.jiuchutong.com/zhishi/295690.html 转载请保留说明!

上一篇:vue3 + ts: layout布局(vue3+ts+vite)

下一篇:Termux安装完整版Linux(Ubuntu)详细步骤(termux 安装)

  • 红米10xpro支持防水吗(红米10xpro防水吗?)

    红米10xpro支持防水吗(红米10xpro防水吗?)

  • airpods开盖绿灯一直闪(airpods开盖绿灯不亮)

    airpods开盖绿灯一直闪(airpods开盖绿灯不亮)

  • med-al00是华为什么型号(med-al00是华为什么型号处理器)

    med-al00是华为什么型号(med-al00是华为什么型号处理器)

  • 物联卡网速慢(物联卡网速慢怎么解决)

    物联卡网速慢(物联卡网速慢怎么解决)

  • 滴滴一口价是什么意思(滴滴一口价怎么收费)

    滴滴一口价是什么意思(滴滴一口价怎么收费)

  • 华为手机音乐怎么下载(华为手机音乐怎么删除音乐储存)

    华为手机音乐怎么下载(华为手机音乐怎么删除音乐储存)

  • 电脑能打开网页但是软件不可以(电脑能打开网页打不开视频)

    电脑能打开网页但是软件不可以(电脑能打开网页打不开视频)

  • 苹果11开不开机怎么办(苹果11开不开机了充电也没反应)

    苹果11开不开机怎么办(苹果11开不开机了充电也没反应)

  • 开关电源适配器是干什么用的(开关电源适配器能当充电器用吗)

    开关电源适配器是干什么用的(开关电源适配器能当充电器用吗)

  • psautorecover是什么文件夹(support services是什么意思)

    psautorecover是什么文件夹(support services是什么意思)

  • iphone11pro max下巴多少毫米(iphone11pro下巴多少毫米)

    iphone11pro max下巴多少毫米(iphone11pro下巴多少毫米)

  • 直播推流用显卡还是CPU(直播推流显卡需要什么型号最好)

    直播推流用显卡还是CPU(直播推流显卡需要什么型号最好)

  • 苹果手机有私密空间吗(苹果手机有私密文件吗)

    苹果手机有私密空间吗(苹果手机有私密文件吗)

  • 苹果xs怎么广角镜头(苹果xs的广角)

    苹果xs怎么广角镜头(苹果xs的广角)

  • 淘宝店铺背景怎么更改(淘宝店铺背景怎么换)

    淘宝店铺背景怎么更改(淘宝店铺背景怎么换)

  • 趣键盘怎么直接发送图片(趣键盘app)

    趣键盘怎么直接发送图片(趣键盘app)

  • 浏览器为什么使用时产生多个进程(为什么浏览器用不了?)

    浏览器为什么使用时产生多个进程(为什么浏览器用不了?)

  • 有道怎么设置锁屏单词(有道怎么设置桌面快捷翻译)

    有道怎么设置锁屏单词(有道怎么设置桌面快捷翻译)

  • 优酷怎么看会员剩下日期(优酷怎么看会员到期)

    优酷怎么看会员剩下日期(优酷怎么看会员到期)

  • 照片分辨率mp是什么意思(照片分辨率16mp是什么意思)

    照片分辨率mp是什么意思(照片分辨率16mp是什么意思)

  • 手机电池怎么设置数字(手机电池怎么设置颜色)

    手机电池怎么设置数字(手机电池怎么设置颜色)

  • mediacache能删除吗(mediafiles可以删除吗)

    mediacache能删除吗(mediafiles可以删除吗)

  • watch ifconfig命令(每隔两秒监视网络状态)(configureandwatch)

    watch ifconfig命令(每隔两秒监视网络状态)(configureandwatch)

  • 0x0000000a蓝屏代码是什么意思?0x0000000a蓝屏代码解决方法汇总(0x0000000a蓝屏代码怎么解决)

    0x0000000a蓝屏代码是什么意思?0x0000000a蓝屏代码解决方法汇总(0x0000000a蓝屏代码怎么解决)

  • 怎么下载税控盘开票软件
  • 增值税出口退税款缴纳企业所得税吗
  • 太阳能发电税收优惠政策
  • 印花税计税基数不包括哪些
  • 管理费0.5%每年
  • 按季度支付贷款利息权责发生制
  • 清算费用会计科目设置
  • 企业弥补亏损的三个途径
  • 油费补贴是否计入个税
  • 小规模免税农产品怎么做账
  • 专项资金是否缴纳企业所得税
  • 其他综合收益转入留存收益还是投资收益
  • 报表的应付款太大怎么调?
  • 社保滞纳金可以计入管理费用吗为什么
  • 以前没有计提增值税吗
  • 固定资产清理科目怎么结转
  • 转出多交增值税借方余额表示
  • 个人去税务局开票流程
  • 农产品销售发票能否抵扣进项税?
  • 增值税税负低如何解释
  • 广告费发票的税率
  • 工程项目分期付款
  • 电子税务局财报怎么报
  • 报表上应交税费是负数是什么意思
  • 调整以前年度企业所得税会计分录
  • 收到采购商品
  • 华为哪些手机有hicar
  • windows10如何关闭杀毒软件
  • 软件充值怎么申请退款
  • 专家评审费报销仅附签字笔迹相似
  • 上市公司的股份可以转卖吗
  • 怎么升级鸿蒙系统3.1
  • deepin隐藏分区
  • 两借三贷是复合分录吗
  • 公司增资怎么需要什么资料
  • 销售机构人员工资属于管理费用吗
  • 年度确认收入怎么算
  • 装修费用账务怎么处理
  • 原材料预付款如何做账
  • 递延所得税资产借贷方向
  • 增值税加计抵减企业所得税如何处理
  • 微信支付开发文档教程
  • point network
  • PHP自定义函数实现计算机整数的四次方
  • 人力资源企业税收风险
  • 股东分红放到哪个会计科目
  • 资产负债表和利润表的勾稽关系
  • 账面未分配利润等于净利润?
  • 出售持有股票会计处理
  • 帝国cms移动端
  • 运输途中的合理损耗计入入账价值
  • 外贸企业增值税申报
  • 增值税是指怎样计算的
  • 核定征收适用于什么税率
  • 应收款和实收款区别
  • 一般纳税人商贸公司增值税税负率
  • 同城票据交换差额户的帐号怎么查对方的帐号
  • 未开票收入怎么报税
  • 融资租赁首付租金会计账务处理
  • 施工企业内部管理制度
  • centos6.10安装教程
  • mysql日志有哪些
  • windows主进程rundll32总是用麦克风
  • 逼死win8的节奏 Win7升级至Win9仅需30美元 自动升级不需要重新安装
  • pc版直通车
  • freebsd12安装图形界面
  • mac装双系统后无法开机
  • 苹果笔记本mac系列区别
  • win8自启动在哪儿设置
  • linux启动的基本步骤
  • opengl数据类型
  • jquery prototype
  • android天气预报开发极简
  • javascript框架库升级
  • shell命令su
  • python相关图片
  • 安卓activity和fragment的区别
  • 税务官网怎么登录账号
  • 江西省税务局官网
  • 中国古代的税收制度的演变
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设