写了个手机生成幻影坦克的APP——幻影坦克工厂

写了个手机生成幻影坦克的APP——幻影坦克工厂

前几天在B站看到个视频讲幻影坦克原理的,看了一下好像还没有这种手机APP,大家都是用Python写的,感觉很不方便啊,于是一时兴起学了学Android开发,准备整个活
然后我因为懒,用了基于.Net的Xamarin,就开始疯狂踩坑
这几天终于从坑里爬了出来,把这玩意发出来(这会成为新的万恶之源吗?)

使用方法:
1.点击最上方两个空白图片即可选择表图和里图
2.点击生成并稍等片刻即可生成幻影坦克
3.点击保存即可保存至手机内/Picture/MirageTank目录中,也可在相册MirageTank中找到

PS:
1.生成键两侧的两个数字用于调整生成灰度图片时的亮度系数,要尽量保证表图比里图亮(输入完毕后点击输入法的回车以确认数据)。
2.阈值用于设置表图最暗的程度以及里图最亮的程度(输入完毕后点击输入法的回车以确认数据)。
3.点击生成出的图片可以放大查看,两个界面里的开关控件用于调整背景颜色。

GitHub地址:https://github.com/fEndman/MirageTank
网盘:https://pan.baidu.com/s/1U2VN2ZWNKmM6zt2ePFO3zw 提取码: idt1

在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
在Python中制作幻影坦克,需要使用一个3D图形库,例如PyOpenGL和Pygame等。以下是使用PyOpenGL和Pygame制作幻影坦克的基本步骤: 1. 安装PyOpenGL和Pygame 可以使用pip安装PyOpenGL和Pygame: ``` pip install PyOpenGL PyOpenGL_accelerate pip install pygame ``` 2. 导入所需的模块 导入所需的PyOpenGL和Pygame模块,例如: ```python from OpenGL.GL import * from OpenGL.GLU import * import pygame from pygame.locals import * ``` 3. 初始化Pygame和OpenGL 初始化Pygame和OpenGL,例如: ```python pygame.init() pygame.display.set_mode((800, 600), DOUBLEBUF|OPENGL) gluPerspective(45, (800/600), 0.1, 50.0) glTranslatef(0.0,0.0,-5) ``` 4. 创建坦克模型 使用OpenGL创建坦克模型,例如: ```python glBegin(GL_TRIANGLES) glColor3fv((1,0,0)) glVertex3fv((0,1,0)) glColor3fv((0,1,0)) glVertex3fv((-1,-1,1)) glColor3fv((0,0,1)) glVertex3fv((1,-1,1)) glEnd() ``` 5. 渲染坦克 使用Pygame和OpenGL渲染坦克,并在窗口中显示,例如: ```python while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) glRotatef(1, 3, 1, 1) draw_tank() pygame.display.flip() pygame.time.wait(10) ``` 6. 添加纹理 可以使用Pygame的`pygame.image.load()`方法加载纹理图像,然后使用OpenGL的`glGenTextures()`和`glBindTexture()`方法将纹理绑定到坦克模型上,例如: ```python texture_surface = pygame.image.load('texture.png') texture_data = pygame.image.tostring(texture_surface, 'RGBA', 1) texture = glGenTextures(1) glBindTexture(GL_TEXTURE_2D, texture) glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture_surface.get_width(), texture_surface.get_height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, texture_data) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) ``` 7. 完整代码示例 下面是一个使用PyOpenGL和Pygame制作幻影坦克的完整代码示例: ```python from OpenGL.GL import * from OpenGL.GLU import * import pygame from pygame.locals import * def draw_tank(): glBegin(GL_TRIANGLES) glColor3fv((1,0,0)) glVertex3fv((0,1,0)) glColor3fv((0,1,0)) glVertex3fv((-1,-1,1)) glColor3fv((0,0,1)) glVertex3fv((1,-1,1)) glEnd() def main(): pygame.init() pygame.display.set_mode((800, 600), DOUBLEBUF|OPENGL) gluPerspective(45, (800/600), 0.1, 50.0) glTranslatef(0.0,0.0,-5) texture_surface = pygame.image.load('texture.png') texture_data = pygame.image.tostring(texture_surface, 'RGBA', 1) texture = glGenTextures(1) glBindTexture(GL_TEXTURE_2D, texture) glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture_surface.get_width(), texture_surface.get_height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, texture_data) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) glRotatef(1, 3, 1, 1) glEnable(GL_TEXTURE_2D) glBindTexture(GL_TEXTURE_2D, texture) draw_tank() glDisable(GL_TEXTURE_2D) pygame.display.flip() pygame.time.wait(10) if __name__ == '__main__': main() ``` 注意:上述代码示例中需要准备好一张名为`texture.png`的纹理图像。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值