求救。为什么键盘监听事件不响应了。。

mport java.awt.CardLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.Timer;

public class GamePanel extends JPanel implements ActionListener {
public static final int B_WIDTH = 450;
public static final int B_HEIGHT = 450;
public static final int DOT_SIZE = 15;
public static final int ALL_DOTS = 900;
public static final int DELAY = 100;
private static final Font gameOverFont = new Font("Verdana", Font.BOLD, 60);

public boolean inGame = true;
public String playerName;
public Timer timer;
boolean live = true;
JFrame myJFrame = null;
Image offScreenImage = null;
Snake mySnake = new Snake();
Food f = new Food();

public static void main(String[] args) {
    new GamePanel().launchGame();
}

public void launchGame() {
    myJFrame = new JFrame();
    myJFrame.setTitle("Snake");
    myJFrame.setLocation(400,200);
    myJFrame.setPreferredSize(new Dimension(B_WIDTH, B_HEIGHT));
    myJFrame.setContentPane(new WelcomePanel(this));
    myJFrame.addKeyListener(new GamePanel().new KeyMonitor());
    myJFrame.pack();
    myJFrame.setVisible(true);
    myJFrame.setResizable(false);
    myJFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    myJFrame.addWindowListener(new WindowAdapter() {

        @Override
        public void windowClosing(WindowEvent e) {
            timer.stop();
            int exit = JOptionPane.showConfirmDialog(null, "确定退出吗", "友情提示", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
            if(exit == JOptionPane.YES_OPTION) {
                System.exit(0);
            } else {
                timer.start();
                return;
            }
        }

    });

    timer = new Timer(DELAY, this);
}

public GamePanel() {
    this.setBackground(Color.BLACK);
    this.setPreferredSize(new Dimension(B_WIDTH, B_HEIGHT));
    this.setFocusable(true);
    this.addKeyListener(new KeyMonitor());
    this.setVisible(false);

}

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    this.setDoubleBuffered(true);
    mySnake.checkLive();
    if(mySnake.isLive()) {
        mySnake.draw(g);
    } else {
        timer.stop();
        this.gameOver(g);
    }
    if(f.isLive()) {
        f.draw(g);
    } else {
        f = new Food();
    }
    mySnake.eatFood(f);
}

private void gameOver(Graphics g) {
    g.setFont(gameOverFont);
}

@Override
public void actionPerformed(ActionEvent e) {
    repaint();
}

private class KeyMonitor extends KeyAdapter {   
    @Override
    public void keyPressed(KeyEvent e) {
        mySnake.keyPressed(e);
    }
}

}

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class WelcomePanel extends JPanel implements ActionListener{
GamePanel gp;
JButton start = null;
JButton help = null;
JTextField inputName = null;

public WelcomePanel(GamePanel gp) {
    this.gp = gp;
    start = new JButton("START");
    start.setBackground(Color.RED);
    start.setBounds(160, 220, 130, 40);
    start.setForeground(Color.RED);
    start.addActionListener(this);

    help = new JButton("HELP");
    help.setBackground(Color.RED);
    help.setBounds(160, 270, 130, 40);
    help.setForeground(Color.RED);
    help.addActionListener(this);

    inputName = new JTextField("请输入你的昵称", 10);
    inputName.setBounds(160, 160, 150, 40);
    this.setBackground(Color.BLACK);
    this.setPreferredSize(new Dimension(GamePanel.B_WIDTH, GamePanel.B_HEIGHT));
    this.setLayout(null);
    this.add(start);
    this.add(inputName);
}

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getSource() == start) {
        gp.playerName = inputName.getText();

System.out.println(gp.playerName);
gp.myJFrame.setContentPane(gp);
gp.setVisible(true);
gp.timer.start();
} else if(e.getSource() == help) {

    }

}

}

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;

public class Snake {
GamePanel gp;
Direction dir = Direction.R;
int x, y, size;

private boolean live = true;
private int sX[] = new int[GamePanel.ALL_DOTS];
private int sY[] = new int[GamePanel.ALL_DOTS];

public Snake() {
    size = 2;
    sX[0] = 1 * GamePanel.DOT_SIZE;
    sX[1] = 0 * GamePanel.DOT_SIZE;
    sY[0] = 0 * GamePanel.DOT_SIZE;
    sY[1] = 0 * GamePanel.DOT_SIZE; 
}

public Snake(int x, int y, GamePanel gp) {
    this.x = x;
    this.y = y;
    this.gp = gp;
}

public void draw(Graphics g) {
    move();

    Color c = g.getColor();
    g.setColor(Color.GREEN);
    for(int i=0; i<size; i++) {
        g.fillOval(sX[i], sY[i], GamePanel.DOT_SIZE, GamePanel.DOT_SIZE);
    }
}

public void keyPressed(KeyEvent e) {
    int key = e.getKeyCode();
    switch(key) {
    case KeyEvent.VK_UP :
        if(dir == Direction.D)  break;
        dir = Direction.U; 
        break;
    case KeyEvent.VK_DOWN :
        if(dir == Direction.U)  break;
        dir = Direction.D; 
        break;
    case KeyEvent.VK_LEFT :
        if(dir == Direction.R)  break;
        dir = Direction.L; 
        break;
    case KeyEvent.VK_RIGHT :
        if(dir == Direction.L)  break;
        dir = Direction.R; 
        break;
    }
}

public void move() {
    for(int i=size-1; i>0; i--) {
        sX[i] = sX[(i-1)];
        sY[i] = sY[(i-1)];
    }

    switch(dir) {
    case U :
        sY[0] -= GamePanel.DOT_SIZE;
        break;
    case D :
        sY[0] += GamePanel.DOT_SIZE;
        break;
    case L :
        sX[0] -= GamePanel.DOT_SIZE;
        break;
    case R :
        sX[0] += GamePanel.DOT_SIZE;
        break;
    }

System.out.println(dir);
}

public boolean eatFood(Food f) {
    if(f.fX == sX[0] && f.fY == sY[0]) {
        f.setLive(false);
        this.grow();
        return true;
    }
    return false; 
}

private void grow() {
    size ++;
}

public boolean isLive() {
    return live;
}

public void setLive(boolean live) {
    this.live = live;
}

public void checkLive() {
    if(sX[0] < 0 || sX[0] >= GamePanel.B_WIDTH || sY[0] < 0 || sY[0] >= GamePanel.B_HEIGHT) {
        this.setLive(false);
    } 
    for(int i=1; i<size; i++) {
        if(sX[0] == sX[i] && sY[0] == sY[i]) {
            this.setLive(false);
            break;
        }
    }

}

}

