導航:首頁 > 源碼編譯 > 網頁聯機游戲源碼

網頁聯機游戲源碼

發布時間:2025-09-08 08:25:37

⑴ 用java web小游戲源代碼。期末結課老師讓做,急用,謝了

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.JFrame;

@SuppressWarnings("serial")
public class MainClass extends JFrame {
ControlSnake control;

Toolkit kit;

Dimension dimen;

public static void main(String[] args) {
new MainClass("my snake");
}

public MainClass(String s) {
super(s);
control = new ControlSnake();
control.setFocusable(true);
kit = Toolkit.getDefaultToolkit();
dimen = kit.getScreenSize();

add(control);
setLayout(new BorderLayout());
setLocation(dimen.width / 3, dimen.height / 3);// dimen.width/3,dimen.height/3
setSize(FWIDTH, FHEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}

public static final int FWIDTH = 315;

public static final int FHEIGHT = 380;
}

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Random;

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

@SuppressWarnings("serial")
public class ControlSnake extends JPanel implements ActionListener {
Random rand;

ArrayList<Point> list, listBody;

String str, str1;

static boolean key;

int x, y, dx, dy, fx, fy, flag;

int snakeBody;

int speed;

public ControlSnake() {
snakeBody = 1;

str = "上下左右方向鍵控制 P鍵暫停...";
str1 = "現在的長度為:" + snakeBody;
key = true;
flag = 1;

speed = 700;
rand = new Random();
list = new ArrayList<Point>();
listBody = new ArrayList<Point>();

x = 5;
y = 5;
list.add(new Point(x, y));
listBody.add(list.get(0));

dx = 10;
dy = 0;

fx = rand.nextInt(30) * 10 + 5;// 2
fy = rand.nextInt(30) * 10 + 5;// 2

setBackground(Color.BLACK);
setSize(new Dimension(318, 380));

final Timer time = new Timer(speed, this);
time.start();

addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == 37) {
dx = -10;
dy = 0;
} else if (e.getKeyCode() == 38) {
dx = 0;
dy = -10;
} else if (e.getKeyCode() == 39) {
dx = 10;
dy = 0;
} else if (e.getKeyCode() == 40) {
dx = 0;
dy = 10;
} else if (e.getKeyCode() == 80) {
if (flag % 2 == 1) {
time.stop();
}
if (flag % 2 == 0) {
time.start();
}
flag++;
}
}
});

}

public void paint(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(0, 0, 400, 400);
g.setColor(Color.DARK_GRAY);
g.drawLine(3, 3, 305, 3);
g.drawLine(3, 3, 3, 305);
g.drawLine(305, 3, 305, 305);
g.drawLine(3, 305, 305, 305);
g.setColor(Color.PINK);

for (int i = 0; i < listBody.size(); i++) {
g.fillRect(listBody.get(i).x, listBody.get(i).y, 9, 9);
}
g.fillRect(x, y, 9, 9);
g.setColor(Color.ORANGE);
g.fillRect(fx, fy, 9, 9);

g.setColor(Color.DARK_GRAY);
str1 = "現在的長度為:" + snakeBody;
g.drawString(str, 10, 320);
g.drawString(str1, 10, 335);
}

public void actionPerformed(ActionEvent e) {
x += dx;
y += dy;
if (makeOut() == false) {
JOptionPane.showMessageDialog(null, "重新開始......");

speed = 700;

snakeBody = 1;

x = 5;
y = 5;

list.clear();
list.add(new Point(x, y));
listBody.clear();
listBody.add(list.get(0));

dx = 10;
dy = 0;

}
addPoint(x, y);
if (x == fx && y == fy) {
speed = (int) (speed * 0.8);//速度增加參數
if (speed < 200) {
speed = 100;
}
fx = rand.nextInt(30) * 10 + 5;// 2
fy = rand.nextInt(30) * 10 + 5;// 2
snakeBody++;// 2
} // 2
repaint();
}

public void addPoint(int xx, int yy) {
// 動態的記錄最新發生的50步以內的移動過的坐標
// 並畫出最新的snakeBody
if (list.size() < 100) {//蛇身長度最長為100
list.add(new Point(xx, yy));
} else {
list.remove(0);
list.add(new Point(xx, yy));
}
if (snakeBody == 1) {
listBody.remove(0);
listBody.add(0, list.get(list.size() - 1));
} else {
listBody.clear();
if (list.size() < snakeBody) {
for (int i = list.size() - 1; i > 0; i--) {
listBody.add(list.get(i));
}
} else {
for (int i = list.size() - 1; listBody.size() < snakeBody; i--) {
listBody.add(list.get(i));
}
}
}
}

public boolean makeOut() {
if ((x < 3 || y < 3) || (x > 305 || y > 305)) {
return false;
}
for (int i = 0; i < listBody.size() - 1; i++) {
for (int j = i + 1; j < listBody.size(); j++) {
if (listBody.get(i).equals(listBody.get(j))) {
return false;
}
}
}
return true;
}
}

/*貪吃蛇代碼*/

⑵ 紅警1游戲開源,代碼非常規范。網友:秀色可餐

EA 部分開源紅警啦!《命令與征服》系列中的《泰伯利亞的黎明》和《紅色警戒》的部分源碼在 GitHub 上開源了!鏈接:github.com/electronicar...

《命令與征服》系列是西木工作室的招牌作品。《紅色警戒》游戲是80後和90後的回憶。這款游戲中,玩家可以選擇聯機對戰,如CS和魔獸,回憶滿滿!

EA開源的是1996年發布的第一代《紅色警戒》。啟動程序名為RA95.exe。此次開源不涉及游戲素材和游戲引擎,只包括TiberianDawn.DLL和RedAlert.dll的源碼,允許Mod社區更好地改變游戲行為。6月5日,這兩款游戲發布重製版。

命令與征服系列游戲是C++實現,代碼非常規范,注釋清晰,讓人折服。下面展示的是飛行器找新降落點的函數,所有函數的功能、輸入、輸出、代碼修改歷史都寫的非常清楚。

網友驚嘆於紅警1代碼的規范性,評價為「賞心悅目」、「秀色可餐」、「太規范」。源碼觀摩學習地址:github.com/electronicar...

除了代碼的規范性,還有童鞋好奇「游戲截圖」那麼清晰的原因。答:因為是從官網扒的這2款的重製版高清圖。再貼幾張:

我是先玩紅警2,後來才玩紅警1。如果你也是紅警2的老玩家,下面這些英文,應該能自動腦補音效吧。歡迎老玩家答題。

閱讀全文

與網頁聯機游戲源碼相關的資料

熱點內容
什麼的命令填空 瀏覽:380
命令方塊做的坐騎模組 瀏覽:185
安卓rsa公鑰加密 瀏覽:762
北京免備案伺服器租用雲主機 瀏覽:569
100根香煙解壓 瀏覽:562
程序員最多可以干到多少歲 瀏覽:470
android主動回收內存 瀏覽:69
linux內存頁大小 瀏覽:298
開發框架的命令與語法 瀏覽:367
linux的ftp拷貝文件 瀏覽:895
山東威海程序員薪資 瀏覽:52
apache配置phpini 瀏覽:466
黃app視頻大全叫什麼 瀏覽:570
sd卡命令格式 瀏覽:482
PDF工整 瀏覽:662
為什麼我的手機每個app都沒有響應 瀏覽:272
256位雲伺服器 瀏覽:846
aloha防碰撞演算法程序 瀏覽:242
黑鯊相冊是哪個文件夾 瀏覽:644
網頁聯機游戲源碼 瀏覽:578