
正文
java子弹代码解析 java子弹发射问题
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java面试题求代码,最好有注解。。。
你好,代码如下。需要修改的话,你可以根据情况修改:
class Info{ // 定义信息类
private String name = "生产者"; // 定义name属性
private String content = "压入子弹" ; // 定义content属性
private boolean flag = false ; // 设置标志位
public synchronized void set(String name,String content){
if(!flag){
try{
super.wait() ;
}catch(InterruptedException e){
e.printStackTrace() ;
}
}
this.setName(name) ; // 设置名称
try{
Thread.sleep(300) ;
}catch(InterruptedException e){
e.printStackTrace() ;
}
this.setContent(content) ; // 设置内容
flag = false ; // 改变标志位,表示可以取走
super.notify() ;
}
public synchronized void get(){
if(flag){
try{
super.wait() ;
}catch(InterruptedException e){
e.printStackTrace() ;
}
}
try{
Thread.sleep(300) ;
}catch(InterruptedException e){
e.printStackTrace() ;
}
System.out.println(this.getName() +
" -- " + this.getContent()) ;
flag = true ; // 改变标志位,表示可以生产
super.notify() ;
}
public void setName(String name){
this.name = name ;
}
public void setContent(String content){
this.content = content ;
}
public String getName(){
return this.name ;
}
public String getContent(){
return this.content ;
}
};
class Producer implements Runnable{ // 通过Runnable实现多线程
private Info info = null ; // 保存Info引用
public Producer(Info info){
this.info = info ;
}
public void run(){
boolean flag = false ; // 定义标记位
for(int i=0;i12;i++){
if(flag){
this.info.set("生产者","压入子弹") ; // 设置名称
flag = false ;
}else{
this.info.set("消费者","射出子弹") ; // 设置名称
flag = true ;
}
}
}
};
class Consumer implements Runnable{
private Info info = null ;
public Consumer(Info info){
this.info = info ;
}
public void run(){
for(int i=0;i24;i++){
this.info.get() ;
}
}
};
public class ThreadCaseDemo03{
public static void main(String args[]){
Info info = new Info(); // 实例化Info对象
Producer pro = new Producer(info) ; // 生产者
Consumer con = new Consumer(info) ; // 消费者
new Thread(pro).start() ;
new Thread(con).start() ;
}
};
相关问答
Q1: 用java线程做飞机大战,发射子弹及爆炸的代码怎么写啊,求高人,写上注释吧,不然看不懂,谢谢
代码有点多, 实现思路, 实现键盘事件监听机制, 在监听函数中判断 按了什么键,比如按J就发送子弹. 然后启动子弹线程. 定义一个子弹类线程, 定义出子弹的所在属性和方法.
写个方法,判断子弹是否击中目标,以XY坐标相交来判断
Q2: java坦克定义子弹错误 //子弹 Vectorzd=new Vector(); 新手求解
建议及时清理插件及修复程序,有可能是和其它网面冲突造成的。
Q3: 这个java 程序怎么写?
下面是我写的代码,如果有用,请采纳吧,最近正好在看进程通信的东西,正好拿你这个题练练手。
package test;
import java.util.ArrayList;
import java.util.LinkedList;
public class ProducerConsumer {
/*
* 生产者类:属性:子弹夹(生产者可以使用子弹夹)设计为线程,调用子弹夹类的push方法,向子弹夹里放入子弹
* 消费者类:属性:子弹夹(消费者可以使用子弹夹)设计为线程,调用子弹夹类的pop方法,从子弹夹里取出子弹
* 子弹类:属性:子弹编号(第几颗子弹)
* 子弹夹类:属性:存放子弹(数组),索引index(下一个要放子弹的位置)方法:push方法:向子弹夹里放入子 pop方法:从子弹夹中取出子弹
*/
private Clip clip = new Clip();
public ProducerConsumer() {
}
public void start() {
new Producer().start();
new Comsumer().start();
}
class Producer extends Thread {
public void run() {
while (true) {
synchronized (clip.bullets) {
try {
Bullet bullet = new Bullet();
int i = clip.push(bullet);
System.out.println("Producer put a bullet to clip");
Thread.sleep((long) (Math.random() * 3000));
clip.notify();
} catch (InterruptedException ie) {
System.out.println("producer is interrupted!");
}
}
}
}
}
class Comsumer extends Thread {
public void run() {
while (true) {
synchronized (clip.bullets) {
try {
while (clip.bullets.size() == 0) {
System.out.println("clip is empty , please wait");
clip.wait();
}
clip.pop();
System.out.println("Comsumer get a bullet from clip");
Thread.sleep((long) (Math.random() * 3000));
clip.notify();
} catch (InterruptedException ie) {
System.out.println("Consumer is interrupted");
}
}
}
}
}
class Bullet{
int number;
}
class Clip{
public ArrayListBullet bullets = new ArrayListBullet();//set the size is 10
int index = 0;//the next location to put the bullet
/*put a bullet into the clip*/
int push(Bullet bullet){
bullets.add(bullet);
index = bullets.size();
return index;
}
/*get a bullet from the clip*/
void pop(){
//自己写吧
}
}
public static void main(String[] args) throws Exception {
ProducerConsumer pc = new ProducerConsumer();
pc.start();
}
}
Q4: java编按鼠标就发射子弹代码
监听鼠标动作,
然后控制子弹图片移动。
然后跟目标做碰撞检测。
java 事件 消息传递机制 实际上是
1、用户点击鼠标左键。
2、操作系统触发一个事件传递个java程序。
3、java程序再去触发你代码里相关控件的ui响应或者你自己定义的Listener。
我认为想要实现你的需求的话,忽略1,在2处模拟操作系统同,传递一个事件给java程序了,这只是我的一个想法。
Q5: 关于Java 中,我们的作业是一个 机战的小游戏,怎么去实现一个 子弹击中的问题,用代码解释。
这个是碰撞检测算法。
简单说,你绘制的对象,比如飞机A,子弹B,都是图形,有大小、有形状的,这个形状的边角都有坐标点。
//B的矩形右侧坐标
B.RightX;
//A的矩形左侧坐标
A.LeftX;
假定它们图形都是矩形,子弹B从左侧向右侧平移,与飞机A“碰撞”,碰撞的条件,可以认为是子弹B的最右侧坐标大于等于飞机A的所在的左侧坐标。
if(B.RightX = A.LeftX)
游戏循环中不断进行这样的检测,一旦检测到碰撞成立时就认为是击中了。
进一步,并不是每个图形都是规则的矩形或者圆形,这个时候,你就要为图形自己定义一个碰撞检测图形(比如一个合适大小的圆形,大小刚好可以包裹你的对象)这个形状的坐标与对象运动关联,同步改变。通过这个碰撞检测的图形的坐标是否重合来判断是否碰撞。
关于java子弹代码解析和java子弹发射问题的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






