小游戏源代码(c++编程小游戏代码)

本文目录
- c++编程小游戏代码
- 急求俄罗斯方块等小游戏的源代码
- 游戏源代码有什么用
- 用C++编写的小游戏源代码
- 跪求JAVA编写的小游戏源代码
- 基于Java语言的打地鼠的小游戏源代码是什么
- 跪求C++大神,只需要写一个小游戏源代码,事成有现金酬谢
c++编程小游戏代码
以下是贪吃蛇源代码:
#include《iostream.h》
#include《windows.h》
#include《time.h》
#include《stdlib.h》
#include《conio.h》
#define N 21
void gotoxy(int x,int y)//位置函数{
COORD pos;
pos.X=2*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void color(int a)//颜色函数{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void init(int apple)//初始化函数(初始化围墙、显示信息、苹果)
{
int i,j;//初始化围墙
int wall={{0}};
for(i=1;i《=N;i++)
{
for(j=1;j《=N;j++)
wall=1;
}
color(11);
for(i=0;i《N+2;i++)
{
for(j=0;j《N+2;j++)
{
if(wall)
cout《《"■";
else cout《《"□" ;
}
cout《《endl;
}
gotoxy(N+3,1);//显示信息
color(20);
cout《《"按 W S A D 移动方向"《《endl;
gotoxy(N+3,2);
color(20);
cout《《"按任意键暂停"《《endl;
gotoxy(N+3,3);
color(20);
cout《《"得分:"《《endl;
apple=rand()%N+1;//苹果
apple=rand()%N+1;
gotoxy(apple);
color(12);
cout《《"●"《《endl;
}
int main()
{
int i,j;
int** snake=NULL;
int apple;
int score=0;
int tail;
int len=3;
char ch=’p’;
srand((unsigned)time(NULL));
init(apple);
snake=(int**)realloc(snake,sizeof(int*)*len);
for(i=0;i《len;i++)
snake=(int*)malloc(sizeof(int)*2);
for(i=0;i《len;i++)
{
snake=N/2;
snake=N/2+i;
gotoxy(snake);
color(14);
cout《《"★"《《endl;
}
while(1)//进入消息循环
{
tail;
tail;
gotoxy(tail);
color(11);
cout《《"■"《《endl;
for(i=len-1;i》0;i--)
{
snake;
snake;
gotoxy(snake);
color(14);
cout《《"★"《《endl;
}
if(kbhit())
{
gotoxy(0,N+2);
ch=getche();
}
switch(ch)
{
case ’w’:snake--;break;
case ’s’:snake++;break;
case ’a’:snake--;break;
case ’d’:snake++;break;
default: break;
}
gotoxy(snake);
color(14);
cout《《"★"《《endl;
Sleep(abs(200-0.5*score));
if(snake)//吃掉苹果后蛇分数加1,蛇长加1
{
score++;
len++;
snake=(int**)realloc(snake,sizeof(int*)*len);
snake=(int*)malloc(sizeof(int)*2);
apple=rand()%N+1;
apple=rand()%N+1;
gotoxy(apple);
color(12);
cout《《"●"《《endl;
gotoxy(N+5,3);
color(20);
cout《《score《《endl;
}
if(snake==N)//撞到围墙后失败
{
gotoxy(N/2,N/2);
color(30);
cout《《"失败!!!"《《endl;
for(i=0;i《len;i++)
free(snake);
Sleep(INFINITE);
exit(0);
}
}
return 0;
}
急求俄罗斯方块等小游戏的源代码
俄罗斯方块——java源代码提供
import java.awt.*;
import java.awt.event.*;
//俄罗斯方块类
public class ERS_Block extends Frame{
public static boolean isPlay=false;
public static int level=1,score=0;
public static TextField scoreField,levelField;
public static MyTimer timer;
GameCanvas gameScr;
public static void main(String argus){
ERS_Block ers = new ERS_Block("俄罗斯方块游戏 V1.0 Author:Vincent");
WindowListener win_listener = new WinListener();
ers.addWindowListener(win_listener);
}
//俄罗斯方块类的构造方法
ERS_Block(String title){
super(title);
setSize(600,480);
setLayout(new GridLayout(1,2));
gameScr = new GameCanvas();
gameScr.addKeyListener(gameScr);
timer = new MyTimer(gameScr);
timer.setDaemon(true);
timer.start();
timer.suspend();
add(gameScr);
Panel rightScr = new Panel();
rightScr.setLayout(new GridLayout(2,1,0,30));
rightScr.setSize(120,500);
add(rightScr);
//右边信息窗体的布局
MyPanel infoScr = new MyPanel();
infoScr.setLayout(new GridLayout(4,1,0,5));
infoScr.setSize(120,300);
rightScr.add(infoScr);
//定义标签和初始值
Label scorep = new Label("分数:",Label.LEFT);
Label levelp = new Label("级数:",Label.LEFT);
scoreField = new TextField(8);
levelField = new TextField(8);
scoreField.setEditable(false);
levelField.setEditable(false);
infoScr.add(scorep);
infoScr.add(scoreField);
infoScr.add(levelp);
infoScr.add(levelField);
scorep.setSize(new Dimension(20,60));
scoreField.setSize(new Dimension(20,60));
levelp.setSize(new Dimension(20,60));
levelField.setSize(new Dimension(20,60));
scoreField.setText("0");
levelField.setText("1");
//右边控制按钮窗体的布局
MyPanel controlScr = new MyPanel();
controlScr.setLayout(new GridLayout(5,1,0,5));
rightScr.add(controlScr);
//定义按钮play
Button play_b = new Button("开始游戏");
play_b.setSize(new Dimension(50,200));
play_b.addActionListener(new Command(Command.button_play,gameScr));
//定义按钮Level UP
Button level_up_b = new Button("提高级数");
level_up_b.setSize(new Dimension(50,200));
level_up_b.addActionListener(new Command(Command.button_levelup,gameScr));
//定义按钮Level Down
Button level_down_b =new Button("降低级数");
level_down_b.setSize(new Dimension(50,200));
level_down_b.addActionListener(new Command(Command.button_leveldown,gameScr));
//定义按钮Level Pause
Button pause_b =new Button("游戏暂停");
pause_b.setSize(new Dimension(50,200));
pause_b.addActionListener(new Command(Command.button_pause,gameScr));
//定义按钮Quit
Button quit_b = new Button("退出游戏");
quit_b.setSize(new Dimension(50,200));
quit_b.addActionListener(new Command(Command.button_quit,gameScr));
controlScr.add(play_b);
controlScr.add(level_up_b);
controlScr.add(level_down_b);
controlScr.add(pause_b);
controlScr.add(quit_b);
setVisible(true);
gameScr.requestFocus();
}
}
//重写MyPanel类,使Panel的四周留空间
class MyPanel extends Panel{
public Insets getInsets(){
return new Insets(30,50,30,50);
}
}
//游戏画布类
class GameCanvas extends Canvas implements KeyListener{
final int unitSize = 30; //小方块边长
int rowNum; //正方格的行数
int columnNum; //正方格的列数
int maxAllowRowNum; //允许有多少行未削
int blockInitRow; //新出现块的起始行坐标
int blockInitCol; //新出现块的起始列坐标
int scrArr; //屏幕数组
Block b; //对方快的引用
//画布类的构造方法
GameCanvas(){
rowNum = 15;
columnNum = 10;
maxAllowRowNum = rowNum - 2;
b = new Block(this);
blockInitRow = rowNum - 1;
blockInitCol = columnNum/2 - 2;
scrArr = new int ;
}
//初始化屏幕,并将屏幕数组清零的方法
void initScr(){
for(int i=0;i《rowNum;i++)
for (int j=0; j《columnNum;j++)
scrArr=0;
b.reset();
repaint();
}
//重新刷新画布方法
public void paint(Graphics g){
for(int i = 0; i 《 rowNum; i++)
for(int j = 0; j 《 columnNum; j++)
drawUnit(i,j,scrArr);
}
//画方块的方法
public void drawUnit(int row,int col,int type){
scrArr = type;
Graphics g = getGraphics();
tch(type){ //表示画方快的方法
case 0: g.setColor(Color.black);break; //以背景为颜色画
case 1: g.setColor(Color.blue);break; //画正在下落的方块
case 2: g.setColor(Color.magenta);break; //画已经落下的方法
}
g.fill3DRect(col*unitSize,getSize().height-(row+1)*unitSize,unitSize,unitSize,true);
g.dispose();
}
public Block getBlock(){
return b; //返回block实例的引用
}
//返回屏幕数组中(row,col)位置的属性值
public int getScrArrXY(int row,int col){
if (row 《 0 || row 》= rowNum || col 《 0 || col 》= columnNum)
return(-1);
else
return(scrArr);
}
//返回新块的初始行坐标方法
public int getInitRow(){
return(blockInitRow); //返回新块的初始行坐标
}
//返回新块的初始列坐标方法
public int getInitCol(){
return(blockInitCol); //返回新块的初始列坐标
}
//满行删除方法
void deleteFullLine(){
int full_line_num = 0;
int k = 0;
for (int i=0;i《rowNum;i++){
boolean isfull = true;
L1:for(int j=0;j《columnNum;j++)
if(scrArr == 0){
k++;
isfull = false;
break L1;
}
if(isfull) full_line_num++;
if(k!=0 && k-1!=i && !isfull)
for(int j = 0; j 《 columnNum; j++){
if (scrArr == 0)
drawUnit(k-1,j,0);
else
drawUnit(k-1,j,2);
scrArr;
}
}
for(int i = k-1 ;i 《 rowNum; i++){
for(int j = 0; j 《 columnNum; j++){
drawUnit(i,j,0);
scrArr=0;
}
}
ERS_Block.score += full_line_num;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
//判断游戏是否结束方法
boolean isGameEnd(){
for (int col = 0 ; col 《columnNum; col ++){
if(scrArr !=0)
return true;
}
return false;
}
public void keyTyped(KeyEvent e){
}
public void keyReleased(KeyEvent e){
}
//处理键盘输入的方法
public void keyPressed(KeyEvent e){
if(!ERS_Block.isPlay)
return;
tch(e.getKeyCode()){
case KeyEvent.VK_DOWN:b.fallDown();break;
case KeyEvent.VK_LEFT:b.leftMove();break;
case KeyEvent.VK_RIGHT:b.rightMove();break;
case KeyEvent.VK_SPACE:b.leftTurn();break;
}
}
}
//处理控制类
class Command implements ActionListener{
static final int button_play = 1; //给按钮分配编号
static final int button_levelup = 2;
static final int button_leveldown = 3;
static final int button_quit = 4;
static final int button_pause = 5;
static boolean pause_resume = true;
int curButton; //当前按钮
GameCanvas scr;
//控制按钮类的构造方法
Command(int button,GameCanvas scr){
curButton = button;
this.scr=scr;
}
//按钮执行方法
public void actionPerformed (ActionEvent e){
tch(curButton){
case button_play:if(!ERS_Block.isPlay){
scr.initScr();
ERS_Block.isPlay = true;
ERS_Block.score = 0;
ERS_Block.scoreField.setText("0");
ERS_Block.timer.resume();
}
scr.requestFocus();
break;
case button_levelup:if(ERS_Block.level 《 10){
ERS_Block.level++;
ERS_Block.levelField.setText(""+ERS_Block.level);
ERS_Block.score = 0;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
scr.requestFocus();
break;
case button_leveldown:if(ERS_Block.level 》 1){
ERS_Block.level--;
ERS_Block.levelField.setText(""+ERS_Block.level);
ERS_Block.score = 0;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
scr.requestFocus();
break;
case button_pause:if(pause_resume){
ERS_Block.timer.suspend();
pause_resume = false;
}else{
ERS_Block.timer.resume();
pause_resume = true;
}
scr.requestFocus();
break;
case button_quit:System.exit(0);
}
}
}
//方块类
class Block {
static int pattern = {
{0x0f00,0x4444,0x0f00,0x4444},//用十六进至表示,本行表示长条四种状态
{0x04e0,0x0464,0x00e4,0x04c4},
{0x4620,0x6c00,0x4620,0x6c00},
{0x2640,0xc600,0x2640,0xc600},
{0x6220,0x1700,0x2230,0x0740},
{0x6440,0x0e20,0x44c0,0x8e00},
{0x0660,0x0660,0x0660,0x0660}
};
int blockType; //块的模式号(0-6)
int turnState; //块的翻转状态(0-3)
int blockState; //快的下落状态
int row,col; //块在画布上的坐标
GameCanvas scr;
//块类的构造方法
Block(GameCanvas scr){
this.scr = scr;
blockType = (int)(Math.random() * 1000)%7;
turnState = (int)(Math.random() * 1000)%4;
blockState = 1;
row = scr.getInitRow();
col = scr.getInitCol();
}
//重新初始化块,并显示新块
public void reset(){
blockType = (int)(Math.random() * 1000)%7;
turnState = (int)(Math.random() * 1000)%4;
blockState = 1;
row = scr.getInitRow();
col = scr.getInitCol();
dispBlock(1);
}
//实现“块”翻转的方法
public void leftTurn(){
if(assertValid(blockType,(turnState + 1)%4,row,col)){
dispBlock(0);
turnState = (turnState + 1)%4;
dispBlock(1);
}
}
//实现“块”的左移的方法
public void leftMove(){
if(assertValid(blockType,turnState,row,col-1)){
dispBlock(0);
col--;
dispBlock(1);
}
}
//实现块的右移
public void rightMove(){
if(assertValid(blockType,turnState,row,col+1)){
dispBlock(0);
col++;
dispBlock(1);
}
}
//实现块落下的操作的方法
public boolean fallDown(){
if(blockState == 2)
return(false);
if(assertValid(blockType,turnState,row-1,col)){
dispBlock(0);
row--;
dispBlock(1);
return(true);
}else{
blockState = 2;
dispBlock(2);
return(false);
}
}
//判断是否正确的方法
boolean assertValid(int t,int s,int row,int col){
int k = 0x8000;
for(int i = 0; i 《 4; i++){
for(int j = 0; j 《 4; j++){
if((int)(pattern&k) != 0){
int temp = scr.getScrArrXY(row-i,col+j);
if (temp《0||temp==2)
return false;
}
k = k 》》 1;
}
}
return true;
}
//同步显示的方法
public synchronized void dispBlock(int s){
int k = 0x8000;
for (int i = 0; i 《 4; i++){
for(int j = 0; j 《 4; j++){
if(((int)pattern&k) != 0){
scr.drawUnit(row-i,col+j,s);
}
k=k》》1;
}
}
}
}
//定时线程
class MyTimer extends Thread{
GameCanvas scr;
public MyTimer(GameCanvas scr){
this.scr = scr;
}
public void run(){
while(true){
try{
sleep((10-ERS_Block.level + 1)*100);
}
catch(InterruptedException e){}
if(!scr.getBlock().fallDown()){
scr.deleteFullLine();
if(scr.isGameEnd()){
ERS_Block.isPlay = false;
suspend();
}else
scr.getBlock().reset();
}
}
}
}
class WinListener extends WindowAdapter{
public void windowClosing (WindowEvent l){
System.exit(0);
}
}
游戏源代码有什么用
问题一:源代码在游戏中的作用 网络游戏源代码就是游戏的基础,在外行人眼里是无数行的英文和数字,其实就是一组程序。
作用当然是开发游戏啦。
手上拥有了源代码就可以制作游戏,当然如果你啥都不改,那功能就和原来的游戏没什么两样。
现在网上你可以搜索一下网络游戏的源代码还是非常多的,但是大多数都是不完整的,也就是说你即便得到了也无法用。
另外只要这款游戏是国产的,你如果一模一样也不行,因为违反版权。
所以就算你拿到了源代码,你也要有完整的美术资源,需要让程序贴图替换上去,达到视觉上不一样的效果。世界背景和故事都要换,所有这些的成本当然不是一般的高。
好吧,即便你搞好了,那接下来你还要运营吧,运营的成本就更高了。
问题二:游戏代码到底有什么用,详细一点 5分 游戏代码吗?代码并不是什么很神秘的东西,你把编程语言的基础学好了,什么都会知道的了。
问题三:源代码怎么用的啊??有的游戏给 有的程序个给的那个 不知道你玩的啥游戏,但是看样子估计是c++代码,我英文学的不好
从英文描述中我猜测这是v c++的代码,“”在代码中表示注释,前三行是注释,其大意如下:
stdafx.cpp :源文件,包括刚才的标准单元?
fixyou.pch将是预编译的标题
stdafx.obj将包含预编译的类型信息
“cpp”明显是c++源码文件的缩写名,而最后一行是头文件。
所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。
预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。
编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include stdafx.h前的代码都是预编译的,它跳过#include stdafx. h指令,使用projectname.pch编译这条指令之后的所有代码。
因此,所有的CPP实现文件第一条语句都是:#include stdafx.h。
其实我学的pascal,所以对c++了解的少,如果你真的想学会他,还是自己找几本c++的书学一下,这样才能“使用”代码得心应手。
问题四:游戏源代码怎么使用 楼上请不要那样你难道没有初学的时候吗??这是一个欲编译头文件 按例说只是源代码的非常小的一部分你可以用Visual Studio 2005打开
问题五:手机游戏源代码是什么,怎么使用 不知道你玩的啥游戏,但是看样子估计是c++代码,我英文学的不好
从英文描述中我猜测这是v c++的代码,“”在代码中表示注释,前三行是注释,其大意如下:
stdafx.cpp :源文件,包括刚才的标准单元?
fixyou.pch将是预编译的标题
stdafx.obj将包含预编译的类型信息
“cpp”明显是c++源码文件的缩写名,而最后一行是头文件。
所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样快编译速度,节省时间。
预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。
编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include stdafx.h前的代码都是预编译的,它跳过#include stdafx. h指令,使用projectname.pch编译这条指令之后的所有代码。
因此,所有的CPP实现文件第一条语句都是:#include stdafx.h。
其实我学的pascal,所以对c++了解的少,如果你真的想学会他,还是自己找几本c++的书学一下,这样才能“使用”代码得心应手。
问题六:游戏源码一般都是用什么语言写的? 编写单机 PC/主机游戏现在都是 C++ 加上一个脚本语言(比如 Lua,这地方不需要脚本引擎多么高性能,够用就好)。游戏的架构是引擎 + 游戏逻辑,两者代码量是引擎远远大于游戏逻辑。商业游戏往往引擎是重用多于自研,所以那些大型游戏的代码也不是全部都是一行一行敲出来的――很可能其中许多内容是买来的。
网游服务端则一般是自研,这个真是一行一行敲了。网游 EVE 的服务器完全是照着超算的标准修的,算法也完全是超算的算法。编写单机 PC/主机游戏现在都是 C++ 加上一个脚本语言(比如 Lua,这地方不需要脚本引擎多么高性能,够用就好)。游戏的架构是引擎 + 游戏逻辑,两者代码量是引擎远远大于游戏逻辑。商业游戏往往引擎是重用多于自研,所以那些大型游戏的代码也不是全部都是一行一行敲出来的――很可能其中许多内容是买来的。
问题七:我有C++一个游戏的源代码,但是要怎么运行?
问题八:c语言编写的小游戏源代码在什么环境下可以运行 如果源代码埂有.C(或者.cpp)和.h类型的文件,你可以尝试用TC或者BC打开后编译运行;
如果源代码还包括.dsw或者.dsp类型的文件,你可以试试用VC6或VC++.NET打开后编译运行。
问题九:C++做一个小游戏,有源代码的最好,谢谢 #include
#include
#include
#include
#include
#include 时间 文件
#include
#define random(x)(rand()%x)
using namespace std;
void thunder(int Dif,int Row,int Column,char *USer)
{
int r,c,alls={0};
srand((int)time(0));
for(r=1;r(*||数字) 的个数 赢的时候停止循环)
for(c=1;c》
问题十:源代码在游戏中的作用 网络游戏源代码就是游戏的基础,在外行人眼里是无数行的英文和数字,其实就是一组程序。
作用当然是开发游戏啦。
手上拥有了源代码就可以制作游戏,当然如果你啥都不改,那功能就和原来的游戏没什么两样。
现在网上你可以搜索一下网络游戏的源代码还是非常多的,但是大多数都是不完整的,也就是说你即便得到了也无法用。
另外只要这款游戏是国产的,你如果一模一样也不行,因为违反版权。
所以就算你拿到了源代码,你也要有完整的美术资源,需要让程序贴图替换上去,达到视觉上不一样的效果。世界背景和故事都要换,所有这些的成本当然不是一般的高。
好吧,即便你搞好了,那接下来你还要运营吧,运营的成本就更高了。
用C++编写的小游戏源代码
五子棋的代码:
#include《iostream》
#include《stdio.h》
#include《stdlib.h》
#include 《time.h》
using namespace std;
const int N=15; //15*15的棋盘
const char ChessBoardflag = ’ ’; //棋盘标志
const char flag1=’o’; //玩家1或电脑的棋子标志
const char flag2=’X’; //玩家2的棋子标志
typedef struct Coordinate //坐标类
{
int x; //代表行
int y; //代表列
}Coordinate;
class GoBang //五子棋类
{
public:
GoBang() //初始化
{
InitChessBoard();
}
void Play() //下棋
{
Coordinate Pos1; // 玩家1或电脑
Coordinate Pos2; //玩家2
int n = 0;
while (1)
{
int mode = ChoiceMode();
while (1)
{
if (mode == 1) //电脑vs玩家
{
ComputerChess(Pos1,flag1); // 电脑下棋
if (GetVictory(Pos1, 0, flag1) == 1) //0表示电脑,真表示获胜
break;
PlayChess(Pos2, 2, flag2); //玩家2下棋
if (GetVictory(Pos2, 2, flag2)) //2表示玩家2
break;
}
else //玩家1vs玩家2
{
PlayChess(Pos1, 1, flag1); // 玩家1下棋
if (GetVictory(Pos1, 1, flag1)) //1表示玩家1
break;
PlayChess(Pos2, 2, flag2); //玩家2下棋
if (GetVictory(Pos2, 2, flag2)) //2表示玩家2
break;
}
}
cout 《《 "***再来一局***" 《《 endl;
cout 《《 "y or n :";
char c = ’y’;
cin 》》 c;
if (c == ’n’)
break;
}
}
protected:
int ChoiceMode() //选择模式
{
int i = 0;
system("cls"); //系统调用,清屏
InitChessBoard(); //重新初始化棋盘
cout 《《 "***0、退出 1、电脑vs玩家 2、玩家vs玩家***" 《《 endl;
while (1)
{
cout 《《 "请选择:";
cin 》》 i;
if (i == 0) //选择0退出
exit(1);
if (i == 1 || i == 2)
return i;
cout 《《 "输入不合法" 《《 endl;
}
}
void InitChessBoard() //初始化棋盘
{
for (int i = 0; i 《 N + 1; ++i)
{
for (int j = 0; j 《 N + 1; ++j)
{
_ChessBoard = ChessBoardflag;
}
}
}
void PrintChessBoard() //打印棋盘,这个函数可以自己调整
{
system("cls"); //系统调用,清空屏幕
for (int i = 0; i 《 N+1; ++i)
{
for (int j = 0; j 《 N+1; ++j)
{
if (i == 0) //打印列数字
{
if (j!=0)
printf("%d ", j);
else
printf(" ");
}
else if (j == 0) //打印行数字
printf("%2d ", i);
else
{
if (i 《 N+1)
{
printf("%c |",_ChessBoard);
}
}
}
cout 《《 endl;
cout 《《 " ";
for (int m = 0; m 《 N; m++)
{
printf("--|");
}
cout 《《 endl;
}
}
void PlayChess(Coordinate& pos, int player, int flag) //玩家下棋
{
PrintChessBoard(); //打印棋盘
while (1)
{
printf("玩家%d输入坐标:", player);
cin 》》 pos.x 》》 pos.y;
if (JudgeValue(pos) == 1) //坐标合法
break;
cout 《《 "坐标不合法,重新输入" 《《 endl;
}
_ChessBoard = flag;
}
void ComputerChess(Coordinate& pos, char flag) //电脑下棋
{
PrintChessBoard(); //打印棋盘
int x = 0;
int y = 0;
while (1)
{
x = (rand() % N) + 1; //产生1~N的随机数
srand((unsigned int) time(NULL));
y = (rand() % N) + 1; //产生1~N的随机数
srand((unsigned int) time(NULL));
if (_ChessBoard == ChessBoardflag) //如果这个位置是空的,也就是没有棋子
break;
}
pos.x = x;
pos.y = y;
_ChessBoard = flag;
}
int JudgeValue(const Coordinate& pos) //判断输入坐标是不是合法
{
if (pos.x 》 0 && pos.x 《= N&&pos.y 》 0 && pos.y 《= N)
{
if (_ChessBoard == ChessBoardflag)
{
return 1; //合法
}
}
return 0; //非法
}
int JudgeVictory(Coordinate pos, char flag) //判断有没有人胜负(底层判断)
{
int begin = 0;
int end = 0;
int begin1 = 0;
int end1 = 0;
//判断行是否满足条件
(pos.y - 4) 》 0 ? begin = (pos.y - 4) : begin = 1;
(pos.y + 4) 》N ? end = N : end = (pos.y + 4);
for (int i = pos.x, j = begin; j + 4 《= end; j++)
{
if (_ChessBoard == flag&&
_ChessBoard == flag&&
_ChessBoard == flag)
return 1;
}
//判断列是否满足条件
(pos.x - 4) 》 0 ? begin = (pos.x - 4) : begin = 1;
(pos.x + 4) 》 N ? end = N : end = (pos.x + 4);
for (int j = pos.y, i = begin; i + 4 《= end; i++)
{
if (_ChessBoard == flag&&
_ChessBoard == flag&&
_ChessBoard == flag)
return 1;
}
int len = 0;
//判断主对角线是否满足条件
pos.x 》 pos.y ? len = pos.y - 1 : len = pos.x - 1;
if (len 》 4)
len = 4;
begin = pos.x - len; //横坐标的起始位置
begin1 = pos.y - len; //纵坐标的起始位置
pos.x 》 pos.y ? len = (N - pos.x) : len = (N - pos.y);
if (len》4)
len = 4;
end = pos.x + len; //横坐标的结束位置
end1 = pos.y + len; //纵坐标的结束位置
for (int i = begin, j = begin1; (i + 4 《= end) && (j + 4 《= end1); ++i, ++j)
{
if (_ChessBoard == flag&&
_ChessBoard == flag&&
_ChessBoard == flag)
return 1;
}
//判断副对角线是否满足条件
(pos.x - 1) 》(N - pos.y) ? len = (N - pos.y) : len = pos.x - 1;
if (len 》 4)
len = 4;
begin = pos.x - len; //横坐标的起始位置
begin1 = pos.y + len; //纵坐标的起始位置
(N - pos.x) 》 (pos.y - 1) ? len = (pos.y - 1) : len = (N - pos.x);
if (len》4)
len = 4;
end = pos.x + len; //横坐标的结束位置
end1 = pos.y - len; //纵坐标的结束位置
for (int i = begin, j = begin1; (i + 4 《= end) && (j - 4 》= end1); ++i, --j)
{
if (_ChessBoard == flag&&
_ChessBoard == flag&&
_ChessBoard == flag)
return 1;
}
for (int i = 1; i 《 N + 1; ++i) //棋盘有没有下满
{
for (int j =1; j 《 N + 1; ++j)
{
if (_ChessBoard == ChessBoardflag)
return 0; //0表示棋盘没满
}
}
return -1; //和棋
}
bool GetVictory(Coordinate& pos, int player, int flag) //对JudgeVictory的一层封装,得到具体那个玩家获胜
{
int n = JudgeVictory(pos, flag); //判断有没有人获胜
if (n != 0) //有人获胜,0表示没有人获胜
{
PrintChessBoard();
if (n == 1) //有玩家赢棋
{
if (player == 0) //0表示电脑获胜,1表示玩家1,2表示玩家2
printf("***电脑获胜***\n");
else
printf("***恭喜玩家%d获胜***\n", player);
}
else
printf("***双方和棋***\n");
return true; //已经有人获胜
}
return false; //没有人获胜
}
private:
char _ChessBoard;
};
扩展资料:
设计思路
1、进行问题分析与设计,计划实现的功能为,开局选择人机或双人对战,确定之后比赛开始。
2、比赛结束后初始化棋盘,询问是否继续比赛或退出,后续可加入复盘、悔棋等功能。
3、整个过程中,涉及到了棋子和棋盘两种对象,同时要加上人机对弈时的AI对象,即涉及到三个对象。
跪求JAVA编写的小游戏源代码
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.*;
import java.util.*;
class Car{
Image img;
int x, y;
Dimension dim;
Car(Image img){
this.img=img;
}
Car(Image img, int x, int y){
this.img=img; this.x=x; this.y=y;
}
Car(Image img, int x, int y, Dimension dim){
this(img, x, y);
this.dim=dim;
}
void draw(Graphics g, ImageObserver observer){
g.drawImage(img, x, y, observer);
}
int getX(){ return x;}
int getY(){ return y;}
void setX(int x){this.x=x;}
void setY(int y){this.y=y;}
void setLocation(int x, int y){
this.x=x; this.y=y;
}
int getWidth(){ return img.getWidth(null);}
int getHeight(){ return img.getHeight(null);}
Rectangle2D getRectangle(){
return new Rectangle2D.Float(x, y, getWidth(), getHeight());
}
void move(int dx, int dy){
x+=dx;
y+=dy;
if(dim!=null){
if(x《0)x=0;
if(x+getWidth()》dim.getWidth())
x=(int)dim.getWidth()-getWidth();
}
}
boolean intersects(Car car){
return getRectangle().intersects(car.getRectangle());
}
boolean intersects(int x, int y){
return getRectangle().intersects(x, y, getWidth(), getHeight());
}
}
public class CarRace extends Applet implements KeyListener, Runnable{
Image buff;
Canvas screen;
Graphics2D gs, gb;
Car redCar;
Car;
Button bStart;
Thread game;
boolean loop=true;
Dimension dim=new Dimension(200, 300);
int road;
Random rnd=new Random();
public void init(){
prepareResource();
setBackground(Color.blue);
initScreen();
add(screen);
bStart=new Button("霸烙 矫累");
add(bStart);
bStart.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
screen.requestFocus();
if(!game.isAlive())
game.start();
}
});
}
void prepareResource(){
Image imgRed=getImage(getCodeBase(),"images/red_car.gif");
Image imgBlue=getImage(getCodeBase(),"images/blue_car.gif");
Image imgGreen=getImage(getCodeBase(),"images/green_car.gif");
MediaTracker mt=new MediaTracker(this);
try{
mt.addImage(imgRed, 0);
mt.addImage(imgBlue, 1);
mt.addImage(imgGreen, 2);
mt.waitForAll();
}catch(Exception e){}
buff=createImage((int)dim.getWidth(), (int)dim.getHeight());
gb=(Graphics2D)buff.getGraphics();
redCar=new Car(imgRed, 80,250, dim);
for(int i=0;i《10;i++){
enemy=new Car(imgBlue, 0, 0);
}
for(int i=10;i《enemy.length;i++){
enemy=new Car(imgGreen, 0, 0);
}
for(int i=0;i《enemy.length;i++){
setEnemy(i);
}
game=new Thread(this);
}
public void stop(){
loop=false;
}
public void run(){
while(loop){
drawScreen();
try{ Thread.sleep(50);}catch(Exception e){}
}
}
void initScreen(){
screen=new Canvas(){
public void paint(Graphics g){
if(gs==null){
gs=(Graphics2D)screen.getGraphics();
}
drawScreen();
}
};
screen.setSize(dim);
screen.addKeyListener(this);
}
void setEnemy(int en){
int x, y;
next:while(true){
x=rnd.nextInt((int)dim.getWidth()-enemy.getWidth());
y=-rnd.nextInt(5000)-200;
for(int j=0;j《enemy.length;j++){
if(j!=en && enemy.intersects(x, y))continue next;
}
enemy.setLocation(x, y);
break;
}
}
void check(Car en){
if(redCar.intersects(en)){
if(redCar.getX()》en.getX()){
en.move(-20, 0);
redCar.move(20, 0);
}
else{
en.move(20,0);
redCar.move(-20, 0);
}
}
}
synchronized void drawScreen(){
gb.clearRect(0, 0, (int)dim.getWidth(), (int)dim.getHeight());
gb.setPaint(new Color(100, 100, 100));
gb.fillRect(0, 0, (int)dim.getWidth(), (int)dim.getHeight());
drawRoad();
for(int i=0;i《enemy.length;i++){
enemy.move(0, 15);
enemy.draw(gb, screen);
if(enemy.getY()》dim.getHeight())
setEnemy(i);
check(enemy);
}
redCar.draw(gb, screen);
gs.drawImage(buff, 0,0, screen);
}
void drawRoad(){
road+=80;
gb.setPaint(Color.yellow);
gb.fillRect((int)dim.getWidth()/2, road,10,150);
if(road》=dim.getHeight())road=-150;
}
public void keyPressed(KeyEvent ke){
if(ke.getKeyCode()==KeyEvent.VK_LEFT){
redCar.move(-10,0);
}
else if(ke.getKeyCode()==KeyEvent.VK_RIGHT){
redCar.move(10,0);
}
}
public void keyReleased(KeyEvent ke){}
public void keyTyped(KeyEvent ke){}
}
这个是一个典型的Applet,文件名应该是CarRace.java,需要图片作为车子等等,本人也是别人给的,但是还要个.html文件来运行它,代码为:
《Applet code="CarRace.class" width=250 height=350 》
《/Applet》
请楼主采纳
基于Java语言的打地鼠的小游戏源代码是什么
public void mouseClicked(MouseEvent e){\x0d\x0a Object source=e.getSource(); //获取事件源,即地鼠标签\x0d\x0a if(source instanceof JLabel){ //如果事件是标签组件\x0d\x0a JLabel mouse=(JLabel)source; //强制转换为JLabel标签\x0d\x0a mouse.setIcon(null); //取消标签图标\x0d\x0a }\x0d\x0a }\x0d\x0a });\x0d\x0a this.getContentPane().add(mouses.setIcon(imgMouse); //为该标签添加地鼠图片\x0d\x0a }\x0d\x0a }catch(InterruptedException e){\x0d\x0a e.printStackTrace();\x0d\x0a }\x0d\x0a }\x0d\x0a }\x0d\x0a\x0d\x0a }
跪求C++大神,只需要写一个小游戏源代码,事成有现金酬谢
#include 《iostream》
using namespace std;
double shengmingli=2000;//定义主角初始生命力
int gongjili=150;//定义主角初始攻击力
int fangyuli=200;//定义主角初始防御力
int money=20;//定义主角初始金钱数量
bool guoguan;//定义是否通关判定
void wuqidian();//定义武器店函数
void yaodian();//定义药店函数
void guaiwu1();//定义小怪物函数
void guaiwu2();//定义大怪物函数
int main()
{
cout《《"欢迎你开始玩打怪物小游戏!\n";
cout《《"小镇\n";
cout《《"一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店"《《endl;
cout《《"和一家武器店。\n";
int xiaozhen;//定义选择项目
cout《《"1.去武器店"《《endl;
cout《《"2.去药品店"《《endl;
cout《《"3.去打小怪物"《《endl;
cout《《"4.去打大怪物"《《endl;
cout《《"5.退出游戏"《《endl;
cout《《"6.显示你的状态"《《endl;
cin》》xiaozhen;
while(xiaozhen!=5)//输入5时退出游戏
{
if(shengmingli《=0)//主角生命力小于等于0时游戏结束
{
cout《《"你死啦!"《《endl;
break;
}
if(guoguan)
{
cout《《"恭喜通关!"《《endl;
break;
}
if(xiaozhen==6)//输入6可检测自己的状态
{
cout《《"你的生命力:"《《shengmingli《《endl;
cout《《"你的攻击力:"《《gongjili《《endl;
cout《《"你的防御力:"《《fangyuli《《endl;
cout《《"你拥有的钱:"《《money《《endl;
}
else
switch(xiaozhen)
{
case 1 : wuqidian();break;
case 2 : yaodian();break;
case 3 : guaiwu1();break;
case 4 : guaiwu2();break;
default : cout《《"请不要乱选!"《《endl;break;
}
cin》》xiaozhen;
}
if(xiaozhen==5)
{
cout《《"正在退出游戏……"《《endl;
}
cin.get();
cin.get();
return 0;
}
void wuqidian()
{
cout《《"欢迎来到武器店!"《《endl;
cout《《"1、买小刀(1M加2攻击力)"《《endl;
cout《《"2、买短剑(2M加20攻击力)"《《endl;
cout《《"3、买大砍刀(5M加40攻击力)"《《endl;
cout《《"4、买双节棍(7M加60攻击力)"《《endl;
cout《《"5、买盾牌(2M加30防御力)"《《endl;
cout《《"6、买铠甲(5M加60防御力)"《《endl;
cout《《"7、离开武器店"《《endl;
int wuqidian;
cin》》wuqidian;
while(wuqidian!=7)//输入7时结束函数
{
switch(wuqidian)
{
case 1 : if(money《10)
cout《《"你的钱不够"《《endl;//钱不够时返回Flase
else
cout《《"购买成功!"《《endl;//钱足够时返回True
gongjili+=2;
money-=1;
break;
case 2 : if(money《80)
cout《《"你的钱不够"《《endl;
else
cout《《"购买成功!"《《endl;
gongjili+=20;
money-=80;
break;
case 3 : if(money《140)
cout《《"你的钱不够"《《endl;
else
cout《《"购买成功!"《《endl;
gongjili+=40;
money-=140;
break;
case 4 : if(money《200)
cout《《"你的钱不够"《《endl;
else
cout《《"购买成功!"《《endl;
gongjili+=60;
money-=200;
break;
case 5 : if(money《60)
cout《《"你的钱不够"《《endl;
else
cout《《"购买成功!"《《endl;
fangyuli+=30;
money-=60;
break;
fangyuli+=60;
money-=100;
break;
default : cout《《"无"《《endl;
break;
}
cin》》wuqidian;
}
if(wuqidian==7)
{ //返回main()主函数
cout《《"欢迎下次再来!"《《endl;
cout《《"欢迎你开始玩打怪物小游戏!\n";
cout《《"小镇\n";
cout《《"一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店"《《endl;
cout《《"和一家武器店。\n";
cout《《"1.去武器店"《《endl;
cout《《"2.去药品店"《《endl;
cout《《"3.去打小怪物"《《endl;
cout《《"4.去打大怪物"《《endl;
cout《《"5.退出游戏"《《endl;
cout《《"6.显示你的状态"《《endl;
}
}
/*
yaodian()的设置与wuqidian()相同,可参照阅读.
*/
void yaodian()
{
cout《《"欢迎来到药品店!"《《endl;
cout《《"1、买1号补血药(10M加200生命)"《《endl;
cout《《"2、买2号补血药(50M加1000生命力)"《《endl;
cout《《"3、买3号补血药(100M加2200生命力)"《《endl;
cout《《"4、离开药品店"《《endl;
int yaodian;
cin》》yaodian;
while(yaodian!=4)
{
switch(yaodian)
{
case 1 : if(money《10)
cout《《"你的钱不够"《《endl;
else
cout《《"购买成功!"《《endl;
shengmingli+=200;
money-=10;
break;
case 2 : if(money《50)
cout《《"你的钱不够"《《endl;
else
cout《《"购买成功!"《《endl;
shengmingli+=1000;
money-=50;
break;
case 3 : if(money《100)
cout《《"你的钱不够"《《endl;
else
cout《《"购买成功!"《《endl;
shengmingli+=2200;
money-=100;
break;
default : cout《《"无"《《endl;
break;
}
cin》》yaodian;
}
if(yaodian==4)
{
cout《《"欢迎下次再来!"《《endl;
cout《《"欢迎你开始玩打怪物小游戏!\n";
cout《《"小镇\n";
cout《《"一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店"《《endl;
cout《《"和一家武器店。\n";
cout《《"1.去武器店"《《endl;
cout《《"2.去药品店"《《endl;
cout《《"3.去打小怪物"《《endl;
cout《《"4.去打大怪物"《《endl;
cout《《"5.退出游戏"《《endl;
cout《《"6.显示你的状态"《《endl;
}
}
/*这里是两个战斗函数,使用指针来处理.避免造成内存崩溃.*/
void guaiwu1()
{
cout《《"开始与小怪物战斗!!!"《《endl;
double* g_shengmingli=new double;//定义怪物生命
int* g_gongjili=new int;//定义怪物攻击力
int* g_fangyuli=new int;//定义怪物防御力
int* g_money=new int;//定义怪物金钱
*g_shengmingli=100;
*g_gongjili=5;
*g_fangyuli=3;
*g_money=5;
double* tongji1=new double;//用来计算主角对怪物的杀伤
double* tongji2=new double;//用来计算怪物对主角的杀伤
*tongji1=0;
*tongji2=0;
int* huihe=new int;//定义回合数
*huihe=1;
cout《《"你开始对小怪物进行攻击!"《《endl;
int* xuanze=new int;
/*
攻击计算公式
杀伤=攻击力*2-防御力
玩家每回合可以选择攻击与逃跑
*/
while((*g_shengmingli)》0 && shengmingli》0 && (*xuanze)!=2)
{
cout《《"现在是"《《"第"《《*huihe《《"回合!"《《endl;
cout《《"请选择你的动作:\n";
cout《《"1、攻击\n2、逃跑\n";
cin》》*xuanze;
switch((*xuanze))
{
case 1 : cout《《"你对小怪物发动了攻击!"《《endl;
*g_shengmingli-=gongjili*2-(*g_fangyuli);
*tongji1=gongjili*2-(*g_fangyuli);
cout《《"你打掉了小怪物"《《*tongji1《《"的生命!"《《endl;
cout《《"小怪物还剩"《《(*g_shengmingli)-(*tongji1)《《"点生命"《《endl;
shengmingli-=(*g_gongjili)*2-fangyuli;
*tongji2=(*g_gongjili)*2-fangyuli;
cout《《"小怪物对你发动了攻击!"《《endl;
cout《《"小怪物打掉了你"《《*tongji2《《"的生命!"《《endl;
cout《《"你还剩"《《shengmingli-(*tongji2)《《"点生命"《《endl;break;
case 2 : cout《《"你决定逃跑!"《《endl;
cout《《"逃跑成功!"《《endl;continue;
default : cout《《"请不要乱选!"《《endl;
}
(*huihe)++;
}
if((*g_shengmingli)《=0)
{//杀死怪物后的返回
cout《《"小怪物被你杀死了!你真厉害!!!"《《endl;
money+=(*g_money);
cout《《"欢迎你开始玩打怪物小游戏!\n";
cout《《"小镇\n";
cout《《"一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店"《《endl;
cout《《"和一家武器店。\n";
cout《《"1.去武器店"《《endl;
cout《《"2.去药品店"《《endl;
cout《《"3.去打小怪物"《《endl;
cout《《"4.去打大怪物"《《endl;
cout《《"5.退出游戏"《《endl;
cout《《"6.显示你的状态"《《endl;
}
else
if(shengmingli《=0)
{//被怪物杀死后的返回
cout《《"你被小怪物杀死了!游戏结束!!!"《《endl;
}
else
if((*xuanze)==2)
{//逃跑的返回
cout《《"你逃回了小镇!"《《endl;
cout《《"欢迎你开始玩打怪物小游戏!\n";
cout《《"小镇\n";
cout《《"一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店"《《endl;
cout《《"和一家武器店。\n";
cout《《"1.去武器店"《《endl;
cout《《"2.去药品店"《《endl;
cout《《"3.去打小怪物"《《endl;
cout《《"4.去打大怪物"《《endl;
cout《《"5.退出游戏"《《endl;
cout《《"6.显示你的状态"《《endl;
}
delete g_shengmingli;
delete g_gongjili;
delete g_fangyuli;
delete g_money;
delete tongji1;
delete tongji2;
}
/*
设置均与void函数guaiwu1()相同,可参照上例阅读.
*/
void guaiwu2()
{
cout《《"开始与大怪物战斗!!!"《《endl;
double* g_shengmingli=new double;
int* g_gongjili=new int;
int* g_fangyuli=new int;
*g_shengmingli=3600;
*g_gongjili=500;
*g_fangyuli=500;
double* tongji1=new double;
double* tongji2=new double;
*tongji1=0;
*tongji2=0;
int* huihe=new int;
*huihe=1;
cout《《"你开始对大怪物进行攻击!"《《endl;
int* xuanze=new int;
while((*g_shengmingli)》0 && shengmingli》0 && (*xuanze)!=2)
{
cout《《"现在是"《《"第"《《*huihe《《"回合!"《《endl;
cout《《"请选择你的动作:\n";
cout《《"1、攻击\n2、逃跑\n";
cin》》*xuanze;
switch((*xuanze))
{
case 1 : cout《《"你对大怪物发动了攻击!"《《endl;
*g_shengmingli-=gongjili*2-(*g_fangyuli);
*tongji1=gongjili*2-(*g_fangyuli);
cout《《"你打掉了大怪物"《《*tongji1《《"的生命!"《《endl;
cout《《"大怪物还剩"《《(*g_shengmingli)-(*tongji1)《《"点生命"《《endl;
shengmingli-=(*g_gongjili)*2-fangyuli;
*tongji2=(*g_gongjili)*2-fangyuli;
cout《《"大怪物对你发动了攻击!"《《endl;
cout《《"大怪物打掉了你"《《*tongji2《《"的生命!"《《endl;
cout《《"你还剩"《《shengmingli-(*tongji2)《《"点生命"《《endl;break;
case 2 : cout《《"你决定逃跑!"《《endl;
cout《《"逃跑成功!"《《endl;continue;
default : cout《《"请不要乱选!"《《endl;
}
(*huihe)++;
}
if((*g_shengmingli)《=0)
{
cout《《"大怪物被你杀死了!你真厉害!!!"《《endl;
guoguan=true;
cout《《"欢迎你开始玩打怪物小游戏!\n";
cout《《"小镇\n";
cout《《"一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店"《《endl;
cout《《"和一家武器店。\n";
cout《《"1.去武器店"《《endl;
cout《《"2.去药品店"《《endl;
cout《《"3.去打小怪物"《《endl;
cout《《"4.去打大怪物"《《endl;
cout《《"5.退出游戏"《《endl;
cout《《"6.显示你的状态"《《endl;
}
else
if(shengmingli《=0)
{
cout《《"你被大怪物杀死了!游戏结束!!!"《《endl;
}
else
if((*xuanze)==2)
{
cout《《"你逃回了小镇!"《《endl;
cout《《"欢迎你开始玩打怪物小游戏!\n";
cout《《"小镇\n";
cout《《"一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店"《《endl;
cout《《"和一家武器店。\n";
cout《《"1.去武器店"《《endl;
cout《《"2.去药品店"《《endl;
cout《《"3.去打小怪物"《《endl;
cout《《"4.去打大怪物"《《endl;
cout《《"5.退出游戏"《《endl;
cout《《"6.显示你的状态"《《en;
}
delete g_shengmingli;
delete g_gongjili;
delete g_fangyuli;
delete tongji1;
delete tongji2;
}

更多文章:
血腥大地游戏下载(各位帮忙找一些好玩的单机游戏,100mb以下)
2026年8月22日 02:10
最终幻想勇气启示录 官网(最终幻想勇气启示录台服官网如何下载)
2026年3月16日 16:45
边境之旅官网(App Store年度精选游戏《边境之旅》首曝,前所未有的奇妙旅途)
2026年5月20日 12:10
《炉石传说》2021冬幕节奖励一览?冬幕节哪个任务奖励冰霜之力
2026年5月6日 17:30
古剑奇谭百里屠苏(古剑奇谭疑惑:百里屠苏是太子长琴的一半魂魄,那韩云溪呢,在他娘还没把焚祭煞气弄进他体内,那韩云溪不)
2026年6月3日 12:10
psp怪物猎人2g攻略(要怪物猎人2G 超超超详细重弩攻略!)
2026年5月8日 00:39














