子弹

四元数写子弹环形发射、伞状发射

北城余情 提交于 2020-03-06 02:23:07
子弹伞状发射 搭建这样的场景,一个cube和一个Sphere,cube当作发射器,Sphere当作子弹,这里的Sphere通过Scale调节比例缩小,使其发射效果更好一些。 要写两个脚本,一个是绑在发射器上的,名为BulletLauncher,另一个是绑在子弹上的,名为BulletControl,子弹可以做成预制体。 BullteLauncher: using System . Collections ; using System . Collections . Generic ; using UnityEngine ; public class BulletLauncher : MonoBehaviour { public GameObject cube ; public GameObject sphere ; private float timer ; // Start is called before the first frame update void Start ( ) { } void Update ( ) { timer + = Time . deltaTime ; if ( timer > 3 ) //当timer大于3时,发射子弹,使得发射有间隙 { for ( int i = 0 ; i < 5 ; i ++ ) { Quaternion q =

蓝桥杯 算法提高 矩形靶(c语言版详细注释)

為{幸葍}努か 提交于 2020-02-22 05:12:44
试题 算法提高 矩形靶 蓝桥杯试题解答汇总链接 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 在矩形的世界里任何事物都是矩形的,矩形的枪靶,甚至矩形的子弹。现在给你一张N * M的枪靶,同时告诉你子弹的大小为(2l+1) * (2r+1)。读入一张01的图每个点的01状态分别表示这个点是否被子弹的中心击中(1表示被击中,0则没有)一旦一个点被子弹的中心击中,那么以这个点为中心 (2l+1)*(2r+1) 范围内靶子上的点都会被击毁。要求输出最终靶子的状态。 输入格式 第一行为N,M,L,R表示靶子的大小,以及子弹的大小。   下面读入一个N*M的01矩阵表示每个点是否被子弹的中心击中 输出格式 N*M的01矩阵表示靶子上的每个点是否被破坏掉 样例输入 样例一: 4 4 1 1 1000 0000 0000 0010 样例二: 7 4 1 1 1000 0000 0010 0000 0000 0000 0100 样例输出 样例一: 1100 1100 0111 0111 样例二: 1100 1111 0111 0111 0000 1110 1110 数据规模与约定 N,M<=600,l,r<=5 代码 # include <stdio.h> int main ( ) { int n , m , l , r , i , j , y , x ; //i,j,x

算法提高 矩形靶

不羁岁月 提交于 2020-02-12 23:05:36
问题描述   在矩形的世界里任何事物都是矩形的,矩形的枪靶,甚至矩形的子弹。现在给你一张N*M的枪靶,同时告诉你子弹的大小为(2l+1)*(2r+1)。读入一张01的图每个点的01状态分别表示这个点是否被子弹的中心击中(1表示被击中,0则没有)一旦一个点被子弹的中心击中,那么以这个点为中心 (2l+1)*(2r+1) 范围内靶子上的点都会被击毁。要求输出最终靶子的状态。 输入格式   第一行为N,M,L,R表示靶子的大小,以及子弹的大小。   下面读入一个N*M的01矩阵表示每个点是否被子弹的中心击中 输出格式   N*M的01矩阵表示靶子上的每个点是否被破坏掉 样例输入 4 4 1 1 1000 0000 0000 0010 样例输出 1100 1100 0111 0111 样例输入 7 4 1 1 1000 0000 0010 0000 0000 0000 0100 样例输出 1100 1111 0111 0111 0000 1110 1110 数据规模和约定   N,M<=600,l,r<=5 #include <stdio.h> #include <queue> #include <cstring> using namespace std; const int maxn=601; struct Node{ int x,y; }node; int main(){ int n

boren -飞机大战7

谁说胖子不能爱 提交于 2020-02-06 17:02:25
import pygame import sys import random # 产生随机数 # back 返回,后面 # ground 地面 # 哪一行代码确定战机的位置,27行,用坐标确定战机位置 # 飞机的类 # 飞机名字, 飞机的位置,窗口,图片 class feiji ( ) : def __init__ ( self , ck ) : self . name = "hero" self . x = 200 self . y = 400 self . chuangkou = ck self . picture = pygame . image . load ( "图片/hero1.png" ) self . zidan_ku = [ ] # 把飞机放到屏幕上 def show ( self ) : self . chuangkou . blit ( self . picture , ( self . x , self . y ) ) # 如果有子弹,就放上窗口 # print(len(self.zidan_ku)) for dan_ge_zidan in self . zidan_ku : dan_ge_zidan . show ( ) # 飞机的子弹移动 dan_ge_zidan . move__fd ( ) if dan_ge_zidan . yuejie ( ) :

boren -飞机大战5

試著忘記壹切 提交于 2020-02-04 12:07:39
import pygame import sys # back 返回,后面 # ground 地面 # 哪一行代码确定战机的位置,27行,用坐标确定战机位置 # 飞机的类 # 飞机名字, 飞机的位置,窗口,图片 class feiji ( ) : def __init__ ( self , ck ) : self . name = "hero" self . x = 200 self . y = 400 self . chuangkou = ck self . picture = pygame . image . load ( "hero1.png" ) self . zidan_ku = [ ] # 把飞机放到屏幕上 def show ( self ) : self . chuangkou . blit ( self . picture , ( self . x , self . y ) ) # 如果有子弹,就放上窗口 print ( len ( self . zidan_ku ) ) for dan_ge_zidan in self . zidan_ku : dan_ge_zidan . show ( ) # 飞机的子弹移动 dan_ge_zidan . move__fd ( ) if dan_ge_zidan . yuejie ( ) : self . zidan_ku .

你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

谁都会走 提交于 2020-02-03 03:36:18
坦克大战 一、需求分析 坦克大战中有我方坦克和敌方坦克,我方坦克有一个,敌方坦克有多个。坦克可以移动,也可以发射子弹。我方坦克可以通过上下左右键来控制方向,敌方坦克自动改变方向。在游戏窗体中有障碍物,包括砖墙、钢墙、水墙和草地。坦克可以穿过草地,在遇到其他障碍物时,我方坦克停止移动,并通过操纵改变方向再移动,敌方坦克遇到其他障碍物时可以自动的改变方向。我方坦克有三次生命值,当与敌方坦克或敌方子弹相撞时,生命值减- -, 当生命值是零时,敌方胜利,游戏结束。敌方坦克的生命值为-一,当敌方坦克与我方坦克或者我方子弹相遇就消失,同时我方子弹也消失,并产生爆炸。当我方坦克把敌方坦克消灭完后,我方胜利,游戏结束。敌方子弹或我方子弹击中老巢,游戏结束。 二、程序设计 采用面向对象的设计方法,项目中有以下类: 主窗体: GameForm, 游戏的主窗体。 坦克:父类坦克(Tank)、 我方坦克(MyTank)、 敌方坦克( EnemyTank)。 墙:父类墙(Wall)、砖墙(BrickWall)、刚墙( SteelWall)、水墙( WaterWall)、 草地(MeadoeWall)。 子弹:父类子弹(Bullet)、 我方子弹(MyBullet)、敌方坦克(EnemyBullet)。 老巢: Home 火花: Spark, 子弹与墙碰撞产生火花。 爆炸: Blast,

tank

筅森魡賤 提交于 2019-12-03 01:35:41
''' 新增功能: 优化:1.如果子弹碰到墙壁,让子弹消失 2.最多可以发射3颗子弹,不能一直发射 ''' #导入pygame模块 import pygame,time,random SCREEN_WIDTH=700 SCREEN_HEIGHT=500 BG_COLOR=pygame.Color(0,0,0) TEXT_COLOR=pygame.Color(255,0,0) class MainGame(): window=None my_tank=None #存储敌方坦克的列表 enemyTankList=[] #定义敌方坦克的数量 enemyTankCount=5 #存储我方子弹的列表 myBulletList=[] def __init__(self): pass #开始游戏 def startGame(self): #加载主窗口 #初始化窗口 pygame.display.init() #设置窗口的大小及显示 MainGame.window=pygame.display.set_mode([SCREEN_WIDTH,SCREEN_HEIGHT]) #初始化我方坦克 MainGame.my_tank=Tank(350,250) #初始化敌方坦克,并将敌方坦克添加到列表中 self.createEnemyTank() #设置窗口的标题 pygame.display.set

小游戏 坦克大战

泪湿孤枕 提交于 2019-12-02 22:35:01
''' 新增功能: 优化:1.如果子弹碰到墙壁,让子弹消失 2.最多可以发射3颗子弹,不能一直发射 ''' #导入pygame模块 import pygame,time,random SCREEN_WIDTH=700 SCREEN_HEIGHT=500 BG_COLOR=pygame.Color(0,0,0) TEXT_COLOR=pygame.Color(255,0,0) class MainGame(): window=None my_tank=None #存储敌方坦克的列表 enemyTankList=[] #定义敌方坦克的数量 enemyTankCount=5 #存储我方子弹的列表 myBulletList=[] def __init__(self): pass #开始游戏 def startGame(self): #加载主窗口 #初始化窗口 pygame.display.init() #设置窗口的大小及显示 MainGame.window=pygame.display.set_mode([SCREEN_WIDTH,SCREEN_HEIGHT]) #初始化我方坦克 MainGame.my_tank=Tank(350,250) #初始化敌方坦克,并将敌方坦克添加到列表中 self.createEnemyTank() #设置窗口的标题 pygame.display.set

Unity子弹生成系统

▼魔方 西西 提交于 2019-11-30 07:50:59
子弹系统和粒子系统比较类似,为了创建和五花八门的子弹,例如追踪,连续继承,散弹等,需要一个拥有众多参数的子弹生成器,这里叫它Shooter好了。 Shooter负责把玩各类子弹造型和参数,创建出子弹,创建完了之后接下来就交给子弹自己来管理自己了。 所以,一个子弹系统包含: 1.ShooterSystem类 一个能生成各种类型子弹的发射器。 2.Bullet类 按照给定的初始参数不断向前飞行的子弹个体。 先思考每一个单独的子弹需要有哪些物理参数: 1 //目标 2 public GameObject Target { get; set; } 3 //瞬时速度 4 public float Velocity { get; set; } 5 //剩余生命周期 6 public float LifeTime { get; set; } 7 //角速度 8 public float Palstance { get; set; } 9 //线性加速度 10 public float Acceleration { get; set; } 11 //最大速度 12 public float MaxVelocity { get; set; } 这些参数不需要子弹自己来配置,而是交给把玩它们的Shooter来进行,但是子弹自身需要知道这些参数。 其中指得一提的是角速度,正常的子弹是没有追踪功能的

简单实现生产者消费者模式

*爱你&永不变心* 提交于 2019-11-27 07:34:36
package com.ring2.test; /** * 定义一把枪中只能装满20颗子弹 * 当子弹数大于20颗时,生产者停止生产子弹,等待被唤醒 * 当子弹等于0颗时,消费者停止射击子弹,等待被唤醒 * */ public class Gun { private static int bullet = 0; private static int maxBullet = 20; private static String Lock = "the same object"; static class Provider implements Runnable{ @Override public void run() { for (int i = 0; i < 20; i++ ){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (Lock){ if (bullet == maxBullet){ try { Lock.wait(); System.out.println("枪膛已满,停止装弹,等待通知。"); } catch (InterruptedException e) { e.printStackTrace(); } } bullet+