import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;

public class Food {
public int fX;
public int fY;
private boolean live = true;

private static Random r = new Random();

public Food() {
    fX = r.nextInt(GamePanel.B_WIDTH / GamePanel.DOT_SIZE) * GamePanel.DOT_SIZE;
    fY = r.nextInt(GamePanel.B_HEIGHT / GamePanel.DOT_SIZE) * GamePanel.DOT_SIZE;
}

public void draw(Graphics g) {
    Color c = g.getColor();
    g.setColor(Color.RED);
    g.fillOval(fX, fY, GamePanel.DOT_SIZE, GamePanel.DOT_SIZE);
}

public boolean isLive() {
    return live;
}

public void setLive(boolean live) {
    this.live = live;
}

}

public enum Direction {
U, D, L, R
}

按下键盘 keyPressed方法没有被调用啊。。焦点我设置了还是没用啊
跪求大神

2个回答

主要是你定义了两个类GamePanel和WelcomePanel两个都是继承自JPanel的,但是键盘点击事件是添加到第一个GamePanel上的,一个JFrame中包含两个JPanel不知道它的事件是怎么处理的。
但是可以肯定的是,如果要修正代码的话,最好去掉WelcomePanel类,将其归并到GamePanel上来。
有个同样实现的问题,你完全可以参考:
http://ask.csdn.net/questions/241341

我找打原因了,是因为你的JFrame中使用了两个JPanel轮换显示的,在点击WelcomePanel的开始按钮后,界面切换显示的是GamePanel,但是该面板没有聚焦,导致它不能接收键盘点击事件。
修正你的WelcomePanel的actionPerformed方法,修正开始按钮的处理代码如下:

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == start) {
            gp.playerName = inputName.getText();

            System.out.println(gp.playerName);
            gp.myJFrame.setContentPane(gp);
            gp.setVisible(true);
            // 必须主动聚焦,才能使它的键盘点击事件触发
            gp.requestFocus();
            gp.timer.start();
        } else if (e.getSource() == help) {
        }

    }
wojiushiwo945you
毕小宝 回复史蒂芬先生: 对你有帮助的话,请你结贴采纳呗。不枉费我花半个小时给你找问题根源啊。
4 年多之前 回复
C_J33
Stephen.W 回复毕小宝:谢啦!!!
4 年多之前 回复
wojiushiwo945you
毕小宝 无论哪个控件、想接受键盘事件、必须先获得“焦点”,组件的requestFocus聚焦。
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
activity的ontouchevent监听不触发

在一个relativeLayout中有两个view,其中一个的自定义控件,定义了它的触摸、点击等事件的监听,activity启动后即把处理后的图片加载给它,另一个是系统的imageview,在activity中重写了ontouchevent,在触摸屏幕后才显示这个imageview。现在问题是当触摸屏幕的时候自定义控件能正常监听并做出相应变化,但是imageview却并没有显示,activity中重写的ontouchevent方法没有进入。 卡这了一天了,只能来向大神们求救了。

求救!链接数据库监听器错误

