小编ara*_*guy的帖子

如何阻止一个线程修改另一个线程正在使用的数组?

我有一个基本上是游戏的java程序.它有一个名为"世界"的类 ."World"类有一个方法'levelChanger()',另一个方法'makeColorArray()'.

public class World {

    private BufferedImage map, map1, map2, map3;
    private Color[][] colorArray;

    public World(int scrWd, int scrHi) {
        try {
            map1 = ImageIO.read(new File("map1.png"));
            map2 = ImageIO.read(new File("map2.png"));
            map3 = ImageIO.read(new File("map3.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        map = map1;

        makeColorArray();
    }

    private void makeColorArray() {
        colorArray = new Color[mapHi][mapWd]; // resetting the color-array
        for(int i = 0; i < mapHi; i++) {
            for(int j = 0; j < …
Run Code Online (Sandbox Code Playgroud)

java swing multithreading thread-safety

6
推荐指数
1
解决办法
216
查看次数

如何在ubuntu中安装SFML?

我下载了 SFML,然后将其所有标头复制到usr/local/include/中,并将其所有库复制到usr/local/lib/中。

我在桌面中有一个名为main.cpp的文件,我想编译它。

首先我这样做了:-

g++ -c main.cpp
Run Code Online (Sandbox Code Playgroud)

之后,当我尝试这样做时:-

g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system
Run Code Online (Sandbox Code Playgroud)

它给了我:-

/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_action@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_list_entry_get_next@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_unref@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_list_entry_get_name@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_enumerate_unref@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_unref@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_new@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_receive_device@LIBUDEV_183'
/usr/local/lib/libsfml-graphics.so: undefined reference to `std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_devnode@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_enable_receiving@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined …
Run Code Online (Sandbox Code Playgroud)

c++ linux installation ubuntu sfml

2
推荐指数
1
解决办法
1万
查看次数

JPanel没有响应keylistener

我试图制作一个JPanel,它会显示你按下每个导航键的次数,但它只显示4个零.

//在keyPressed()方法中,我将以下代码相应地处理按键:

public void keyPressed(KeyEvent event) 
{
    if(event.getKeyCode()==KeyEvent.VK_LEFT)
    left++;             
    else if(event.getKeyCode()==KeyEvent.VK_RIGHT)
    right++;            
    else if(event.getKeyCode()==KeyEvent.VK_UP)
    up++;               
    else if(event.getKeyCode()==KeyEvent.VK_DOWN)
    down++;
}
Run Code Online (Sandbox Code Playgroud)

//用于在JPanel上绘制计数的paint方法

public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    g.drawString ( Integer.toString(left),   100, 100 );
    g.drawString ( Integer.toString(right),  200, 100 );
    g.drawString ( Integer.toString(up),     100, 200 );
    g.drawString ( Integer.toString(down),   200, 200 );    
}
Run Code Online (Sandbox Code Playgroud)

keylistener

1
推荐指数
2
解决办法
119
查看次数

如果我在c ++中的方法中创建对象,它们会在函数返回时自动销毁,还是会继续占用内存?

void Player::draw(sf::RenderTarget& target, sf::RenderStates states) const
{

    sf::CircleShape c0;
    c0.setFillColor(sf::Color::Red);
    c0.setPointCount(4);
    c0.setRadius(1);
    c0.setPosition(sf::Vector2f(point[0].x, point[0].y));

    sf::CircleShape c1;
    c1.setFillColor(sf::Color::Red);
    c1.setPointCount(4);
    c1.setRadius(1);
    c1.setPosition(sf::Vector2f(point[1].x, point[1].y));

    target.draw(c0);
    target.draw(c1);
}
Run Code Online (Sandbox Code Playgroud)

我正在学习c ++.正如您所看到的,我在draw方法中创建CircleShape对象,该方法在一秒钟内运行60次.我在网上读到c ++中的对象存储在堆内存中,因此需要手动释放.当draw方法返回时,对象c0和c1是否被破坏并释放内存,还是会继续占用堆内存?

c++

1
推荐指数
1
解决办法
66
查看次数

"声明不声明任何内容"错误的原因是什么?

如果你有一个名为'Rock'的课程,你可以这样做: -

int main()
{
    Rock;
}
Run Code Online (Sandbox Code Playgroud)

你为什么得到"声明没有声明什么"的错误?

它不应该只调用默认构造函数并在那一刻创建对象吗?

当然,我将无法使用该对象,当它超出函数范围时会被破坏,但为什么不创建它呢?

在其他一些编程语言中,如java,变量不是强制性的.你可以做一些像新摇滚()的事情,你会没事的.

我知道这没什么用,但我想澄清我的困惑.

c++

1
推荐指数
1
解决办法
2632
查看次数

为什么构造函数在我的程序中调用了两次?

以下程序中World对象的构造函数被调用两次.

头文件:

#ifndef GAME_H
#define GAME_H
#include "World.h"

class Game
{
    public:
        Game();
    private:
        World world;
};
Run Code Online (Sandbox Code Playgroud)

cpp文件: -

#include "Game.h"

Game::Game()
{
    world = World();
}
Run Code Online (Sandbox Code Playgroud)

世界级的头文件: -

#ifndef WORLD_H
#define WORLD_H

class World
{
    public:
        World();
};
#endif // WORLD_H
Run Code Online (Sandbox Code Playgroud)

世界级的cpp文件: -

#include "World.h"
#include <iostream>

using namespace std;

World::World()
{
    cout<<"i am going to print twice"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
310
查看次数