0
저는 C#으로 2D 게임을 개발하고 싶었습니다. 자, 전에 이미 Java에서이 작업을 수행했지만 비슷한 구문을 사용하여 아무것도 찾을 수 없습니다.C# 2D 게임 엔진 개발
다음과 같이 내 자바 게임 엔진의 주요 게임 클래스 작동 :
package Main;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import GameState.GameStateManager;
public class GamePanel extends JPanel implements Runnable, KeyListener
{
//Dimensions
public static final int HEIGHT = 240;
public static final int WIDTH = 320;//(HEIGHT/9)*16;//360
public static final int SCALE = 3;
//Game Thread
private Thread thread;
private boolean running;
private int FPS = 60;
private long targetTime = 1000/FPS;
//Image
private BufferedImage image;
private Graphics2D g;
//Game State Manager
private GameStateManager gsm;
public GamePanel()
{
super();
setPreferredSize(new Dimension(WIDTH*SCALE,HEIGHT*SCALE));
setFocusable(true);
requestFocus();
}
public void addNotify()
{
super.addNotify();
if(thread == null)
{
thread = new Thread(this);
addKeyListener(this);
thread.start();
}
}
private void init()
{
image = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
g = (Graphics2D)image.getGraphics();
running = true;
gsm = new GameStateManager();
}
public void run()
{
init();
long start;
long elapsed;
long wait;
//Game loop
while(running)
{
start = System.nanoTime();
update();
draw();
drawToScreen();
elapsed = System.nanoTime() - start;
wait = targetTime - elapsed/1000000;
if(wait <= 0)
{
wait = 1;
}
try
{
Thread.sleep(wait);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
private void update()
{
gsm.update();
}
private void draw()
{
gsm.draw(g);
}
private void drawToScreen()
{
Graphics g2 = getGraphics();
g2.drawImage(image, 0, 0, WIDTH*SCALE, HEIGHT*SCALE, null);
g2.dispose();
}
public void keyTyped(KeyEvent key){}
public void keyPressed(KeyEvent key)
{
gsm.keyPressed(key.getKeyCode());
}
public void keyReleased(KeyEvent key)
{
gsm.keyReleased(key.getKeyCode());
}
}
밖에 엔진 개발에 어떤 괜찮은 자습서가 있습니까? 그리고 거기에 C#에서 위의 코드를 구현할 수있는 방법이 무엇입니까? 미리 만들어진 엔진을 사용하지 않으려합니다.
미리 감사드립니다.
가능하면 미리 만든 게임 엔진을 사용하지 않는 것이 좋습니다. – GenericMadman
@GenericMadman 미리 만들어진 게임 엔진이 아니므로 엔진을 직접 작성할 수있는 프레임 워크와 비슷합니다. –
대단히 감사합니다. :) – GenericMadman