这可如何是好!求大神!,,,,,,,,,,!!!!求老司机!!!!![图片说明](https://img-ask.csdn.net/upload/201611/23/1479867784_606395.png)![图片说明](https://img-ask.csdn.net/upload/201611/23/1479867792_165109.png)![图片说明](https://img-ask.csdn.net/upload/201611/23/1479867798_336016.png)

Netty4.1运行一段时间后监听端口收不到请求

项目用的Netty4.1编写, 情况是运行一段时间后,监听端口就接收不到前端请求,大概过1分钟自动又恢复,貌似运行越久这种状况出现的越是频繁。上线时并发测试还挺不错的。就是这个问题折腾到现在反复重现,求救大神。 关键代码如下: ``` EventLoopGroup bossGroup = new NioEventLoopGroup(); //定义一个线程组,这个线程组的作用是用来接收客户端的连接 EventLoopGroup workerGroup = new NioEventLoopGroup(); //定义一个线程组,这个线程组用来处理业务逻辑 final EventExecutorGroup e2=new DefaultEventExecutorGroup(32); try { ServerBootstrap b = new ServerBootstrap(); //定义一个ServerBootstarp类,这个类用来初始化netty服务器 //将两个线程组绑定到ServerBootstarp中,channel使用的模式为非阻塞模式 b.group(bossGroup, workerGroup); b.channel(NioServerSocketChannel.class); b.childHandler(new ChannelInitializer<SocketChannel>() { int i = 0; @Override //当有连接接入的时候会调用这个方法 public void initChannel(SocketChannel ch) throws Exception { //server端发送的是httpResponse,所以要使用HttpResponseEncoder进行编码,将HttpResponse转化为ByteBuffer ch.pipeline().addLast(new HttpResponseEncoder()); //server端接收到的是httpRequest,所以要使用HttpRequestDecoder进行解码,将HttpRequset解码为ByteBuffer ch.pipeline().addLast(new HttpRequestDecoder()); //处理接收HTTP报文不全的特殊设置 ch.pipeline().addLast("aggregator", new HttpObjectAggregator(3200)); //收到客户端的连接之后就调用HttpServerInboundHandler来处理 //ch.pipeline().addLast(new HttpServerInboundHandler()); ch.pipeline().addLast(e2,new HttpServerInboundHandler()); } }); b.option(ChannelOption.SO_BACKLOG, 1024); b.childOption(ChannelOption.CONNECT_TIMEOUT_MILLIS,30); b.childOption(ChannelOption.SO_KEEPALIVE, false); ChannelFuture f = b.bind(port).sync(); //和套接字的绑定类似,监听班底的port端口 f.channel().closeFuture().sync(); //等待结束 ```

.net framework安装不了,为什么?求救

打开软件打不开报错,上网说是没有安装.net framework,然后去注册表中查看确实没有那个NDP文件,然后上网下载一个安装,却又提示安装了,不懂为什么??? ![图片说明](https://gss0.baidu.com/7Po3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/bf096b63f6246b60f363bc0ce5f81a4c510fa25d.jpg) ![图片说明](https://gss0.baidu.com/9fo3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/e1fe9925bc315c60668f659783b1cb13495477ab.jpg) ![图片说明](https://gss0.baidu.com/7Po3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/3b87e950352ac65c0710680bf5f2b21193138ab4.jpg)

小白求救SOS!! 单击buttn按钮没有响应其后台的单击事件

前台: ``` <asp:Button ID="SelectBtn" runat="server" Text="検索" Width="103px" OnClick="SelectBtn_Click" /> ``` 后台: ``` protected void SelectBtn_Click(object sender, EventArgs e) { string sqlCon = "Data Source=tcp:m7pevx6s1h.database.windows.net;Initial Catalog=srpnotesdev02;User ID=********;Password=*********;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"; SqlConnection scon = new SqlConnection(sqlCon); if (scon.State != ConnectionState.Open) { scon.Open(); } string sql; string text = this.SelectText.Text.ToString(); string parm = @"[/^[a-zA-Z]+$/]"; Regex rg = new Regex(parm); Match mh = rg.Match(text); if (mh.Success) { sql = " select EName,UniqueNo,jno,name,GroupSName_1,GroupSName_2,GroupSName_3,O365_Email from MainForm where EName='" + this.SelectText.Text.ToString() + "' "; } else { sql = " select EName,UniqueNo,jno,name,GroupSName_1,GroupSName_2,GroupSName_3,O365_Email from MainForm where name='" + this.SelectText.Text.ToString() + "' "; } SqlCommand scmd = new SqlCommand(sql, scon); SqlDataAdapter sda = new SqlDataAdapter(scmd); DataTable dt = new DataTable(); sda.Fill(dt); Console.WriteLine(dt); Rept.DataSource = dt; Rept.DataBind(); } ```

新手求救为什么在输入a3时无输出

初学c语言,不太懂,希望得到指导 ![图片说明](https://img-ask.csdn.net/upload/201611/01/1477999244_929911.png) ![图片说明](https://img-ask.csdn.net/upload/201611/01/1477999266_3914.png) ![图片说明](https://img-ask.csdn.net/upload/201611/01/1477999282_25010.png) 求大神指导 ```#include<stdio.h> #include<string.h> int main(){ char str[100]={0}; scanf("%s",str); int temp=0,fh,s,save=0; int i=0; for(i=0;i<strlen(str);i++){ if (str[i]>57||str[i]<48){ if(str[i+1]>57||str[i+1]<48){ printf("%c",str[i]); } else{ while(str[i+temp]<=57&&str[1+temp]>=48){ temp++; } if(temp==1){ save=str[i+1]-48; } if(temp==2){ save=(str[i+1]-48)*10+str[i+2]-48; }if(temp==3){ save=(str[i+1]-48)*100+(str[i+2]-48)*10+str[i+3]-48; } for(s=0;s<save%7;s++){ printf("%c",str[i]); } printf(" "); i=i+temp; temp=0; } } } return 0; } ```

input type="file" 在选择文件时,怎么给取消按钮添加事件?求救

![图片说明](https://img-ask.csdn.net/upload/201705/08/1494234617_199152.png) 如图所示,如果没法添加事件,请问有没有别的办法,或者怎么判断onchange事件没触发?

求救为什么下面代码console.info无法打印

为什么下面代码console.info无法打印 ```html <!DOCTYPE html> <html> <head> <title>HTML DOM DEMO</title> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <script> function abc(){ console.info(88);//todo 为什么不能打印 var demo = document.getElementById("demo1"); while (demo) { document.write('<li>' + demo.nodeName + '</li>'); console.info(1);//todo 为什么不能打印 demo = demo.previousElementSibling; } } </script> </head> <body> <input type="button" value="RUN" onclick="abc();"> <div id="demo1">There is no spoon.</div> <div id="demo2">Believe the unbelievable.</div> <div id="demo3">Free your mind.</div> </body> </html> ```

求救!用oracle11g实现人事管理数据库设计,在循环键盘输入信息时遇到错误!

我现在做用oracle实现人事管理数据库,遇到了很严重的问题,请各位路过的大侠帮帮忙!!! 它的要求和部分代码如下: 我用的是oracle 11g,用cmd进行以下操作,我的用户名已创建(user_name1),被授予了需要用到的权限,创建了3个表空间orcltbs1_1、orcltbs1_2、orcltbs1_3都是(300m的容量)用来完成要求1。 要求: 1、员工表(按出生日期建立分区表)create table emp(empnum varchar2(16) primary key, empname varchar2(16) not null, sex number not null constraint s_ck1 check(sex in(0,1)), birthday date not null, nation varchar2(10) not null,nativeplace varchar2(40) not null,Ident varchar2(16) not null,department varchar2(16) not null, marriage number not null constraint s_ck2 check(marriage in(0,1)),address varchar2(40),policy varchar(10) not null, phone varchar2(16) not null,degree varchar(10) not null,college varchar2(40) not null,duty varchar2(16),title varchar2(16), sort varchar(10) not null,remark varchar2(400)) partition by range(birthday) (partition p1 values less than(to_date('1970-1-1','yyyy-mm-dd'))tablespace orcltbs1_1, partition p2 values less than (to_date('1990-1-1','yyyy-mm-dd'))tablespace orcltbs1_2, partition p3 values less than (maxvalue) tablespace orcltbs1_3); 2、创建一个存储过程p_inputInfo,通过该过程完成员工基本信息的录入; create or replace procedure p_inputInfo( p_empnum emp.empnum%type, p_empname emp.empname%type, p_sex emp.sex%type, p_birthday date, p_nation varchar2,p_nativeplace varchar2,p_Ident varchar2,p_department varchar2,p_marriage number,p_address varchar2,p_policy varchar2,p_phone varchar2,p_degree varchar2,p_college varchar2,p_duty varchar2,p_title varchar2,p_sort varchar2,p_remark varchar2 ) as begin insert into emp values(p_empnum, p_empname, p_sex, p_birthday, p_nation,p_nativeplace,p_Ident,p_department,p_marriage,p_address,p_policy,p_phone,p_degree,p_college,p_duty,p_title,p_sort,p_remark ); end p_inputInfo; 3、创建一个存储过程调用p_inputInfo,利用键盘输入职工信息,能够循环输入,每次输入完,要提示继续吗?输入Y继续下一个职工信息输入,输入其它字母,退出输入。 declare p_panduan varchar2(10); p_empnum emp.empnum%type; p_empname emp.empname%type; p_sex emp.sex%type; p_birthday emp.birthday %type; p_nation emp.nation%type; p_nativeplace emp.nation%type; p_Ident emp.Ident %type; p_department emp.department %type; p_marriage emp.marriage %type; p_address emp.address %type; p_policy emp.policy %type; p_phone emp.phone %type; p_degree emp.degree %type; p_college emp.college %type; p_duty emp.duty %type; p_title emp.title %type; p_sort emp.sort %type; p_remark emp.remark %type; begin loop p_empnum:='&num'; p_empname:='&nam'; p_sex:='&sex'; p_birthday:=&birthda; p_nation:='&natio'; p_nativeplace:='&nativeplac'; p_Ident:='&iden'; p_department:='&dept'; p_marriage:='&marriag'; p_address:='&addres'; p_policy:='&polic'; p_phone:='&phon'; p_degree:='&degre'; p_college:='&colleg'; p_duty:='&dut'; p_title:='&titl';p_sort:='&sor';p_remark:='&remar'; --(第40行) p_inputInfo(p_empnum, p_empname, p_sex, p_birthday, p_nation, p_nativeplace, p_Ident, p_department, p_marriage, p_address, p_policy, p_phone, p_degree, p_college, p_duty, p_title, p_sort, p_remark); dbms_output.put_line('是否继续输入?输入Y继续下一个职工信息输入,输入其它字母,退出输入'); --(第59行) p_panduan:=&panduan; exit when p_panduan != 'y'; end loop; end; 操作结果: 输入员工信息,然后输入n的话,是可以把数据插入emp表;但是!! 输入员工信息,然后输入y的话,出现以下错误:第 1 行出现错误: ORA-00001: 违反唯一约束条件 (user_name1.SYS_C0011485) ORA-06512: 在 "user_name1.P_INPUTINFO", line 10(也就是P_INPUTINFO这个存储过程的as,应该没什么错吧?) ORA-06512: 在 line 41 我试过用系统管理员身份,删除掉SYS_C0011485这个约束条件,但是当输入员工信息,然后输入y后,cmd光标一直不动,同时,相应的表空间的可用容量也会越来越少。比如:我输入以下员工信息:p_empnum:='12345'; p_empname:='isi'; p_sex:=0; p_birthday:=to_date('1979-11-6','yyyy-mm-dd'); p_nation:='han'; p_nativeplace:='gda'; p_Ident:='12345632'; p_department:='ywb'; p_marriage:=0; p_address:='gdaadsz'; p_policy:='qz'; p_phone:='12345'; p_degree:='daxue'; p_college:='zadsadsk'; p_duty:='jl'; p_title:='jl';p_sort:='jl';p_remark:='wu'; 我用dba身份运行:select tablespace_name,sum(bytes) free_spaces from dba_free_space group by tablespace_name; 发现orcltbs1_2的可用容量越来越少,最后cmd出现以下提示: declare * 第1行出现错误: ora-01688:表user_name1.emp分区p2无法通过128(在表空间orcltbs1_2扩展) ora-06512:在“user_name.p_inputinfo”,line 10 ora-06512:在line 41 请问各位,为什么这种情况下表空间会越来越少?是我的代码有什么逻辑错误吗? 还有,我这个系统要求的是能够循环键盘输入员工信息(至少输入2个员工的信息),请问各位,我的第三个要求的代码哪里错了?麻烦帮我指出来、改正!! 这个东西搞了一天了,不搞出来总觉得是前功尽弃,望各位大侠施以援手!!!万分感谢!

求救啊,为什么MyEclipse8.6打不开了!

求大家帮助啊,这什么原因,今天用的好好的,晚上回家就打不开了,什么原因![图片说明](https://img-ask.csdn.net/upload/201711/01/1509539717_140878.png)

有什么办法能让jbutton添加在图片底下吗。求救

java初学者,这问题想了两天了。想实现如下棋盘上每个格子都能有鼠标监听事件,点击换张颜色的图,移动到某个格子上也换一张图。我是把图片drawcomponent方法花在panel上,但这样好像没法实现鼠标监听事件。。所以有了第二张图,我把所有格子都换成一个jbutton,添加在panel上。这样可以实现监听,但好像jbutton又把图片给覆盖了。。有什么两全之策,,或者其他啥解决方法。。在这里小弟先谢谢了。 ![图片说明](https://img-ask.csdn.net/upload/201605/10/1462869789_109122.png) 第二张图 ![图片说明](https://img-ask.csdn.net/upload/201605/10/1462870126_275387.png)

Java小白求救啊!!!

package com.shuai.plane; import java.awt.Color; import java.awt.Graphics; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.lang.ref.PhantomReference; import java.util.ArrayList; import java.util.List; import javax.swing.JPanel; //JAVA中游戏面板:JPanel /* * 自定义游戏面板 * 1.写一个类继承JPanel * 2.创建构造方法,初始化游戏面板的属性 * * 画图的步骤 * 1.在类中定义图片,并取名 * 2.在构造方法中调用工具类(Photo)初始化图片 * 3.在画图方法paint中,画图片(paint是专门的画图方法) * */ public class GamePanel extends JPanel{ //创建一个集合,用来存放敌机(敌机的大本营) List<EnemyPlane> arrays = new ArrayList<>(); //创建一个集合,用来放英雄机的弹药 List<HeroFire> HFire = new ArrayList<>(); //创建一个集合,用来放敌机的弹药 List<EnemyFire> EnFire = new ArrayList<>(); //创建英雄机的对象 HeroPlane heroPlane = new HeroPlane(); //创建敌机的对象 EnemyPlane enemyPlane = new EnemyPlane(); //写一个线程,让程序跑起来 //写一个方法,启动线程 public void action() { new Thread() { public void run() { //定义一个变量控制敌机出现的数量 int a = 0; int b = 20; //写一个死循环,让程序一直运行 while(true) { //让敌机出现在面板上 if(a == b) { MakeEP(); a = 0; } //让敌机移动 epMove(); //让英雄机子弹出现在面板上 if(a == 0) { MakeHeroFire(); } //让英雄机的子弹动起来 HeroFireMove(); //让敌机的子弹出现在面板上 //MakeEnemyFire(); //让敌机的子弹动起来 //EnemyFireMove(); //重绘布局(刷新页面) repaint(); try { this.sleep(30); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } a++; } } }.start(); } //写一个方法,让敌机移动 public void epMove() { for(int i = 0; i < arrays.size(); i++) { EnemyPlane enemyPlane = arrays.get(i); enemyPlane.y += 10; if(enemyPlane.y > 800) { arrays.remove(enemyPlane); } //EnemyFire enemyFire = EnFire.get(i); //enemyFire.y += 15; } } //写一个方法,用来生产敌机,并把它放进集合中 void MakeEP() { //创建敌机 EnemyPlane enemyPlane = new EnemyPlane(); //创建敌机的子弹 //EnemyFire enemyFire = new EnemyFire(enemyPlane.x, enemyPlane.y); //把敌机加到大本营中(集合) arrays.add(enemyPlane); //EnFire.add(enemyFire); } //写一个方法,生产英雄机的弹药,并把它放进英雄机的弹药库 void MakeHeroFire() { for(int i = 0; i < arrays.size(); i++) { HeroFire heroFire = new HeroFire(heroPlane.x + 15, heroPlane.y, 0); HFire.add(heroFire); HeroFire heroFire2 = new HeroFire(heroPlane.x + 78, heroPlane.y, 2); HFire.add(heroFire2); HeroFire heroFire3 = new HeroFire(heroPlane.x + 48, heroPlane.y - 20, 1); HFire.add(heroFire3); } } //写一个方法让英雄机子弹移动 public void HeroFireMove() { for(int i = 0; i < HFire.size(); i++) { HeroFire heroFire = HFire.get(i); if(heroFire.dir == 0) { heroFire.x -= 1; } if(heroFire.dir == 2) { heroFire.x += 1; } heroFire.y -= 10; // if(heroFire.y < -heroFire.h) { // HFire.remove(heroFire); // } } } //写一个方法生产敌机的弹药,并放进敌机的弹药库 void MakeEnemyFire() { EnemyFire enemyFire = new EnemyFire(enemyPlane.x, enemyPlane.y); EnFire.add(enemyFire); } //让敌机的子弹动起来 void EnemyFireMove() { for(int i = 0; i < EnFire.size(); i++) { EnFire.get(i).y += 15; } } //定义背景图 BufferedImage bgp; //创建构造方法,初始化面板 public GamePanel(GameFrame gameFrame) { //设置面板的背景 //setBackground(Color.cyan); //通过工具类(Photo)获取图片 bgp = Photo.getImage("/Img/bg1.jpg"); /* * 使用鼠标监听器(固定格式) */ //1.创建鼠标适配器 //这是一个匿名内部类 MouseAdapter adapter = new MouseAdapter() { //2.确定需要的鼠标监听事件 /* * 鼠标监听事件: * 1.mouseMoved();监听鼠标移动事件 * 2.mouseCliked();监听鼠标单击事件(鼠标按下后松开才会被监听,按下不会被监听) * 3.mousePressed();监听鼠标按下去的事件(只要鼠标按下就会被监听) * 4.mouseEntered();监听鼠标移入游戏界面的事件 * 5.mouseExited();监听鼠标移出游戏界面的事件 * * MouseEvevt:鼠标的事件,记录鼠标做的事情 * */ @Override //当鼠标在游戏界面移动时,会触发此方法 public void mouseMoved(MouseEvent e) { //让英雄机跟着鼠标移动,就让英雄机的横纵坐标等于鼠标的横纵坐标 //获取鼠标的坐标(getX();获取鼠标的横坐标, getY();获取鼠标的纵坐标) int mx = e.getX(); int my = e.getY(); //让英雄机移动到鼠标的位置(英雄机移动到鼠标的位置,是英雄机的行为,可以在英雄机中定义方法) //此时英雄机依然不会移动,其实英雄机的坐标已经改变,但是没有把英雄机绘制到新的坐标,需要刷新页面 //heroPlane.move(mx, my); heroPlane.x = mx - heroPlane.w/2; heroPlane.y = my - heroPlane.h/2; //刷新页面,将英雄机绘制到新的页面 //重新调用paint方法(re 表示重新调用) repaint(); } @Override //当鼠标在游戏界面单击时,会触发此方法 public void mouseClicked(MouseEvent e) { System.out.println("~~~~~~~鼠标单击了"); } @Override //当鼠标在游戏界面按下时,会触发此方法 public void mousePressed(MouseEvent e) { System.out.println("!!!!!!!!鼠标被按下了"); } @Override //当鼠标移入游戏界面时,会触发此方法 public void mouseEntered(MouseEvent e) { System.out.println("**************鼠标被移出"); } @Override //当鼠标移出游戏界面时,会触发此方法 public void mouseExited(MouseEvent e) { System.out.println("**************鼠标被移入"); } }; //3.将适配器加入到监听器中(固定格式) addMouseListener(adapter); addMouseMotionListener(adapter); /* * 使用键盘适配器(固定模式) */ // 1.创建键盘适配器 KeyAdapter key = new KeyAdapter() { // 2.确定需要监听的键盘事件 @Override //当键盘按下时,会触发此方法 public void keyPressed(KeyEvent e) { //监听键盘的按键(每一个按键都对应有一个数字) //获取按键的数字 int a = e.getKeyCode(); //KeyEvent.VK_?;是表示指定的按键对应的数字 if(a == KeyEvent.VK_A || a == KeyEvent.VK_LEFT) { if((heroPlane.x -= 10) < -heroPlane.w/2) { heroPlane.x = 0 - heroPlane.w/2; } }else if(a == KeyEvent.VK_D || a == KeyEvent.VK_RIGHT) { if((heroPlane.x += 10) > 600 - heroPlane.w/2) { heroPlane.x = 600 - heroPlane.w/2; } }else if(a == KeyEvent.VK_W || a == KeyEvent.VK_UP) { if((heroPlane.y -= 10) < 0) { heroPlane.y = 0; } }else if(a == KeyEvent.VK_S || a == KeyEvent.VK_DOWN) { if((heroPlane.y += 10) > 800 - heroPlane.h) { heroPlane.y = 800 - heroPlane.h; } } //重绘,将英雄机画到新的位置上 repaint(); /* if(e.getKeyChar() == 'a') { if((heroPlane.x -= 10) < -heroPlane.w/2) { heroPlane.x = 0 - heroPlane.w/2; } } if(e.getKeyChar() == 'd') { if((heroPlane.x += 10) > 600 - heroPlane.w/2) { heroPlane.x = 600 - heroPlane.w/2; } } if(e.getKeyChar() == 'w') { if((heroPlane.y -= 10) < 0) { heroPlane.y = 0; } } if(e.getKeyChar() == 's') { if((heroPlane.y += 10) > 800 - heroPlane.h) { heroPlane.y = 800 - heroPlane.h; } } //重绘,将英雄机画到新的位置上 repaint(); */ } }; // 3.将适配器加入到窗体的监听器中(加到面板的键盘监听器中是没有用的) //可以在创建面板对象时,把窗体对象传过来,然后把键盘适配器添加到窗体的键盘监听器中 //需要面板的构造器添加参数,并指定类型 gameFrame.addKeyListener(key); } //专门画图的方法,重写于JComponent类(JPanel的父类) //画图的方法:(画图时一定要注意图片的尺寸) // 格式: g.drawImage(图片, 横坐标, 纵坐标, 宽度, 高度, 当转换了更多图片是要通知的对象) // 画图时如果不设定图片的大小,图片显示就是原图的大小 @Override public void paint(Graphics g) { //g.drawImage(img, x, y, observer); //横纵坐标是设置图片左上角的坐标,设置图片的大小 g.drawImage(bgp, 0, 0, 600, 800, null); //在paint中画图是有顺序的,先画的在下面一层,先画的会被后画的覆盖 //给敌机画图 //已经把敌机放入集合中了,使用遍历绘制敌机 for(int i = 0; i < arrays.size(); i++) { EnemyPlane enemyPlane = arrays.get(i); g.drawImage(enemyPlane.img, enemyPlane.x, enemyPlane.y, enemyPlane.w, enemyPlane.h, null); } //给英雄机画图 g.drawImage(heroPlane.img, heroPlane.x, heroPlane.y, heroPlane.w, heroPlane.h, null); //把英雄机的弹药画进面板 for(int i = 0; i < HFire.size(); i++) { HeroFire heroFire = HFire.get(i); g.drawImage(heroFire.img, heroFire.x, heroFire.y, heroFire.w, heroFire.h, null); } //把敌机的子弹画进面板中 // for(int i = 0; i < EnFire.size(); i++) { // EnemyFire enemyFire = EnFire.get(i); // g.drawImage(enemyFire.img, enemyFire.x, enemyFire.y, enemyFire.w, enemyFire.h, null); // } } } ![图片说明](https://img-ask.csdn.net/upload/202003/20/1584711414_269752.png)![图片说明](https://img-ask.csdn.net/upload/202003/20/1584711424_683016.png)![图片说明](https://img-ask.csdn.net/upload/202003/20/1584711438_860998.png)![图片说明](https://img-ask.csdn.net/upload/202003/20/1584711451_113820.jpg) ![图片说明](https://img-ask.csdn.net/upload/202003/20/1584711743_593343.png) 图一是运行时操作的画面,如果移动鼠标或者按着键盘不放(应该是飞机移动太快的时候),就会出现下面的画面,会一次出现多个子弹(我就的是鼠标移动时刷新的太快,但是线程里面是限制了时间的,难道是鼠标或者键盘和县线程里面重复刷新了???不会啊,求救啊!!!)。还有,截图代码中,如果把圈出来的判断代码放出来,游戏界面就会出现圈起来的样子(最左边的子弹向上走到一定高度就会变成两个,每次都是在那个高度,并且只有最左边的子弹会变化。)(我就的可能是集合删除后子弹的位置改变了,如果用LinkedList会不会好点?求救!!!)

vs2013出问题求救,不知道为什么添加代码后release下不给编译

我用vs2013做了个程序,c语音的,前几天都没有问题,今天不知道为什么vs2013出问题了,具体就是我程序里有个右键弹出菜单的功能,我再给它添加了两个菜单,release下编译没有将我后来写的代码编译,没有进行相应,我另开一个项目加个右键弹出菜单测试正常,再回到我的程序还有没有编译,请问怎么回事啊?

程序为什么运行不出来,程序有点长但是是主函数的问题,希望能够得到帮助,很急啊!

import java.applet.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; //import java.Math.*; public class cal extends Applet { //定义所有需要使用的全局变量 String str="0";//暂存显示屏数据 String sign="null";//暂存符号数据 double num=0;//暂存内部运算数据 boolean change=false;//暂存内部四则运算起用 GridLayout g0,g1;//定义AWT布局部件 JTextField number; Button num_p,num_0,num_1,num_2,num_3,num_4,num_5,num_6,num_7,num_8,num_9; Button act_add,act_mul,act_div,act_sub; Button mat_sin,mat_cos,mat_tan; Button do_ans,do_del; Panel p0,p1; public void init()//主程序部分 { //定义各个控件的样式 number=new JTextField(20);//显示屏 number.setHorizontalAlignment(JTextField.RIGHT); number.setEnabled(false); number.setText("0"); num_p=new Button(".");//小数点的按钮 num_p.setForeground(Color.red); num_p.addActionListener(new getbt()); num_0=new Button("0");//数字0的按钮 num_0.setForeground(Color.red); num_0.addActionListener(new getbt()); num_1=new Button("1");//数字1的按钮 num_1.setForeground(Color.red); num_1.addActionListener(new getbt()); num_2=new Button("2");//数字2的按钮 num_2.setForeground(Color.red); num_2.addActionListener(new getbt()); num_3=new Button("3");//数字3的按钮 num_3.setForeground(Color.red); num_3.addActionListener(new getbt()); num_4=new Button("4");//数字4的按钮 num_4.setForeground(Color.red); num_4.addActionListener(new getbt()); num_5=new Button("5");//数字5的按钮 num_5.setForeground(Color.red); num_5.addActionListener(new getbt()); num_6=new Button("6");//数字6的按钮 num_6.setForeground(Color.red); num_6.addActionListener(new getbt()); num_7=new Button("7");//数字7的按钮 num_7.setForeground(Color.red); num_7.addActionListener(new getbt()); num_8=new Button("8");//数字8的按钮 num_8.setForeground(Color.red); num_8.addActionListener(new getbt()); num_9=new Button("9");//数字9的按钮 num_9.setForeground(Color.red); num_9.addActionListener(new getbt()); act_add=new Button("+");//加法的按钮 act_add.setForeground(Color.red); act_add.addActionListener(new getbt()); act_sub=new Button("-");//减法的按钮 act_sub.setForeground(Color.red); act_sub.addActionListener(new getbt()); act_mul=new Button("*");//乘法的按钮 act_mul.setForeground(Color.red); act_mul.addActionListener(new getbt()); act_div=new Button("/");//除法的按钮 act_div.setForeground(Color.red); act_div.addActionListener(new getbt()); do_ans=new Button("=");//等于的按钮 do_ans.setForeground(Color.red); do_ans.addActionListener(new getbt()); do_del=new Button("del");//删除的按钮 do_del.setForeground(Color.red); do_del.addActionListener(new getbt()); mat_sin=new Button("sin");//sin的按钮 mat_sin.setForeground(Color.red); mat_sin.addActionListener(new getbt()); mat_cos=new Button("cos");//cos的按钮 mat_cos.setForeground(Color.red); mat_cos.addActionListener(new getbt()); mat_tan=new Button("tan");//tan的按钮 mat_tan.setForeground(Color.red); mat_tan.addActionListener(new getbt()); //布局整个计算器 g0=new GridLayout(1,1,10,10);//布局输入输出大体位置 g1=new GridLayout(4,5,10,10); p0=new Panel(); //显示屏的布局 p0.setLayout(g0); p0.add(number); p0.setBounds(0,0,100,50); //按纽的布局 p1=new Panel(); p1.setLayout(g1); p1.add(num_1);//第一排按纽 p1.add(num_2); p1.add(num_3); p1.add(act_add); p1.add(act_sub); p1.add(num_4);//第二排按纽 p1.add(num_5); p1.add(num_6); p1.add(act_mul); p1.add(act_div); p1.add(num_7);//第三排按纽 p1.add(num_8); p1.add(num_9); p1.add(mat_sin); p1.add(mat_cos); p1.add(num_0);//第四排按钮 p1.add(num_p); p1.add(do_ans); p1.add(do_del); p1.add(mat_tan); p1.setBounds(5,60,400,250); p1.setBackground(Color.cyan);//设置按钮背景颜色 setLayout(null); add(p0); add(p1); this.setBackground(Color.cyan);//设置背景整体颜色 } class getbt implements ActionListener //监听作出反应的类 { public void actionPerformed(ActionEvent e)//对每个每个按钮做出响应 { if(e.getSource()==num_0) press0(); else if(e.getSource()==num_1) press1(); else if(e.getSource()==num_2) press2(); else if(e.getSource()==num_3) press3(); else if(e.getSource()==num_4) press4(); else if(e.getSource()==num_5) press5(); else if(e.getSource()==num_6) press6(); else if(e.getSource()==num_7) press7(); else if(e.getSource()==num_8) press8(); else if(e.getSource()==num_9) press9(); else if(e.getSource()==num_p) pressp(); else if(e.getSource()==act_add) pressadd(); else if(e.getSource()==act_mul) pressmul(); else if(e.getSource()==act_div) pressdiv(); else if(e.getSource()==act_sub) presssub(); else if(e.getSource()==mat_sin) presssin(); else if(e.getSource()==mat_tan) presstan(); else if(e.getSource()==mat_cos) presscos(); else if(e.getSource()==do_ans) pressans(); else if (e.getSource()==do_del) pressdel(); } } public void press0()//对按0作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="0"; } else if(str=="0" || sign!="null") { str="0"; } number.setText(str); } public void press1()//对按1作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="1"; } else if(str=="0"|| sign!="null") { str="1"; change=false; } number.setText(str); } public void press2()//对按2作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="2"; } else if(str=="0" || sign!="null") { str="2"; change=false; } number.setText(str); } public void press3()//对按3作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="3"; } else if(str=="0" || sign!="null") { str="3"; change=false; } number.setText(str); } public void press4()//对按4作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="4"; } else if(str=="0" || sign!="null") { str="4"; change=false; } number.setText(str); } public void press5()//对按5作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="5"; } else if(str=="0" || sign!="null") { str="5"; change=false; } number.setText(str); } public void press6()//对按6作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="6"; } else if(str=="0" || sign!="null") { str="6"; change=false; } number.setText(str); } public void press7()//对按7作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="7"; } else if(str=="0" || sign!="null") { str="7"; change=false; } number.setText(str); } public void press8()//对按8作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="8"; } else if(str=="0" || sign!="null") { str="8"; change=false; } number.setText(str); } public void press9()//对按9作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="9"; } else if(str=="0" || sign!="null") { str="9"; change=false; } number.setText(str); } public void pressp()//对按.作出反应 { boolean p=false; for(int i=0;i<str.length();i++) if(str.charAt(i)=='.') p=true; if(str.length()<16 && str!="0" && sign=="null" && p==false) { str+="."; } else if((str=="0" || sign!="null")&& p==false) { str="0."; } number.setText(str); } public void pressadd()//对按+作出反应 { sign="add"; num=Double.parseDouble(str); change=true; } public void presssub()//对按-作出反应 { sign="sub"; num=Double.parseDouble(str); change=true; } public void pressmul()//对按*作出反应 { sign="mul"; num=Double.parseDouble(str); change=true; } public void pressdiv()//对按/作出反应 { sign="div"; num=Double.parseDouble(str); change=true; } public void presssin()//对按sin作出反应 { if(str!="0." && str!="-0" && str!="-0." && str!="0") { sign="null"; num=Double.parseDouble(str); num=Math.sin(num); str=Double.toString(num); if(str.length()>16) str=str.substring(0,16); num=0; } if(str=="0") { sign="null"; num=0; } number.setText(str); } public void presstan()//对按tan作出反应 { if(str!="0." && str!="-0" && str!="-0."&& str!="0") { sign="null"; num=Double.parseDouble(str); num=Math.tan(num); str=Double.toString(num); if(str.length()>16) str=str.substring(0,16); num=0; } number.setText(str); } public void presscos()//对按cos作出反应 { if(str!="0." && str!="-0" && str!="-0.") { sign="null"; num=Double.parseDouble(str); num=Math.cos(num); str=Double.toString(num); if(str.length()>16) str=str.substring(0,16); num=0; } number.setText(str); } public void pressans()//对按=作出反应 { if(sign=="null") number.setText(str); else if(sign=="add") { num+=Double.parseDouble(str); str=Double.toString(num); number.setText(str); } else if(sign=="sub") { num-=Double.parseDouble(str); str=Double.toString(num); number.setText(str); } else if(sign=="mul") { num*=Double.parseDouble(str); str=Double.toString(num); number.setText(str); } else if(sign=="div") { if(num!=0) { num/=Double.parseDouble(str); str=Double.toString(num); number.setText(str); } else { str="0"; number.setText(str); } } sign="null"; } public void pressdel()//对按del作出反应 { if(str.length()>1) { str=str.substring(0,str.length()-1); number.setText(str); } else if(str.length()==1) { str="0"; number.setText(str); } } }

python画动图不能动,哭了

想要自己做动图,写了半天,运行不动,然而就算直接嫖了大佬的代码放到这也不能动,为了防止是我自己代码写错,我就粘嫖的大佬代码了 ,是不是我什么环境没有或者不能直接运行?求救![图片说明](https://img-ask.csdn.net/upload/201912/10/1575920390_718734.png) ![图片说明](https://img-ask.csdn.net/upload/201912/10/1575920631_489175.png) 呃,代码是CSDN大佬剑九黄的Python 之 matplotlib (十六)Animation动画,就想试一下不算侵权啥的吧呃呃

PS 2015 CC版本安装不上啊,大神求救

![图片说明](https://img-ask.csdn.net/upload/201603/02/1456903417_597749.png)为什么我的电脑上安装不上PS 2015 CC版本,可是别人的电脑上却可以呢?大神求救!急需!

andriod studio 为什么我的setting菜单和别人的不同 求救

![这是我的](https://img-ask.csdn.net/upload/201603/15/1457974547_525723.png) ![这是其他人的。。网上的是这样的](https://img-ask.csdn.net/upload/201603/15/1457974691_32589.png) 为什么我的菜单少东西...? ![这是我的AS版本](https://img-ask.csdn.net/upload/201603/15/1457974769_759742.png) 是新版本的菜单变了吗? 求大牛为小弟解答

虚拟机装kali linux找不到USB无线网卡。。求救

完全找不到,虚拟机是VM,可移动设备里也找不到,物理机装windows可以用,即插即用,ubuntu上也是即插即用。。。为什么一到kali上根本找不到,(ubuntu是装在另一台物理机上的),无线网卡是mercury MW150U。。。求救。。。

求救!为什么一直TLE!新手自闭了

新手上路,真的不知道为什么总是TLE,简直比WA还绝望,求助 ![图片说明](https://img-ask.csdn.net/upload/202003/05/1583388962_615365.png) ```#include<stdio.h> int main() { int a,b,c,d,i,j; scanf("%d",&a); for(b=0;b<a;b++) { scanf("%d%d",&c,&d); for(i=d+1;i>1;i--) { if((c%i==0)&&(d%i==0)) break; } for(j=d;j<c*d;j++) { if((j%c==0)&&(j%d==0)) break; } printf("%d %d\n",i,j); } return 0; } ```

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

实现简单的文件系统

实验内容: 通过对具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 要求: 1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简

MIPS单周期CPU-组成原理实验-华中科技大学

使用logisim布线完成的MIPS单周期CPU,可支持28条指令。跑马灯的代码已经装入了寄存器,可以直接开启时钟运行。

2019数学建模A题高压油管的压力控制 省一论文即代码

2019数学建模A题高压油管的压力控制省一完整论文即详细C++和Matlab代码,希望对同学们有所帮助

基于QT和OpenCV的五子棋实现源码

一个简单的五子棋应用,基于QT和OpenCV的实现源码,通过相邻棋子判断是否获胜,不包含人工智能算法,适合新手入门

Git 实用技巧

这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定; 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务端搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前端技能进阶大有帮助。

实用主义学Python(小白也容易上手的Python实用案例)

原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会&nbsp; 【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

Python界面版学生管理系统

前不久上传了一个控制台版本的学生管理系统,这个是Python界面版学生管理系统,这个是使用pycharm开发的一个有界面的学生管理系统,基本的增删改查,里面又演示视频和完整代码,有需要的伙伴可以自行下

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

linux“开发工具三剑客”速成攻略

工欲善其事,必先利其器。Vim+Git+Makefile是Linux环境下嵌入式开发常用的工具。本专题主要面向初次接触Linux的新手,熟练掌握工作中常用的工具,在以后的学习和工作中提高效率。

JAVA初级工程师面试36问(完结)

第三十一问: 说一下线程中sleep()和wait()区别? 1 . sleep()是让正在执行的线程主动让出CPU,当时间到了,在回到自己的线程让程序运行。但是它并没有释放同步资源锁只是让出。 2.wait()是让当前线程暂时退让出同步资源锁,让其他线程来获取到这个同步资源在调用notify()方法,才会让其解除wait状态,再次参与抢资源。 3. sleep()方法可以在任何地方使用,而wait()只能在同步方法或同步块使用。 ...

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

智鼎(附答案).zip

并不是完整题库,但是有智鼎在线2019年9、10、11三个月的试题,有十七套以上题目,普通的网申行测题足以对付,可以在做题时自己总结一些规律,都不是很难

Visual Assist X 破解补丁

vs a's'sixt插件 支持vs2008-vs2019 亲测可以破解,希望可以帮助到大家

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

JavaWEB商城项目(包括数据库)

功能描述:包括用户的登录注册,以及个人资料的修改.商品的分类展示,详情,加入购物车,生成订单,到银行支付等!另外还有收货地址的和我的收藏等常用操作.环境(JDK 1.7 ,mysql 5.5,Ecli

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

一学即懂的计算机视觉(第一季)

图像处理和计算机视觉的课程大家已经看过很多,但总有“听不透”,“用不了”的感觉。课程致力于创建人人都能听的懂的计算机视觉,通过生动、细腻的讲解配合实战演练,让学生真正学懂、用会。 【超实用课程内容】 课程内容分为三篇,包括视觉系统构成,图像处理基础,特征提取与描述,运动跟踪,位姿估计,三维重构等内容。课程理论与实战结合,注重教学内容的可视化和工程实践,为人工智能视觉研发及算法工程师等相关高薪职位就业打下坚实基础。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/26281 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,但是大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 下载方式:电脑登录https://edu.csdn.net/course/detail/26281,点击右下方课程资料、代码、课件等打包下载

软件测试2小时入门

本课程内容系统、全面、简洁、通俗易懂,通过2个多小时的介绍,让大家对软件测试有个系统的理解和认识,具备基本的软件测试理论基础。 主要内容分为5个部分: 1 软件测试概述,了解测试是什么、测试的对象、原则、流程、方法、模型;&nbsp; 2.常用的黑盒测试用例设计方法及示例演示;&nbsp; 3 常用白盒测试用例设计方法及示例演示;&nbsp; 4.自动化测试优缺点、使用范围及示例‘;&nbsp; 5.测试经验谈。

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

课程主要面向嵌入式Linux初学者、工程师、学生 主要从一下几方面进行讲解: 1.linux学习路线、基本命令、高级命令 2.shell、vi及vim入门讲解 3.软件安装下载、NFS、Samba、FTP等服务器配置及使用

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

快速入门Android开发 视频 教程 android studio

这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

相关热词 c#中如何设置提交按钮 c#帮助怎么用 c# 读取合并单元格的值 c#带阻程序 c# 替换span内容 c# rpc c#控制台点阵字输出 c#do while循环 c#调用dll多线程 c#找出两个集合不同的
立即提问