导航:首页 > 源码编译 > 网页联机游戏源码

网页联机游戏源码

发布时间: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
网页联机游戏源码 浏览:579