沈阳适合孩子玩的地方哪里有制作字谜游戏软件的地方

用 C#.NET 编写的一个完整字谜游戏
字谜游戏,可能你在许多益智书中都曾看到过。试着在电脑上用不同类别的内容写字谜游戏,并且有自定义字词去玩也是很有意思的。
我很早以前使用Turbo C编码游戏,但我丢失了代码。我觉得用C#.NET让它复活将是一件很伟大的事情。该语言在内存、GC、图形方面提供了很多灵活性,而这些是我在使用C语言的时候必须小心处理的。但是在C语言中的明确关注,会让我们学到很多(这就是为什么C语言被称为“上帝的编程语言”的原因)。另一方面,因为C#.NET照顾到了这些,所以我可以专注于其他地方的增强,例如字的方向,重叠,作弊码,计分,加密等。所以在欣赏两种语言的时候需要有一个平衡。
在题目中我之所以说它是“完整的”,原因如下:
1)它有一些类别的预设词。
2)它在加密文件中保存单词和分数,这样就没有人可以篡改文件。如果要篡改,那么它将恢复到预设并从头开始计分。
3)它有作弊码,但作弊会不利于得分,且显然作弊一旦应用会使分数归零。
4)它有一个计分机制。
游戏提供以下功能,具体我将在随后的章节中讨论:
1)载入类别和单词:从程序中硬编码的预设中加载单词。然而,如果玩家提供自定义的单词,那么游戏将自动把所有这些(连同预设)存储在文件中并从那里读取。
2)放在网格上:游戏将所有的单词随机地放在18×18的矩阵中。方向可以是水平,垂直,左下和右下,如上图中所示。
3)计分:对于不同类别,分数单独存储。分数的计算方式是单词的长度乘以乘法因子(这里为10)。与此同时,在找到所有的单词之后,剩余时间(乘以乘法因子)也会加到分数中。
4)显示隐藏的单词:如果时间用完之后,玩家依然找不到所有的单词,那么游戏会用不同的颜色显示没找到的单词。
5)作弊码:游戏在游戏板上提作弊码(mambazamba)。作弊码只简单地设置了一整天的时间(86,400秒)。但是,应用作弊码也会应用让此次运行的计分为零的惩罚。
1)载入类别和单词:
我们有一个简单的用于持有类别和单词的类:
classWordEntity{ publicstringCategory { get; set; } publicstringWord { get; set; }}
我们有一些预设的类别和单词如下。预设都是管道分隔的,其中每第15个单词是类别名称,后面的单词是该类别中的单词。
privatestringPRESET_WORDS = "COUNTRIES|BANGLADESH|GAMBIA|AUSTRALIA|ENGLAND|NEPAL|INDIA|PAKISTAN|TANZANIA|SRILANKA|CHINA|CANADA|JAPAN|BRAZIL|ARGENTINA|"+ "MUSIC|PINKFLOYD|METALLICA|IRONMAIDEN|NOVA|ARTCELL|FEEDBACK|ORTHOHIN|DEFLEPPARD|BEATLES|ADAMS|JACKSON|PARTON|HOUSTON|SHAKIRA|"+...
我们使用加密在文件中写这些单词。所以没有人可以篡改文件。对于加密我使用了一个从这里借鉴的类。使用简单——你需要传递字符串和用于加密的加密密码。对于解密,你需要传递加密的字符串和密码。
如果文件存在,那么我们从那里读取类别和单词,否则我们保存预设(以及玩家自定义的单词)并从预设那里读取。这在下面的代码中完成:
if(File.Exists(FILE_NAME_FOR_STORING_WORDS)) // If words file exists, then read it.ReadFromFile(); else{ // Otherwise create the file and populate from there.stringEncryptedWords = StringCipher.Encrypt(PRESET_WORDS, ENCRYPTION_PASSWORD); using(StreamWriter OutputFile = newStreamWriter(FILE_NAME_FOR_STORING_WORDS)) OutputFile.Write(EncryptedWords); ReadFromFile();}
ReadFromFile()方法简单地从存储单词的文件中读取。它首先尝试解密从文件读取的字符串。如果失败(由返回的空白字符串确定),它将显示关于问题的一条消息,然后从内置预设重新加载。否则它从字符串读取并将它们分成类别和单词,并把它们放在单词列表中。每第15个词是类别,后续词是该类别下的单词。
stringStr = File.ReadAllText(FILE_NAME_FOR_STORING_WORDS); string[] DecryptedWords = StringCipher.Decrypt(Str, ENCRYPTION_PASSWORD).Split( '|'); if(DecryptedWords[ 0].Equals( "")) // This means the file was tampered.{ MessageBox.Show( "The words file was tampered. Any Categories/Words saved by the player will be lost."); File.Delete(FILE_NAME_FOR_STORING_WORDS); PopulateCategoriesAndWords(); // Circular reference.return;} stringCategory = ""; for( inti = 0; i &= DecryptedWords.GetUpperBound( 0); i++){ if(i % (MAX_WORDS + 1) == 0) // Every 15th word is the category name.{ Category = DecryptedWords[i]; Categories.Add(Category); } else{ WordEntity Word = newWordEntity(); Word.Category = C Word.Word = DecryptedWords[i]; WordsList.Add(Word); }}
保存玩家的自定义词
游戏可供应由玩家提供的自定义词。设备位于相同的加载窗口。单词应该最少3个字符长,最多10个字符长,并且需要14个单词——不多也不能不少。指示在标签中。另外单词不能是任何其他词的子部分。例如:不能有如’JAPAN’和’JAPANESE’这样两个词,因为前者包含在后者中。
我将简要介绍一下有效性检查。有3个关于最大长度、最小长度和SPACE输入(不允许空格)的即时检查。这通过将我们自定义的处理程序Control_KeyPress添加到单词条目网格的EditingControlShowingevent中来完成。
privatevoidWordsDataGridView_EditingControlShowing(objectsender, DataGridViewEditingControlShowingEventArgs e){ e.Control.KeyPress -= newKeyPressEventHandler(Control_KeyPress); e.Control.KeyPress += newKeyPressEventHandler(Control_KeyPress);}
每当用户输入东西时,处理程序就被调用并检查有效性。完成如下:
TextBox tb = sender asTextB if(e.KeyChar == ( char)Keys.Enter){ if(tb.Text.Length &= MIN_LENGTH) // Checking length{ MessageBox.Show( "Words should be at least "+ MAX_LENGTH + " characters long."); e.Handled = true; return; }} if(tb.Text.Length &= MAX_LENGTH) // Checking length{ MessageBox.Show( "Word length cannot be more than "+ MAX_LENGTH + "."); e.Handled = true; return;} if(e.KeyChar.Equals( ' ')) // C no space allowed. Other invalid characters check can be put here instead of the final check on save button click.{ MessageBox.Show( "No space, please."); e.Handled = true; return;}e.KeyChar = char.ToUpper(e.KeyChar);
最后,在输入所有单词并且用户选择保存和使用自定义单词之后存在有效性检查。首先它检查是否输入了14个单词。然后它遍历所有的14个单词,并检查它们是否有无效字符。同时它也检查重复的单词。检查成功就把单词添加到列表中。最后,提交另一次迭代,以检查单词是否包含在另一个单词中(例如,不能有如’JAPAN’和’JAPANESE’这样的两个单词,因为前者包含在后者中)。通过下面的代码完成:
publicboolCheckUserInputValidity(DataGridView WordsDataGridView, List&string& WordsByThePlayer){ if(WordsDataGridView.Rows.Count != MAX_WORDS + 1) { MessageBox.Show( "You need to have "+ MAX_WORDS + " words in the list. Please add more."); returnfalse; } char[] NoLettersList = { ':', ';', '@', ''', '"', '{', '}', '[', ']', '|', '', '&', '&', '?', ',', '.', '/', '`', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '~', '!', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+'}; //'foreach(DataGridViewRow Itm inWordsDataGridView.Rows) { if(Itm.Cells[ 0].Value == null) continue; if(Itm.Cells[ 0].Value.ToString().IndexOfAny(NoLettersList) &= 0) { MessageBox.Show( "Should only contain letters. The word that contains something else other than letters is: '"+ Itm.Cells[ 0].Value.ToString() + "'"); returnfalse; } if(WordsByThePlayer.IndexOf(Itm.Cells[ 0].Value.ToString()) != -1) { MessageBox.Show( "Can't have duplicate word in the list. The duplicate word is: '"+ Itm.Cells[ 0].Value.ToString() + "'"); returnfalse; } WordsByThePlayer.Add(Itm.Cells[ 0].Value.ToString()); } for( inti = 0; i & WordsByThePlayer.Count - 1; i++) // For every word in the list.{ stringstr = WordsByThePlayer[i]; for( intj = i + 1; j & WordsByThePlayer.C j++) // Check existence with every other word starting from the next wordif(str.IndexOf(WordsByThePlayer[j]) != -1) { MessageBox.Show( "Can't have a word as a sub-part of another word. Such words are: '"+ WordsByThePlayer[i] + "' and '"+ WordsByThePlayer[j] + "'"); returnfalse; } } returntrue;}
玩家的列表与现有单词一起保存,然后游戏板与该类别中的那些单词一起被打开。
2)放在网格上:
在网格上放置单词
单词通过InitializeBoard()方法被放置在网格上。我们在字符矩阵(二维字符数组)WORDS_IN_BOARD中先放置单词。然后我们在网格中映射这个矩阵。遍历所有的单词。每个单词获取随机方向(水平/垂直/左下/右下)下的随机位置。此时,如果我们可视化的话,单词矩阵看起来会有点像下面这样。
放置通过PlaceTheWords()方法完成,获得4个参数——单词方向,单词本身,X坐标和Y坐标。这是一个关键方法,所以我要逐个解释这四个方向。
对于整个单词,逐个字符地运行循环。首先它检查这个词是否落在网格之外。如果这是真的,那么它返回到调用过程以生成新的随机位置和方向。
然后,它检查当前字符是否可能与网格上的现有字符重叠。如果发生这种情况,那么检查它是否是相同的字符。如果不是相同的字符,那就返回到调用方法,请求另一个随机位置和方向。
在这两个检查之后,如果放置是一种可能,那么就把单词放置在矩阵中,并且通过方法StoreWordPosition()将列表中的位置和方向存储在WordPositions中。
for( inti = 0, j = PlacementIndex_X; i & Word.L i++, j++) // First we check if the word can be placed in the array. For this it needs blanks there.{ if(j &= GridSize) returnfalse; // Falling outside the grid. Hence placement unavailable.if(WORDS_IN_BOARD[j, PlacementIndex_Y] != '0') if(WORDS_IN_BOARD[j, PlacementIndex_Y] != Word[i]) // If there is an overlap, then we see if the characters match. If matches, then it can still go there.{ PlaceAvailable = false; break; }} if(PlaceAvailable){ // If all the cells are blank, or a non-conflicting overlap is available, then this word can be placed there. So place it.for( inti = 0, j = PlacementIndex_X; i & Word.L i++, j++) WORDS_IN_BOARD[j, PlacementIndex_Y] = Word[i]; StoreWordPosition(Word, PlacementIndex_X, PlacementIndex_Y, OrientationDecision); returntrue;} break;
垂直/左下/右下方向
相同的逻辑适用于为这3个方向找到单词的良好布局。它们在矩阵位置和边界检查的增量/减量方面不同。
在所有的单词被放置在矩阵中之后,FillInTheGaps()方法用随机字母填充矩阵的其余部分。此时窗体打开并触发Paint()事件。在这个事件上,我们绘制最终显示为40×40像素矩形的线。然后我们将我们的字符矩阵映射到board上。
Pen pen = newPen(Color.FromArgb( 255, 0, 0, 0));ColourCells(ColouredRectangles, Color.LightBlue); if(FailedRectangles.Count & 0) ColourCells(FailedRectangles, Color.ForestGreen); // Draw horizontal lines.for( inti = 0; i &= GridS i++) e.Graphics.DrawLine(pen, 40, (i + 1) * 40, GridSize * 40+ 40, (i + 1) * 40); // Draw vertical lines.for( inti = 0; i &= GridS i++) e.Graphics.DrawLine(pen, (i + 1) * 40, 40, (i + 1) * 40, GridSize * 40+ 40);MapArrayToGameBoard();
MapArrayToGameBoard()方法简单地把我们的字符矩阵放在board上。我们使用来自MSDN的绘图代码。这遍历矩阵中的所有字符,将它们放置在40×40矩形的中间,边距调整为10像素。
Graphics formGraphics = CreateGraphics();Font drawFont = newFont( "Arial", 16);SolidBrush drawBrush = newSolidBrush(Color.Black); stringCharacterToM for( inti = 0; i & GridS i++) for( intj = 0; j & GridS j++) { if(WORDS_IN_BOARD[i, j] != '0') { CharacterToMap = ""+ WORDS_IN_BOARD[i, j]; // "" is needed as a means for conversion of character to string.formGraphics.DrawString(CharacterToMap, drawFont, drawBrush, (i + 1) * 40+ 10, (j + 1) * 40+ 10); } }
单词发现和有效性检查
鼠标点击位置和释放位置存储在点列表中。对鼠标按钮释放事件(GameBoard_MouseUp())调用CheckValidity()方法。同时,当用户在左键按下的同时拖动鼠标时,我们从起始位置绘制一条线到鼠标指针。这在GameBoard_MouseMove()事件中完成。
if(Points.Count & 1) Points.Pop(); if(Points.Count & 0) Points.Push(e.Location); // Form top = X = Distance from top, left = Y = Distance from left.// However mouse location X = Distance from left, Y = Distance from top.// Need an adjustment to exact the location.Point TopLeft = newPoint(Top, Left);Point DrawFrom = newPoint(TopLeft.Y + Points.ToArray()[ 0].X + 10, TopLeft.X + Points.ToArray()[ 0].Y + 80);Point DrawTo = newPoint(TopLeft.Y + Points.ToArray()[ 1].X + 10, TopLeft.X + Points.ToArray()[ 1].Y + 80);ControlPaint.DrawReversibleLine(DrawFrom, DrawTo, Color.Black); // draw new line
单词的有效性在CheckValidity()方法中检查。它通过抓取所有的字母来制定单词,字母通过使用鼠标查看相应的字符矩阵来绘制。然后检查是否真的匹配单词列表中的单词。如果匹配,则通过将单元格着色为浅蓝色并使单词列表中的单词变灰来更新单元格。
以下是抓取行开始和结束位置的代码片段。首先它检查行是否落在边界之外。然后它制定单词并且存储矩阵的坐标。类似地,它检查垂直,左下和右下单词,并尝试相应地匹配。如果这真的匹配,那么我们通过AddCoordinates()方法将临时矩形存储在我们的ColouredRectangles点列表中。
if(Points.Count == 1) return; // This was a doble click, no dragging, hence return.intStartX = Points.ToArray()[ 1].X / 40; // Retrieve the starting position of the line.intStartY = Points.ToArray()[ 1].Y / 40; intEndX = Points.ToArray()[ 0].X / 40; // Retrieve the ending position of the line.intEndY = Points.ToArray()[ 0].Y / 40; if(StartX & GridSize || EndX & GridSize || StartY & GridSize || EndY & GridSize || // Boundary checks.StartX &= 0|| EndX &= 0|| StartY &= 0|| EndY &= 0){ StatusLabel.Text = "Nope!"; StatusTimer.Start(); return;}StringBuilder TheWordIntended = newStringBuilder();List&Point& TempRectangles = newList&Point&();TheWordIntended.Clear(); if(StartY == EndY) // Horizontal line drawn.for( inti = StartX; i &= EndX; i++) { TheWordIntended.Append(WORDS_IN_BOARD[i - 1, StartY - 1].ToString()); TempRectangles.Add( newPoint(i * 40, StartY * 40)); } 3)计分:
对于计分,我们有计分文件。如果缺少,则使用当前分数和类别创建一个。这里,再次,所有的分数被组合在一个大的管道分隔的字符串中,然后该字符串被加密并放入文件。我们有四个实体。
classScoreEntity{ publicstringCategory { get; set; } publicstringScorer { get; set; } publicintScore { get; set; } publicDateTime ScoreTime { get; set; }............................
最多允许一个类别14个分数。首先加载分数列表中的所有分数,然后获得当前分类分数的排序子集。在该子集中,检查当前分数是否大于任何可用的分数。如果是,则插入当前分数。之后,检查子集数是否超过14,如果超过了,就消除最后一个。所以最后的得分消失了,列表总是有14个分数。这在CheckAndSaveIfTopScore()方法中完成。
这里,再次,如果有人篡改得分文件,那么它只会开始一个新的得分。不允许篡改。
4)显示隐藏的单词:
如果时间用完了,那么游戏用绿色显示单词。首先,获取玩家找不到的单词。可以是这样的
List& string& FailedWords = newList& string&(); foreach( stringWord inWORD_ARRAY) if(WORDS_FOUND.IndexOf(Word) == -1) FailedWords.Add(Word);
然后,遍历这些失败的单词位置并制定相应的失败的矩阵。最后,它通过无效来调用窗体的paint方法。
foreach ( stringWord in FailedWords){ WordPosition Pos = WordPositions.Find(p =& p.Word.Equals(Word)); if(Pos.Direction == Direction.Horizontal) // Horizontal word.for( inti = Pos.PlacementIndex_X + 1, j = Pos.PlacementIndex_Y + 1, k = 0; k & Pos.Word.L i++, k++) FailedRectangles.Add( newPoint(i * 40, j * 40)); elseif(Pos.Direction == Direction.Vertical) // Vertical word.for( inti = Pos.PlacementIndex_X + 1, j = Pos.PlacementIndex_Y + 1, k = 0; k & Pos.Word.L j++, k++) FailedRectangles.Add( newPoint(i * 40, j * 40)); elseif(Pos.Direction == Direction.DownLeft) // Down left word.for( inti = Pos.PlacementIndex_Y + 1, j = Pos.PlacementIndex_X + 1, k = 0; k & Pos.Word.L i--, j++, k++) FailedRectangles.Add( newPoint(i * 40, j * 40)); elseif(Pos.Direction == Direction.DownRight) // Down right word.for( inti = Pos.PlacementIndex_X + 1, j = Pos.PlacementIndex_Y + 1, k = 0; k & Pos.Word.L i++, j++, k++) FailedRectangles.Add( newPoint(i * 40, j * 40));}Invalidate(); 5)作弊码:
这是一件小事了。这工作在keyup事件上,这个事件抓取所有的击键到CheatCode变量。实际上,我们合并玩家在游戏窗口上输入的击键,并看看代码是否与我们的CHEAT_CODE(mambazamba)匹配。例如,如果玩家按下“m”和“a”,那么我们在CheatCode变量中将它们保持为’ma’(因为,ma仍然匹配cheatcode模式)。类似地,如果它匹配CHEAT_CODE的模式,则添加连续变量。然而,一旦它不能匹配模式(例如,’mambi’),则重新开始。
最后,如果匹配,则激活作弊码(将剩余时间提高到完整一天,即86,400秒),并应用惩罚。
CheatCode+= e. KeyCode. ToString(). ToUpper(); if( CHEAT_CODE. IndexOf( CheatCode) == - 1) // Cheat code didn't match with any part of the cheat code.CheatCode= ( ""+ e. KeyCode). ToUpper(); // Hence erase it to start over.elseif( CheatCode. Equals( CHEAT_CODE) && WORDS_FOUND. Count!= MAX_WORDS){ Clock. TimeLeft= 86400; // Cheat code applied, literally unlimited time. 86400 seconds equal 1 day.ScoreLabel. Text= "Score: 0"; StatusLabel. Text= "Cheated! Penalty applied!!"; StatusTimer. Start(); CurrentScore= 0; Invalidate();
这里有趣的是,我们必须使用WordsListView的KeyUp事件而不是窗体。这是因为在加载游戏窗口后,列表框有焦点,而不是窗体。
使用Visual Studio 2015IDE编码。这不是一个移动版本——需要PC电脑来玩这个游戏。
这不是一个OOP项目,它遵循程序性编程,虽然有些地方应用了OOP并且将进程委托给类对象。项目是用RAD方法完成的,以便使事情进行。它需要重构。此外,我没有遵循任何命名约定。我个人的偏好是名字能够说明意图,在将鼠标悬停在名字上面的时候,你可以自动地了解类型。我的意思是,变量’TheWordIntended’根据我没有遵循的标准命名约定应该有一个像’strTheWordIntended’这样的名字。这些都是可以被重构的。
未来的工作
有很多事情可以做——应用设计模式,OOP。作为软件开发的本质,重构是必须的。
要强制重绘窗口,我们需要调用窗口的Invalidate()方法。也需要通过调整表单顶部和左侧位置来校正鼠标坐标。有趣的是,表单的坐标定义为:X为距离屏幕顶部的距离,Y为距离屏幕左侧的距离。但是,鼠标坐标用另一种方式定义:X为距离窗口左边的距离,Y作为距离窗口顶部的距离。因此,为了校准,我们需要仔细调整。
privatevoidGameBoard_MouseMove(objectsender, MouseEventArgs e){ try{ if(e.Button == MouseButtons.Left) { if(Points.Count & 1) Points.Pop(); if(Points.Count & 0) Points.Push(e.Location); // Form top = X = Distance from top, left = Y = Distance from left.// However mouse location X = Distance from left, Y = Distance from top.// Need an adjustment to exact the location.Point TopLeft = newPoint(Top, Left); Point DrawFrom = newPoint(TopLeft.Y + Points.ToArray()[ 0].X + 10, TopLeft.X + Points.ToArray()[ 0].Y + 80); Point DrawTo = newPoint(TopLeft.Y + Points.ToArray()[ 1].X + 10, TopLeft.X + Points.ToArray()[ 1].Y + 80); ControlPaint.DrawReversibleLine(DrawFrom, DrawTo, Color.Black); // draw new line} } 瑕疵
我发现了一个小问题,如果一台机器有多个监测的话。如果游戏在一个窗口中加载,并且它被移动到另一个窗口的话,则鼠标拖动在第一个窗口上保持疤痕标记。不必恐慌,它在游戏关闭后擦除。
到目前为止没有发现任何bug。如果你发现bug的话,欢迎留言。也欢迎提出你的意见。
这是一个字母拼图游戏,可预设单词,自定义单词词,对单个词类别计分。
试一试吧!
译文链接:http://www.codeceo.com/article/a-complete-word-puzzle-game-in-csharp.html
英文原文:A Complete Word Puzzle Game in C#.NET
翻译作者:码农网 – 小峰
原文链接:http://www.codeceo.com/article/a-complete-word-puzzle-game-in-csharp.html
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点您的位置:
&&2016最新的猜字谜游戏合集
机智猜字谜(Excellent Connection - Words)是一款考验玩家猜单词能力的益智游戏,现在已经登陆 i...
字谜就是以一个或几个汉字为谜底的谜语。这种谜语的编写或是利用了汉字的造字规律,或是利用了汉字形、音、义某一方面的特点,显得...
全民猜字谜是一款画面简洁以猜字谜为题材的益智类游戏,在游戏中玩家需要通过题目所给出的谜面猜测正确的谜底来获得分数,并解锁下...
疯狂猜字谜是一款画面非常简洁清新以猜字谜为题材的趣味益智类休闲游戏,在游戏中玩家需要通过仔细观察思考来完成关卡任务。中华文...
趣味猜字谜是一款基于字谜玩法的休闲手机游戏,游戏中有着众多的字谜等你来挑战,简单又有趣,还能愉悦身心,增长见识!
猜字谜是一款以谜语为题材的全中文休闲益智游戏,在游戏中玩家需要解谜。非常简单极易上手的游戏。全新版海量猜题游戏全新上市。通...
儿童猜字谜是一款画面非常简洁清新带有卡通丰富且充满趣味的知识竞赛类休闲游戏,在游戏中玩家需要通过回答题目问题来完成游戏的过...
猜猜字谜是一款益智问答类游戏,游戏中玩家要根据提示猜出答案,是一款锻炼大脑提升智慧的全新游戏,喜欢这种猜谜类的朋友不妨玩玩...
疯狂猜字谜2是一款画面非常精美以字谜为题材的趣味传统益智类游戏,在游戏中玩家需要通过观察题目来回答正确的答案。根据一段简洁...
天天猜字谜是一款画风非常清新且且趣味性十足的猜字游戏。本游戏中内置上万条字谜,在你浏览题目后可以很方便的点击屏幕下方查看答...
朵拉爱猜字谜是一款画面非常简洁清新以经典卡通人物朵拉为主角的趣味益智类猜谜游戏,在游戏中玩家需要根据游戏题目选择正确的答案...
疯狂纵横字谜(Cross Craze)是一款可以两个人玩的拼字汇竞赛休闲类游戏,主要在于考验玩家如何善用手上的英文字母来组...
趣味字谜是一款非常好玩的趣味类猜字谜手机游戏,游戏中你可以根据提示猜出对应的答案,快点让你的大脑高速的运转起来吧! 既休闲...
字谜猜猜猜是一款非常好玩的答题闯关游戏。猜图玩腻了?猜成语太难?那就来试试字谜猜猜猜吧,中华文字结构变化,蕴意万千,即使学...
朵拉爱字谜是一款非常益智而有趣的知识竞赛,游戏是一款考验儿童智力的游戏,让你的宝宝快速成长,智力得到开发! 在这个竞赛中,...
拼字谜(Bonza):猜测单词的构成将这些图形无规则的重新组合在一起,保证横排竖排都可以组成一个完整正确的单词。 拼字谜游...
这是一款非常有意思的解谜游戏,这款游戏欢乐中充满了智慧!赶紧来看看吧!你绝对会爱上它!
【游戏特色】 1.看名称就知道这...
拼字谜(Bonza)一款简单的英文单词拼凑游戏。玩家在一开始会得到不同数量方块随机组成的图形,每个图形上都存在若干字母,你...
成语字谜是一款超级好玩、寓教于乐的文字益智游戏,你只要按顺序选中一个成语的四个方块,这些方块就会消除。快速提高你对成语的熟...
邦扎字谜(Bonza Word Puzzle)是一款极其简约风格的益智类文字解谜游戏,是一种新型的字谜,已成为一个经典。它...
国家地理字谜(Bonza Word Puzzle)是一款有助玩家学习记忆英文单词的休闲益智类手机游戏,游戏主题也主要围绕着...
猜成语字谜是一款让你边玩边学习的益智类猜谜游戏,游戏中融合了休闲、娱乐、智慧于一身,保证能让你这个十一玩的开心满足!
《火爆消防员》是一款非常棒的消防员灭火的策略休闲游戏! 在游戏中,你需要帮助消防员们使用手中的水枪扑灭大火!使用你的聪明才...
娱乐圈之活色生香是一款文字RPG游戏,在游戏中合理选择推动剧情的发展,一起看看故事的结局吧!游戏故事描述的是:乐媛,一个喜...
妖界火爆新服安卓版是一款策略类养成游戏!妖界火爆新服游戏背景:一千年前,只因一个凡人无意中拿走了封印邪神的炼妖壶,不周山下...
100关卡(100 Levels)是一款十分考验玩家脑力的益智类游戏。游戏中你需要用手指点击屏幕控制圆球的方向来躲避障碍物...
钻石娱乐城是一款另类的消除游戏,相同颜色的钻石只要相连都可以一并消除,无论是横消还是竖消,你都有理由一次消除超大量钻石,当...
美人鱼的小伙伴是一款画面非常Q萌可爱的益智类消除手游,玩家通过消去屏幕左上角给出的形状的萌物,来获取分数或坚持存活至指定时...
娱乐无极限是一款画面清新可爱的休闲益智小游戏。游戏
虐心框架是一款史上最具挑战极限刺激好玩有趣的不限时免费热门小游戏,游戏延续了坑爹虐心的风格,考验玩家的节奏感、距离感、反应...
虐心的跳跃是一款超级虐心的火柴人跳跃类游戏游戏。在游戏中玩家要控制火柴人在雪山上进行跳跃,跳跃移动的平台到达雪峰。要注意的...
马格努斯博士的梦境空间2解锁版是一款画面非常神秘的冒险类解谜游戏,游戏是以西方魔幻世界为背景的,游戏玩法的挑战性也是非常的...
美人鱼公主新生宝宝是一款休闲模拟游戏。美人鱼要生宝宝都要注意什么呢,快来帮帮她吧,你难道不想看美丽的小家伙如何诞生吗? 美...
虐心球是一款考验玩家耐心与操作的小游戏,游戏规则简单,但是要想玩好可着实不容易,你是否具有这种技术呢?来挑战一下吧。 游戏...
梦境幽灵是一款闯关的益智类小游戏。玩家需要操控小精灵,躲避障碍物,最终移动到同伴处,即可过关。 梦境幽灵游戏特点 画风诡异...
西游记之月光宝盒单机版是一款为你开启荣誉之路的对战类角色扮演手机游戏,本作是以经典大话西游为设计理念的,更有全新等级、全新...
梦境小鬼 Dream Meanies是一款消除类小游戏,游戏画面十分可爱,各种可爱的小怪物充斥在奇异的梦中,让我们来看看小...
虐心火柴人3是一款画面非常简洁清新以黑白为主色调的休闲类游戏,在游戏中玩家需要控制火柴人去完成各种简答却又内心的游戏任务。...
虐心换位:形状匹配(Swap It
Match The Shapes)是一款非常考验玩家左右脑反应程度的益智类休闲游戏,...
宝石星星消消乐是一款有着不同挑战模式的交换类消除手机游戏,游戏的画面非常的绚丽多彩,你可以根据互相交换宝石来到到消除的效果...
益智宝石大消除是一款玩法有点类似于经典2048的益智类消除游戏,这款游戏拥有无止境的挑战,快来挑战自己的最高战绩。 休闲益...
轻松斗地主是一款Q萌可爱风格的单机类斗地主棋牌手游,玩这款游戏无需任何流量让你可以轻松的与好友一起竞技比赛,赶紧来下载放松...
小黄鸭爱消除2是一款简单有趣的消除玩法休闲手机小游戏,游戏简单易上手,还有海量福利哦,可爱的少女等你来邂逅,喜欢的小伙伴一...
可爱泡泡是一款画面非常简单清新风格非常可爱的趣味泡泡射击类消除游戏,在游戏中玩家需要控制泡泡去完成一系列的射击消除任务。游...
加菲猫爱消除是一款画面非常精美华丽以经典动漫加菲猫为题材的益智类三消休闲游戏,在游戏中玩家需要控制滑动将相同的元素消除来完...
梦境之河(River Of Dreams)是一款代入感极强的虚拟类手机游戏,游戏的场景设计的比较的真实,本作非常适合玩家打...
天天宝石消除是一款简单的宝石消除玩法的休闲小游戏,游戏十分小巧精致,简单易上手的独特奇趣玩法,喜欢的小伙伴就来下载玩耍体验吧!
糖果娱乐是一款画面非常精美以糖果为题材的益智类消除游戏,在游戏中玩家需要控制滑动糖果来完成游戏的消除任务。游戏是一个充满了...
可爱泡泡龙是一款基于趣味泡泡龙玩法的手机小游戏,可爱的画风,配上带感的背景音乐,丰富多变的关卡,带给玩家无限的乐趣!
火爆排雷是一款休闲益智游戏,游戏玩法是经典的扫雷,在全部都是雷区的地方,我们要用自己的技术和运气,排除所有的地雷,快来看看...
小可爱是一款画面非常精美带有可爱清新风格的益智类休闲游戏,在游戏中玩家需要控制小熊完成前进任务,并尽可能多的搜集金币。为了...
可爱的装扮是一款能让玩家发挥强大想象力的趣味装扮类休闲游戏,在游戏中玩家需要控制主角去完成一系列的装扮打扮任务。你可以改变...
星猫爱消除激爽版是一款有着原汁原味的星猫消除类游戏,这款游戏有着最可爱、最Q萌的画面,玩起来也是非常的棒棒哒哦,赶紧召集小...
开开爱消除是一款画面非常精美清新带有Q版卡通风格的趣味益智类消除游戏,在游戏中玩家需要通过简单的点击滑动来完成消除任务。游...
四人单机飞行棋是一款画面非常简洁清新以飞行棋为题材的趣味益智类棋牌类游戏,在游戏中玩家可以和电脑完成对战任务,比谁的飞机先...
皇家宝贝可爱农场是一款简单有趣的益智类的模拟农场玩法的休闲益智小游戏,游戏非常简单易上手,喜欢的小伙伴就来下载玩耍体验吧!
火爆战宇是一款画面非常精美清新以森林为背景的趣味横版跑酷类游戏,在游戏中玩家需要控制主角不停的往前跑酷并躲避各种障碍,尽可...
恶人谷斗地主是一款非常经典的斗地主玩法的棋牌类的手机游戏,游戏十分益智,而且还有众多的美女相随哟,不要错过这样一款斗地主游戏吧!
开心风之旅单机版是一款拥有全新人物、全新超爽体验的敏捷类跑酷手游,本作中会有各种丰富多彩的关卡等你来挑战,还会有各种强力B...
黑暗寓言8:小美人鱼与紫色潮汐豪华版(Dark Parables: The Little Mermaid and the ...
边锋斗地主破解版是一款让你爆笑满屏的斗地主类棋牌手游,这款游戏中牌型号、炸弹多让你可以金币翻倍嗨翻天,另外还能够每日领钱畅...
全番单机麻将是一款简单有趣的麻将题材的经典的棋牌游戏,游戏非常精致,经典的麻将再现,喜欢麻将的小伙伴不妨下载玩耍体验吧!
梦境旋律是一款旋律画风都十分唯美的节奏类闯关手机游戏,游戏的剧情十分的丰富,进入游戏后你会跟随着这些旋律展开一场疯狂的冒险...
2048关卡是一款类似2048风格的经典休闲类游戏。万众期盼的《2048关卡》终于来啦!拥有全球千万玩家推崇玩法,开创了休...
梦境三是一款属于单机类的益智冒险类的消除游戏,游戏内是一片冰河世界,炎炎夏日给你带来清爽的心情,做最酷炫的连线爆破杀手,让...
疯狂娱乐台球游戏是一款经典的台球游戏,让您随意玩,随机打,内置练习赛,排行榜,漂亮的游戏界面,完善的游戏系统,真实的桌球效...
美人鱼之海盗来袭是一款RPG类手机游戏,经由著名童话故事的动画电影改编,传统游戏只是针对游戏爱好者,作为一种小众文化存在,...
逃离美人鱼的牢笼2(Mermaid2)是一款益智冒险逃脱类手机游戏。游戏采用3D效果,有条人鱼被困在里面,出不来了,因为水...
黑暗寓言:小美人鱼与紫色潮汐(Dark Parables: The Little Mermaid and the Purp...
咦美人鱼翻翻乐是一款休闲益智的升级版连连看游戏,不仅考验你的眼力,更是考验你记忆力的时刻到了,所有的图案都是以卡片的形式反...
可可娱乐一款消除游戏,可爱清新的画面,轻松乐趣的背景音乐,5种不同的场景选择,活泼可爱的游戏主角可爱的小鸟们陪你度过无数的...
火爆战机一款科幻题材的飞行射击游戏,独特且神秘的星际战机:蓝色炫光战机子弹范围广,红色烈焰战机火力集中,各有特色,弹幕绚丽...
火爆竞速:碰撞与燃烧安卓版是一款超级刺激超级暴力的赛车竞速类游戏!在这款游戏中,你可以买到任意一款你想要的车,你可以装备不...
虐心方块是一款史上最具挑战极限刺激好玩有趣的不限时免费热门小游戏,游戏延续了坑爹虐心的风格,考验玩家的节奏感、距离感、反应...
虐心之根本停不下来是一款超级虐心的游戏,小编认为比看韩剧还虐心啊!游戏中的黑色火柴人会左右来回地向前奔跑,同时空中会有石头...
虐心的双球是一款非常有趣的敏捷类休闲游戏。游戏采用简约清新画风设计十分小清新,操作简单容易上手,丰富的游戏内容和有趣具有挑...
重口味娱乐是一款趣味娱乐的休闲游戏,摇一摇,乐一乐,大便大便。对各种各样的大便进行分类与解释。方便的娱乐软件,简单的人品测...
极速关卡2是一款好玩又刺激的赛车竞速类游戏,极速关卡2的场景做得还是不错的,只是控制不是很方便。在这款游戏中,你可以驾驶一...
虐心忍者是一款史上最有趣坑爹虐心的挑战极限轻松刺激的免费休闲小游戏。游戏以愉悦诙谐的表达方式讲述了两个仇敌忍者之间奔跑追逐...
虐心联萌是一款非常有趣的益智大作,游戏画面精美,障碍物新奇多变,能够带给玩家最真实的体验。
梦境找宝石是一款十分梦幻的休闲益智类游戏,游戏画面非常不错,在一个童话世界中,你要救出可怜的小女孩,来看看自己是否能收集到...
丝锥美人鱼公主是一款超级简单的游戏,游戏画面精致美丽,我们要让一致的美人鱼各自归队,不要把她放错队伍哦。 美人鱼是游戏开发...
美人鱼冒险的孩子是一款专门为宝宝设计的游戏,游戏画面精致,海底画面美轮美奂,相信宝宝一定会喜欢这款游戏,快来和宝宝一起玩吧...
幻想美人鱼是一款大鱼吃小鱼的游戏,不过这里面会成长的可是美人鱼哦,来看着自己的美人鱼一点点长大吧。 情节类似于大鱼吃小鱼,...
飞天历险梦境大冒险是一款动作冒险类手游。在游戏中拥有四大种族任你选、超快速上手、最简单的操作、丰富的游戏内容、高自由度玩法...
突然出现的额外关卡(Sudden Bonus)是一款像素风格的动作游戏,游戏主要以按出符合颜色要求的组合为主,因此考验眼力...
美人鱼是一款以海洋为主题的三消游戏,海洋的动物们深受垃圾的伤害,用你的双手拯救可爱的海洋动物们,帮助美人鱼完成女王使命!
全民爱消除青春版是一款画面非常清新精美洋溢着青春气息的消除类游戏,在游戏中玩家需要控制各种元素的点击移动操作,将相同的元素...
可爱公主换装是一款基于趣味公主换装玩法的手机游戏,游戏中玩家将体验一段十分清新唯美梦幻的换装之旅,快来为可爱的小公主换上好...
星座消除传奇破解版是一款简单的趣味十足的消除玩法的休闲手机游戏,游戏中有着大量消除道具,关卡方面也是非常丰富多变,快来下载...
梦境是一款简单有趣的解谜逃脱类的休闲手机游戏,游戏十分唯美而奇幻,喜欢的玩家就快来下载玩耍吧!
美女斗地主激情版3是一款非常出色经典的扑克棋牌斗地主玩法的手机游戏,玩家一定会在闲暇时分来几发,游戏中还有可爱的少女陪伴哦...
单机版斗地主HD是一款简单而经典的斗地主手机游戏,斗地主作为国民最爱的扑克类游戏之一,一起简单易上手和火爆的玩法独领风骚,...
火爆捕鱼HD是一款国内首款切鱼玩法的手指划屏休闲类手游,这款游戏的画面非常的精致,还有各中大奖在等着你的到来,让你一夜暴富...
全民娱乐是一款全民一起嗨的趣味棋牌类游戏的集合手机游戏,游戏中玩家可以体验众多的娱乐玩法,只有你想不到,快来下载玩耍体验吧!
可爱数字结合是一款画面非常精美以数字为题材风格清新可爱的益智类休闲游戏,在游戏中玩家需要控制数字完成消除任务。用数字来玩儿...
绵羊的梦境是一款简单有趣的跳跃类的休闲手机游戏,游戏中有着十分轻松写意的闯关冒险玩法,小清新的画面非常值得体验!
萌萌糖果爱消除是一款画面非常精美清新以美味的糖果为题材的趣味益智类消除游戏,在游戏中玩家需要控制糖果滑动来完成消除任务。游...
可爱榛果宝贝弄伤了腿是一款画面非常精美清新以可爱的小宝贝为题材的趣味益智类休闲游戏,在游戏中玩家需要使用各种道具来给宝贝处...
单机扫雷是一款画面非常简洁清新以扫雷为题材的经典趣味益智类游戏,在游戏中玩家需要通过点击和思考完成扫雷的任务。游戏的规则简...
最新软件应用合集
CopyRight2004年-年 YXdown.Com 游迅网 All Rights Reserved
备案编号:沪ICP备号-3}

我要回帖

更多关于 沈阳好玩的地方 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信