456四川麻将游戏可兑换游戏

麻将单机版_456小游戏
您所在的位置:&&
麻将单机版
类型:|大小:2M|语言:英文| 14:22:51更新
小游戏简介:
大家平常喜欢打麻将不,这是一款比较简单的网页版麻将小游戏,玩家都是电脑操作的,只有你是真人,玩的过程就是平常打麻将那样子玩,还在学习怎么打麻将的也可以来玩玩,输赢都可以的,比较休闲。
小游戏目标:
胡牌即可胜利。
如何开始:
游戏加载完毕后点击[新游戏] - [准备]开始游戏。
操作指南:
mouseleft打牌
鼠标左键打牌。
6分还算凑合
您可能还喜欢
玩过《麻将单机版》小游戏的用户还玩过
推荐小游戏
休闲小游戏排行榜亲棚棋牌下载-棋牌评测网
版权所有 盗版必究:
All Rights Reserved.game.c ( 文件浏览 )
/* $Header: /home/jcb/newmj/RCS/game.c,v 11.25
16:56:53 jcb Rel $
* Routines for manipulating game data structures.
/****************** COPYRIGHT STATEMENT **********************
* This file is Copyright (c) 2000 by J. C. Bradfield.
* Distribution and use is governed by the LICENCE file that *
* accompanies this file.
* The moral rights of the author are asserted.
***************** DISCLAIMER OF WARRANTY ********************
* This code is not warranted fit for any purpose. See the
* LICENCE file for further information.
*************************************************************/
static const char rcs_id[] = &$Header: /home/jcb/newmj/RCS/game.c,v 11.25
16:56:53 jcb Rel $&;
#include &game.h&
#include &sysdep.h&
/* This macro implements &tiles are equal, or one is unknown&.
It is used to check consistency when handling cmsgs */
#define teq(t1,t2) (t1 == t2 || !t1 || !t2)
/* next seat */
#define nextseat(s) ((s+1)%NUM_SEATS)
#define prevseat(s) ((s+3)%NUM_SEATS)
static void set_danger_flags(Game *g UNUSED, PlayerP p); /* at end */
static void mark_dangerous_discards(Game *g); /* at end */
/* game_id_to_player: return the player with the given id in the given game */
PlayerP game_id_to_player(Game *g,int id) {
for ( i = 0 ; i & NUM_SEATS ; i++ )
if ( g-&players[i]-&id == id ) return g-&players[i];
/* game_id_to_seat: convert an id to a seat position */
seats game_id_to_seat(Game *g, int id) {
for ( i = 0 ; i & NUM_SEATS ; i++ )
if ( g-&players[i]-&id == id )
return -1;
/* game_draw_tile: draw a tile from the game's live wall.
Return ErrorTile if no wall.
Tile game_draw_tile(Game *g) {
if ( g-&wall.live_used &= g-&wall.live_end ) return ErrorT
return g-&wall.tiles[g-&wall.live_used++];
/* game_peek_tile: return the next tile from the game's live wall.
Return ErrorTile if no wall.
Tile game_peek_tile(Game *g) {
if ( g-&wall.live_used &= g-&wall.live_end ) return ErrorT
return g-&wall.tiles[g-&wall.live_used];
/* game_draw_loose_tile: draw one of the loose tiles,
or ErrorTile if no wall
Tile game_draw_loose_tile(Game *g) {
if ( game_get_option_value(g,GODeadWall,NULL) && g-&wall.dead_end == g-&wall.live_end ) return ErrorT
adjust the wall */
g-&wall.dead_end--; /* end of dead wall moves back */
if ( game_get_option_value(g,GODeadWall,NULL) ) {
/* Now if we are in the !DeadWall16 (non-Millington case),
extend the dead wall if necessary. It's OK if this
goes past the beginn we'll get
an error on next live draw, which is how we understand it.
(The alternative would be to say there has to be a washout
now, which I don't like.)
if ( !game_get_option_value(g,GODeadWall16,NULL)
&& ( g-&wall.dead_end - g-&wall.live_end & 13) )
g-&wall.live_end -= 2;
/* if we're in the millington case, do nothing */
/* we're not playing with a dead wall. So the live end moves
back as well */
g-&wall.live_end--;
return g-&wall.tiles[g-&wall.dead_end]; /* the tile at the end */
/* game_peek_loose_tile: look at next loose tile
or ErrorTile if no wall
Tile game_peek_loose_tile(Game *g) {
if ( game_get_option_value(g,GODeadWall,NULL) ) {
if ( g-&wall.dead_end == g-&wall.live_end ) return ErrorT
if ( g-&wall.dead_end == g-&wall.live_used ) return ErrorT
return g-&wall.tiles[g-&wall.dead_end-1];
/* defines used in the following table */
#define DBL 10000
#define LIM
static GameOptionEntry default_optiontable[] = {
/* a real option has a name. This is just a filler. */
GOUnknown, && , GOTBool, , {
GOTimeout, &Timeout& , GOTNat, 0, 0, {
}, &time limit for claims&,0
GOTimeoutGrace, &TimeoutGrace&, GOTNat, 0, 0, {
}, &grace period when clients handle timeouts& , 0
GOScoreLimit, &ScoreLimit&, GOTNat, 0, 0, {
}, &limit on hand score&, 0
GONoLimit, &NoLimit&, GOTBool, 0, 0, {
}, &no-limit game&, 0
GOMahJongScore, &MahJongScore&, GOTScore, 0, 0, {
}, &base score for going out&, 0
GOSevenPairs, &SevenPairs&, GOTBool, 1020, 0, {
}, &seven pairs hand allowed&, 0
GOSevenPairsVal, &SevenPairsVal&, GOTScore, 1020, 0, {
}, &score for a seven pair hand&, 0
GOFlowers, &Flowers&, GOTBool, 1020, 0, {
}, &play using flowers and seasons&, 0
GOFlowersLoose, &FlowersLoose&, GOTBool, 0, 0, {
}, &flowers replaced by loose tiles&, 0
GOFlowersOwnEach, &FlowersOwnEach&, GOTScore, 0, 0, {
}, &score for each own flower or season&, 0
GOFlowersOwnBoth, &FlowersOwnBoth&, GOTScore, 0, 0, {
}, &score for own flower and own season&, 0
GOFlowersBouquet, &FlowersBouquet&, GOTScore, 0, 0, {
}, &score for all four flowers or all four seasons&, 0
GODeadWall, &DeadWall&, GOTBool, 1020, 0, {
}, &there is a dead wall&, 0
GODeadWall16, &DeadWall16&, GOTBool, 1020, 0, {
}, &dead wall is 16 tiles, unreplenished&, 0
GOConcealedFully, &ConcealedFully&, GOTScore, 0, 0, {
}, &score for fully concealed hand&, 0
GOConcealedAlmost, &ConcealedAlmost&, GOTScore, 0, 0, {
}, &score for almost concealed hand&, 0
GOLosersPurity, &LosersPurity&, GOTBool, 0, 0, {
}, &losing hands score doubles for pure, concealed etc.&, 0
GOKongHas3Types, &KongHas3Types&, GOTBool, 1034, 0, {
}, &claimed kongs count as concealed for doubling&, 0
GOEastDoubles, &EastDoubles&, GOTBool, 0, 0, {
}, &east pays and receives double&, 0
GOLosersSettle, &LosersSettle&, GOTBool, 0, 0, {
}, &losers pay each other&, 0
GODiscDoubles, &DiscDoubles&, GOTBool, 0, 0, {
}, &the discarder pays double&, 0
GOEnd, &End& , GOTBool, 0, 0, {
}, &end of option list&, 0
GameOptionTable game_default_optiontable =
default_optiontable, GONumOptions
/* game_clear_option_table: clear an option table, freeing
the storage */
int game_clear_option_table(GameOptionTable *got)
free(got-&options);
got-&options = NULL;
got-&numoptions = 0;
/* game_copy_option_table: copy old option table into new.
Will refuse to work on new table with existing data.
int game_copy_option_table(GameOptionTable *newt, GameOptionTable *oldt)
if (newt-&options) {
warn(&game_copy_option_table called on non-empty target&);
newt-&options = calloc(oldt-&numoptions,oldt-&numoptions*sizeof(GameOptionEntry));
if ( newt-&options == NULL ) {
warn(&failed to allocate option table&);
memcpy(newt-&options,oldt-&options,oldt-&numoptions*sizeof(GameOptionEntry));
newt-&numoptions = oldt-&
/* game_set_options_from_defaults: set the option table to be
a copy of the default, freein mark options
enabled according to the value of g-&protversion.
Also convert Nat options to Int if the protocol version is low.
int game_set_options_from_defaults(Game *g) {
game_clear_option_table(&g-&option_table);
g-&option_table.options = calloc(GONumOptions,sizeof(GameOptionEntry));
if ( g-&option_table.options == NULL ) {
warn(&failed to allocate option table&);
memcpy(g-&option_table.options,default_optiontable,GONumOptions*sizeof(GameOptionEntry));
g-&option_table.numoptions = GONumO
/* now go through the option list marking options enabled */
for ( i=0; i & g-&option_table. i++ ) {
if ( g-&protversion &= g-&option_table.options[i].protversion )
g-&option_table.options[i].enabled = 1;
/* and convert nat to int */
if ( g-&protversion & 1020 && g-&option_table.options[i].type == GOTNat )
g-&option_table.options[i].type = GOTI
/* find an option entry in an option table, searching by integer (if known)
or name (if known) */
GameOptionEntry *game_get_option_entry_from_table(GameOptionTable *t, GameOption option, char *name) {
GameOptionEntry *
/* usually, the option will be in the right slot, so check for this first */
if ( option && (option & (unsigned int)t-&numoptions) && option == t-&options[option].option ) return &t-&options[option];
have this option in the table? */
for (i=0; i&t-& i++) {
goe = &t-&options[i];
if ( (option && goe-&option == option)
/* we may have options that we don't know about, in which
case we have to check the names */
|| (!(option && goe-&option)
&& name && strcmp(goe-&name,name) == 0) )
return NULL;
GameOptionEntry *game_get_option_entry(Game *g, GameOption option, char *name) {
return game_get_option_entry_from_table(&g-&option_table,option,name);
/* find an option entry in the default table, searching by integer (if known)
or name */
GameOptionEntry *game_get_default_option_entry(GameOption option, char *name) {
return game_get_option_entry_from_table(&game_default_optiontable,
option,name);
/* see game.h for spec */
void *game_get_option_value(Game *g, GameOption option, char *name)
GameOptionEntry *goe = NULL;
if ( g ) goe = game_get_option_entry(g,option,name);
if ( ! goe ) goe = game_get_default_option_entry(option,name);
if ( ! goe ) return 0;
if ( goe-&type == GOTString )
return (void *) &goe-&value.
return (void *) goe-&value.
/* game_set_option_in_table: set an option.
Function will allocate space as required. */
int game_set_option_in_table(GameOptionTable *t, GameOptionEntry *e) {
GameOptionEntry *goe = NULL;
/* do we already have this option in the table? */
for (i=0; i&t-& i++) {
goe = &t-&options[i];
if ( (goe-&option && goe-&option == e-&option)
/* we may have options that we don't know about, in which
case we have to check the names */
(文件超长,未完全显示,请下载后阅读剩余部分)
展开> <收缩
下载源码到电脑,阅读使用更方便
还剩0行未阅读,继续阅读 ▼
Sponsored links
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
&一个网络和单机的麻将游戏源码&0.00 B05-09-09 04:46
ChangeLog61.81 kB13-10-03 05:12
CHANGES11.68 kB13-10-03 05:12
5.93 kB13-10-03 05:12
3.31 kB13-10-03 05:12
101.24 kB13-10-03 05:12
1.81 kB13-10-03 05:12
61.69 kB13-10-03 05:12
14.02 kB13-10-03 05:12
45.31 kB13-10-03 05:12
127.48 kB13-10-03 05:12
134.70 kB13-10-03 05:12
15.49 kB13-10-03 05:12
icon.ico2.19 kB03-04-01 03:57
iconres.rs42.00 B13-10-03 05:12
3.19 kB13-10-03 05:12
2.49 kB13-10-03 05:12
LICENCE19.11 kB13-10-03 05:12
make-enums.pl2.95 kB13-10-03 05:12
makedep2.53 kB13-10-03 05:12
makefallbacktiles2.11 kB13-10-03 05:12
14.68 kB13-10-03 05:12
11.66 kB13-10-03 05:12
4.72 kB13-10-03 05:12
MANIFEST2.30 kB13-10-03 05:12
mj-player.man99.00 B13-10-03 05:12
mj-server.man99.00 B13-10-03 05:12
27.53 kB13-10-03 05:12
14.89 kB13-10-03 05:12
proto-decode-msg.pl6.63 kB13-10-03 05:12
proto-encode-msg.pl6.32 kB13-10-03 05:12
13.52 kB13-10-03 05:12
38.59 kB13-10-03 05:12
8.56 kB13-10-03 05:12
24.52 kB13-10-03 05:12
23.21 kB13-10-03 05:12
1.39 kB13-10-03 05:12
21.22 kB13-10-03 05:12
7.30 kB13-10-03 05:12
9.78 kB13-10-03 05:12
5.75 kB13-10-03 05:12
31.73 kB13-10-03 05:12
456.00 B13-10-03 05:21
5.03 kB13-10-03 05:12
2.45 kB13-10-03 05:12
xmj.man55.40 kB13-10-03 05:12
&tiles-v1&0.00 B05-09-09 04:46
--.xpm1.12 kB28-10-99 05:26
1B.xpm1.15 kB28-10-99 05:26
1C.xpm1.15 kB28-10-99 05:26
1D.xpm1.15 kB28-10-99 05:26
1F.xpm1.16 kB28-10-99 05:26
1S.xpm1.16 kB28-10-99 05:26
2B.xpm1.14 kB28-10-99 05:26
2C.xpm1.15 kB28-10-99 05:26
2D.xpm1.14 kB28-10-99 05:26
2F.xpm1.16 kB28-10-99 05:26
2S.xpm1.16 kB28-10-99 05:26
3B.xpm1.14 kB28-10-99 05:26
3C.xpm1.15 kB28-10-99 05:26
3D.xpm1.15 kB28-10-99 05:26
3F.xpm1.16 kB28-10-99 05:26
3S.xpm1.16 kB28-10-99 05:26
4B.xpm1.14 kB28-10-99 05:26
4C.xpm1.15 kB28-10-99 05:26
4D.xpm1.14 kB28-10-99 05:26
4F.xpm1.16 kB28-10-99 05:26
4S.xpm1.16 kB28-10-99 05:26
5B.xpm1.15 kB28-10-99 05:26
5C.xpm1.15 kB28-10-99 05:26
5D.xpm1.15 kB28-10-99 05:26
6B.xpm1.14 kB28-10-99 05:26
6C.xpm1.15 kB28-10-99 05:26
6D.xpm1.17 kB28-10-99 05:26
7B.xpm1.15 kB28-10-99 05:26
7C.xpm1.15 kB28-10-99 05:26
7D.xpm1.08 kB28-10-99 05:26
8B.xpm1.14 kB28-10-99 05:26
8C.xpm1.15 kB28-10-99 05:26
8D.xpm1.14 kB28-10-99 05:26
9B.xpm1.15 kB28-10-99 05:26
9C.xpm1.15 kB28-10-99 05:26
9D.xpm1.15 kB28-10-99 05:26
EW.xpm1.14 kB28-10-99 05:26
GD.xpm1.14 kB28-10-99 05:26
GPL17.66 kB28-10-99 05:32
NW.xpm1.14 kB28-10-99 05:26
RD.xpm1.14 kB28-10-99 05:26
723.00 B28-10-99 05:44
SW.xpm1.14 kB28-10-99 05:26
tongE.xpm1.49 kB28-10-99 05:26
tongN.xpm1.49 kB28-10-99 05:26
tongS.xpm1.49 kB28-10-99 05:26
tongW.xpm1.49 kB28-10-99 05:26
WD.xpm1.14 kB28-10-99 05:26
WW.xpm1.14 kB28-10-99 05:26
XX.xpm1.12 kB28-10-99 05:26
&tiles-small&0.00 B05-09-09 04:47
--.xpm813.00 B17-02-03 00:29
1B.xpm3.11 kB17-02-03 00:29
1C.xpm1.37 kB17-02-03 00:29
1D.xpm1.25 kB17-02-03 00:29
1F.xpm1.94 kB17-02-03 00:29
1S.xpm1.85 kB17-02-03 00:29
2B.xpm979.00 B17-02-03 00:29
2C.xpm1.44 kB17-02-03 00:29
2D.xpm1.18 kB17-02-03 00:29
2F.xpm1.64 kB17-02-03 00:29
2S.xpm1.92 kB17-02-03 00:29
3B.xpm1.16 kB17-02-03 00:29
3C.xpm1.47 kB17-02-03 00:29
3D.xpm1.41 kB17-02-03 00:29
3F.xpm1.85 kB17-02-03 00:29
3S.xpm1.91 kB17-02-03 00:29
4B.xpm1.10 kB17-02-03 00:29
4C.xpm1.44 kB17-02-03 00:29
4D.xpm1.26 kB17-02-03 00:29
4F.xpm1.73 kB17-02-03 00:29
4S.xpm1.86 kB17-02-03 00:29
5B.xpm1.26 kB17-02-03 00:29
5C.xpm1.51 kB17-02-03 00:29
5D.xpm1.41 kB17-02-03 00:29
6B.xpm1.16 kB17-02-03 00:29
6C.xpm1.50 kB17-02-03 00:29
6D.xpm1.89 kB17-02-03 00:29
7B.xpm1.40 kB17-02-03 00:29
7C.xpm1.50 kB17-02-03 00:29
7D.xpm1.50 kB17-02-03 00:29
8B.xpm1.19 kB17-02-03 00:29
8C.xpm1.45 kB17-02-03 00:29
8D.xpm1.15 kB17-02-03 00:29
9B.xpm1.41 kB17-02-03 00:29
9C.xpm1.47 kB17-02-03 00:29
9D.xpm1.50 kB17-02-03 00:29
EW.xpm1.13 kB17-02-03 00:29
GD.xpm1.31 kB17-02-03 00:29
NW.xpm1.09 kB17-02-03 00:29
RD.xpm1.13 kB17-02-03 00:29
SW.xpm1.16 kB17-02-03 00:29
tongE.xpm1.32 kB17-02-03 00:29
tongN.xpm1.29 kB17-02-03 00:29
tongS.xpm1.35 kB17-02-03 00:29
tongW.xpm1.34 kB17-02-03 00:29
WD.xpm1,009.00 B17-02-03 00:29
WW.xpm1.15 kB17-02-03 00:29
XX.xpm813.00 B17-02-03 00:29
&tiles-numbered&0.00 B05-09-09 04:47
--.xpm1.12 kB10-12-01 07:20
1B.xpm1.15 kB10-12-01 07:20
1C.xpm1.16 kB10-03-01 11:25
1D.xpm1.15 kB10-12-01 07:20
1F.xpm1.17 kB10-03-01 11:31
1S.xpm1.16 kB10-03-01 11:35
2B.xpm1.14 kB10-12-01 07:20
2C.xpm1.20 kB10-03-01 11:25
2D.xpm1.14 kB10-12-01 07:20
2F.xpm1.20 kB10-03-01 11:32
2S.xpm1.20 kB10-03-01 11:36
3B.xpm1.14 kB10-12-01 07:20
3C.xpm1.19 kB10-03-01 11:26
3D.xpm1.15 kB10-12-01 07:20
3F.xpm1.20 kB10-03-01 11:33
3S.xpm1.19 kB10-03-01 11:37
4B.xpm1.14 kB10-12-01 07:20
4C.xpm1.24 kB10-03-01 11:26
4D.xpm1.14 kB10-12-01 07:20
4F.xpm1.20 kB10-03-01 11:34
4S.xpm1.20 kB10-03-01 11:37
5B.xpm1.15 kB10-12-01 07:20
5C.xpm1.19 kB10-03-01 11:27
5D.xpm1.15 kB10-12-01 07:20
6B.xpm1.14 kB10-12-01 07:20
6C.xpm1.19 kB10-03-01 11:28
6D.xpm1.17 kB10-12-01 07:20
7B.xpm1.15 kB10-12-01 07:20
7C.xpm1.19 kB10-03-01 11:28
7D.xpm1.08 kB10-12-01 07:20
8B.xpm1.14 kB10-12-01 07:20
8C.xpm1.20 kB10-03-01 11:29
8D.xpm1.14 kB10-12-01 07:20
9B.xpm1.15 kB10-12-01 07:20
9C.xpm1.21 kB10-03-01 11:29
9D.xpm1.15 kB10-12-01 07:20
EW.xpm1.19 kB10-03-01 11:17
GD.xpm1.14 kB10-12-01 07:20
NW.xpm1.19 kB10-03-01 11:18
RD.xpm1.14 kB10-12-01 07:20
SW.xpm1.19 kB10-03-01 11:19
tongE.xpm1.54 kB10-03-01 11:45
tongN.xpm1.53 kB10-03-01 11:46
tongS.xpm1.53 kB10-03-01 11:46
tongW.xpm1.54 kB10-03-01 11:45
WD.xpm1.14 kB10-12-01 07:20
WW.xpm1.19 kB10-03-01 11:20
XX.xpm1.12 kB10-12-01 07:20
&fallbacktiles&0.00 B05-09-09 04:47
--.xpm1.12 kB25-10-99 21:24
1B.xpm1.13 kB25-10-99 20:59
1C.xpm1.13 kB25-10-99 20:59
1D.xpm1.13 kB25-10-99 20:59
1F.xpm1.13 kB25-10-99 21:17
1S.xpm1.13 kB25-10-99 21:17
2B.xpm1.13 kB25-10-99 20:59
2C.xpm1.13 kB25-10-99 20:59
2D.xpm1.13 kB25-10-99 20:59
2F.xpm1.13 kB25-10-99 21:17
2S.xpm1.13 kB25-10-99 21:17
3B.xpm1.13 kB25-10-99 20:59
3C.xpm1.13 kB25-10-99 20:59
3D.xpm1.13 kB25-10-99 20:59
3F.xpm1.13 kB25-10-99 21:17
3S.xpm1.13 kB25-10-99 21:17
4B.xpm1.13 kB25-10-99 20:59
4C.xpm1.13 kB25-10-99 20:59
4D.xpm1.13 kB25-10-99 20:59
4F.xpm1.13 kB25-10-99 21:17
4S.xpm1.13 kB25-10-99 21:17
5B.xpm1.13 kB25-10-99 20:59
5C.xpm1.13 kB25-10-99 20:59
5D.xpm1.13 kB25-10-99 20:59
6B.xpm1.13 kB25-10-99 20:59
6C.xpm1.13 kB25-10-99 20:59
6D.xpm1.13 kB25-10-99 20:59
7B.xpm1.13 kB25-10-99 20:59
7C.xpm1.13 kB25-10-99 20:59
7D.xpm1.13 kB25-10-99 20:59
8B.xpm1.13 kB25-10-99 20:59
8C.xpm1.13 kB25-10-99 20:59
8D.xpm1.13 kB25-10-99 20:59
9B.xpm1.13 kB25-10-99 20:59
9C.xpm1.13 kB25-10-99 20:59
9D.xpm1.13 kB25-10-99 20:59
EW.xpm1.13 kB25-10-99 21:17
GD.xpm1.13 kB25-10-99 21:17
NW.xpm1.13 kB25-10-99 21:17
RD.xpm1.13 kB25-10-99 21:17
SW.xpm1.13 kB25-10-99 21:17
tongE.xpm1.44 kB25-10-99 21:09
tongN.xpm1.44 kB25-10-99 21:12
tongS.xpm1.44 kB25-10-99 21:10
tongW.xpm1.44 kB25-10-99 21:11
WD.xpm1.13 kB25-10-99 21:17
WW.xpm1.13 kB25-10-99 21:17
XX.xpm1.12 kB26-10-99 01:34
Sponsored links
23 篇源代码 21 篇源代码 18 篇源代码 13 篇源代码 9 篇源代码
285 篇源代码 173 篇源代码 48 篇源代码 42 篇源代码 36 篇源代码
评价成功,多谢!
CodeForge积分(原CF币)全新升级,功能更强大,使用更便捷,不仅可以用来下载海量源代码马上还可兑换精美小礼品了
您的积分不足
支付宝优惠套餐快速获取 30 积分
10积分 / ¥100
30积分 / ¥200原价 ¥300 元
100积分 / ¥500原价 ¥1000 元
订单支付完成后,积分将自动加入到您的账号。以下是优惠期的人民币价格,优惠期过后将恢复美元价格。
支付宝支付宝付款
微信钱包微信付款
更多付款方式:、
您本次下载所消耗的积分将转交上传作者。
同一源码,30天内重复下载,只扣除一次积分。
鲁ICP备号-2 runtime:Elapsed:114.033ms .206
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
^_^"呃 ...
Sorry!这位大神很神秘,未开通博客呢,请浏览一下其他的吧(可在服务器上查看具体错误信息)Dynamic Information
Zongzi-making con...
Special Page
Last Friday, July 8th, Japan’s 86 year old “Rice Fairy”, who has been famous for cooking rice for more than half a century, came t...
The Chinese Delegation scheduled to participate in the 2016 Rio de Janeiro Olympic Games gathered in the Great Hall of the People on ...
The opening season of Xiamen Cangjiang Theater and the First Haisi Art Festival are scheduled to start in this August.
Service Certificate of Internet News Informaiton: No.
ICP CODE: 闽ICP备号-1&&&&
Certificate of Information Network Broadcasting and Listening Program (1308312)

我要回帖

更多关于 麻将牌游戏 的文章

 

随机推荐