分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

AVG,英文全称Adventure Game,缩写为AVG或ADV,是电子游戏中的一个大类就足够了。事实上,AVG的范畴相当庞杂,很难单纯用文字说清,关于AVG游戏,笔者此处不想解释太细,以前的博文中也已经说过很多次了。如果谁想要完整了解它的涵义,可以去追《只有神知道的世界》这部漫画,虽不中,亦不远也。

 

传统形式的冒险游戏黄金时期,几乎和80年代前半的8位元电脑风潮同时期。虽然此后让出了电子游戏主角的位置,不过在手机功能发达之后,亦有过去名作陆续移植的动作。就笔者来看,AVG游戏可以算得上最适合在Android上普及的游戏类型之一,这是AVG游戏的特性所决定的。

 

我们大家都知道,早期的计算机游戏基本上是通过文字来进行的,也就是所谓的文字游戏。玩家在电脑终端以文本的方式输入指令,系统也以文字的方式提供反馈。这种文字式的AVG(冒险游戏)堪称现代RPG游戏的鼻祖,它的多人在线版本MUD(都还记得《网络创世纪》吧?),则直接演变成了如今的各种网络游戏。这种类型的游戏能够获得成功,其非线性的故事情节起到了关键性的作用。但随着技术的发展,欧美的游戏制作者们渐渐抛弃了文字AVG的平台,而把精力转入了如Doom、Quake这样靠强大的图像引擎取胜的游戏开发。

 

所幸的是,文字AVG游戏并没有因此消亡,而是被精明的日本游戏制作人所采用,在突飞猛进的日本游戏市场获得了新生,并逐步发展成为当今著名的日式AVG流派,守住了一片天空。而由日式AVG游戏衍生出来的旁支:互动电子小说,则更是吸引了越来越多的Fans,在日本的游戏产业中占据了重要的地位。

 

所谓日式AVG,就是在最初的文字冒险游戏的基础上利用精美的CG图片和动人的音响效果加以强化,靠优秀的文字和剧情打动人心的一种游戏形式。比如《心跳回忆》这样的恋爱游戏,玩家通过指令控制主人公的行动,而效果则通过屏幕上的CG图片和剧情文字(主要是对话)来表示,这就是典型的日式AVG游戏。互动电子小说与传统的日式AVG相比较往往描写更细致,情节更动人,具有更高的内涵,且文字量大,引人入胜的剧情是其主要魅力。这种互动电子小说一般出自专业作家之手,文学性极强,题材涉及面广,爱情、侦探、恐怖等无所不包。

 

此类型游戏多采取玩家输入或选择指令以改变行动的形式进行,强调故事线索的发掘,主要考验玩家的观察力和分析能力。游戏有时候很像角色扮演游戏,但不同的是,冒险游戏中玩家操控的游戏主角本身的属性能力一般是固定不变并且不会影响游戏的进程。

 

“费时不费力,劳心不劳神”,AVG先天具备的这种游戏特性,决定了它与网络小说一样,生来就是吸引广大“闲人”参与的“手机杀手级”应用。打不通《波斯王子》的“小白”大有人在,打不通AVG的“小白”(不是指全结局通关|||),却几乎不存在于这个世界之上。

 

 

关于日式AVG与互动电子小说的开发,主要有三个方面的因素:游戏引擎、游戏剧本/游戏脚本编写、CG和音效制作。

 

一、游戏引擎

 

需要指出的是,日式AVG与互动电子小说的游戏引擎的基本结构通常是相当简单的。其原理是按一定格式读取制作好的故事脚本,再从资源文件中取出相应的文字信息或CG图片等在屏幕上展示出来。一个普通的程序员(不一定要专业搞游戏,例如偶这样的)完全有能力胜任这方面的开发工作。而且,现在市场上有很多公开发售甚至免费的AVG引擎(请参见笔者博文:同人游戏开发工具巡礼——AVG(ADV)引擎篇),都已经有了相当高的集成度。

 

二、游戏剧本/脚本编写

 

剧本方面可以原创,也可以拿现有的文学作品改编。剧本不一定要出自专业作家之手,但是,最好他能够具备一定的知名度或者受众群体,因为一个著名的作家,不但可以提供优质的剧情,还可以作为产品的一大卖点用来炒作。与传统小说不同的是,AVG游戏更强调的是一种非线性的故事结构,玩家选择不同的分支可以引入不同的结局,这一点是至关重要的,否则,游戏的乐趣将大打折扣。剧本完成之后,将由专门的录入人员以特定的格式转化为游戏脚本(Script),供游戏引擎使用。关于脚本格式,可以自行定制,也可以使用现成的脚本语言(比如Lua),没有强制的规定,但是同一系列游戏中应该尽量统一脚本语言。

 

三、CG和音效

 

事实上,这才是一部AVG游戏成功的关键之所在。历史上所有成功的日式AVG游戏无不具有非常优秀的美工和音效。比如《Fate》就因为包括了许多漂亮的CG图画和非常好听的人物配音,而一夜成名,从最初的同人H游戏,转为了正归的galgame。精美的图像和动听的音响,已经不再仅仅是对文字剧情的强化,而成为了整个故事的有机组成部分,是其区别于纸上读物的重要标志。我常和人说,想推游戏,那么“一策划、二美工、三程序”(呜呜呜呜~),指的就是这么一回事。

 

下图为2009年,以传说中的国产游戏引擎【古月引擎】开发的传说中的国产AVG游戏大作《红楼梦》(说实话,笔者更怀念当初智冠的《红楼梦之十二金钗》……)

 

00

 

01

 

说了半天,现在,我们自己也来写一款能够运行在Android上的AVG游戏引擎吧!

 

源码下载地址:http://code.google.com/p/loon-simple/downloads/list

 

Android版源码(PC版请见以前博文,不再赘述)

 

[java] view plain copy print?
  1. package org.loon.framework.android.game.avg;  
  2. import java.util.List;  
  3. import org.loon.framework.android.game.LAFont;  
  4. import org.loon.framework.android.game.LAGraphics;  
  5. import org.loon.framework.android.game.LAGraphicsUtils;  
  6. import org.loon.framework.android.game.LAScreen;  
  7. import org.loon.framework.android.game.LASystem;  
  8. import org.loon.framework.android.game.LTimerContext;  
  9. import org.loon.framework.android.game.command.Command;  
  10. import android.graphics.Color;  
  11. import android.view.KeyEvent;  
  12. import android.view.MotionEvent;  
  13. /** 
  14.  *  
  15.  * Copyright 2008 - 2009 
  16.  *  
  17.  * Licensed under the Apache License, Version 2.0 (the "License"); you may not 
  18.  * use this file except in compliance with the License. You may obtain a copy of 
  19.  * the License at 
  20.  *  
  21.  * http://www.apache.org/licenses/LICENSE-2.0 
  22.  *  
  23.  * Unless required by applicable law or agreed to in writing, software 
  24.  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 
  25.  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 
  26.  * License for the specific language governing permissions and limitations under 
  27.  * the License. 
  28.  *  
  29.  * @project loonframework 
  30.  * @author chenpeng 
  31.  * @email <a title="" href="http://hi.baidu.com/ceponline" mce_href="http://hi.baidu.com/ceponline" target="_blank">ceponline</a>@yahoo.com.cn 
  32.  * @version 0.1.0 
  33.  */  
  34. public class AVGScript extends LAScreen {  
  35.     private int color = -1;  
  36.     private int sleep, sleepMax;  
  37.     private boolean isClick,isNext, isMessage, isSelectMessage,run;  
  38.     private String scriptName;  
  39.     private int stringMaxLine = 8, selectFlag = 0;  
  40.     private String roleName;  
  41.     private CG cg;  
  42.     private Command command;  
  43.     private MessagePrint mesPrint = new MessagePrint(0210);  
  44.     private String[] selectMessages;  
  45.     private int[] flags;  
  46.     public AVGScript(final String initscript) {  
  47.         format(initscript);  
  48.     }  
  49.     public void format(final String initscript) {  
  50.         initialize(initscript);  
  51.         runScript(scriptName);  
  52.     }  
  53.     private void initialize(final String initscript) {  
  54.         scriptName = initscript;  
  55.         sleep = 0;  
  56.         selectFlag = 0;  
  57.         isClick = false;  
  58.         isSelectMessage = false;  
  59.         isMessage = false;  
  60.         cg = new CG();  
  61.         selectMessages = new String[stringMaxLine];  
  62.         flags = new int[stringMaxLine];  
  63.       
  64.     }  
  65.     public void finalize() {  
  66.         flush();  
  67.     }  
  68.     public void flush() {  
  69.         cg = null;  
  70.         mesPrint = null;  
  71.         selectMessages = null;  
  72.         flags = null;  
  73.     }  
  74.     public boolean nextMessages() {  
  75.         return mesPrint.next();  
  76.     }  
  77.     /** 
  78.      * 绘制游戏界面 
  79.      */  
  80.     public void draw(LAGraphics g) {  
  81.         if (sleep == 0) {  
  82.             if (cg.getBackgroundCG() != null) {  
  83.                 g.drawImage(cg.getBackgroundCG(), 00);  
  84.             }  
  85.             int moveCount = 0;  
  86.             for (int i = 0; i < cg.getCharas().size(); i++) {  
  87.                 Chara chara = (Chara) cg.getCharas().get(i);  
  88.                 float value = 1.0f;  
  89.                 if (chara.next()) {  
  90.                     value = chara.getNextAlpha();  
  91.                     moveCount++;  
  92.                 }  
  93.                 g.setAlpha(value);  
  94.                 chara.draw(g);  
  95.                 g.setAlpha(1.0f);  
  96.             }  
  97.             if (isMessage && selectMessages != null  
  98.                     && selectMessages.length > 0) {  
  99.                 int size = 20;  
  100.                 Message.dialog.showDialog(g);  
  101.                 LAFont font = g.getFont();  
  102.                 g.setFont("黑体"0, size);  
  103.                 g.setAntiAlias(true);  
  104.                 g.setColor(Color.WHITE);  
  105.                 Message.dialog.showRoleName(g, roleName);  
  106.                 if (isSelectMessage) {  
  107.                     char[] meschars;  
  108.                     int sizeWidth = -(size * 2);  
  109.                     int left = Message.dialog.getMESSAGE_LINE_X() + 2;  
  110.                     int top = Message.dialog.getMESSAGE_LINE_Y() + 20;  
  111.                     for (int i = 0; i < stringMaxLine; i++) {  
  112.                         meschars = selectMessages[i].toCharArray();  
  113.                         for (int j = 0; j < meschars.length; j++) {  
  114.                             g  
  115.                                     .drawString(String.valueOf(meschars[j]),  
  116.                                             (size * j) + left - sizeWidth, top  
  117.                                                     + i * 20);  
  118.                         }  
  119.                         if (flags[selectFlag] != -1) {  
  120.                             Message.dialog.showDialog(g, selectFlag, size,  
  121.                                     LASystem.FONT_SIZE);  
  122.                         }  
  123.                     }  
  124.                 } else {  
  125.                     mesPrint.next();  
  126.                     mesPrint.draw(g);  
  127.                 }  
  128.                 g.setAntiAlias(false);  
  129.                 g.setFont(font);  
  130.             }  
  131.         } else {  
  132.             sleep--;  
  133.             if (color != -1) {  
  134.                 float alpha = (float) (sleepMax - sleep) / sleepMax;  
  135.                 if (alpha < 0.7) {  
  136.                     if (cg.getBackgroundCG() != null) {  
  137.                         g.drawImage(cg.getBackgroundCG(), 00);  
  138.                     }  
  139.                     g.setAlpha(alpha);  
  140.                     g.setColor(color);  
  141.                     g.fillRect(00, getWidth(), LASystem.getSystemHandler()  
  142.                             .getHeight());  
  143.                     g.setAlpha(1.0f);  
  144.                 }  
  145.             }  
  146.         }  
  147.     }  
  148.     public void addCG(String fileName) {  
  149.         addCG(fileName, 00);  
  150.     }  
  151.     public void addCG(String fileName, int x, int y) {  
  152.         cg.addImage(fileName, x, y);  
  153.     }  
  154.     public synchronized void select(int type) {  
  155.         if (command != null) {  
  156.             command.select(type);  
  157.             isSelectMessage = false;  
  158.         }  
  159.     }  
  160.     public synchronized String getSelect() {  
  161.         if (command != null) {  
  162.             return command.getSelect();  
  163.         }  
  164.         return null;  
  165.     }  
  166.     private void resetFlag() {  
  167.         if (!isMessage) {  
  168.             return;  
  169.         }  
  170.         if (selectMessages != null) {  
  171.             int count = (getTouch().y - Message.dialog.getMESSAGE_LINE_Y()) / 25;  
  172.             if (count < 0) {  
  173.                 count = 0;  
  174.                 return;  
  175.             }  
  176.             if (count >= stringMaxLine) {  
  177.                 count = 0;  
  178.                 return;  
  179.             }  
  180.             if (flags[count] != -1) {  
  181.                 isClick = true;  
  182.             }  
  183.             int maxSize = 0;  
  184.             for (; maxSize < selectMessages.length; maxSize++) {  
  185.                 if (selectMessages[maxSize].length() == 0) {  
  186.                     break;  
  187.                 }  
  188.             }  
  189.             maxSize -= 1;  
  190.             if (maxSize > 0 && count > maxSize) {  
  191.                 count = maxSize;  
  192.             }  
  193.             selectFlag = count;  
  194.         }  
  195.     }  
  196.     private synchronized void nextScript() {  
  197.         isMessage = false;  
  198.         isClick = false;  
  199.         int count = 0;  
  200.         for (int i = 0; i < stringMaxLine; i++) {  
  201.             selectMessages[i] = "";  
  202.             flags[i] = -1;  
  203.         }  
  204.         if (command != null) {  
  205.             for (; command.next();) {  
  206.                 // 返回本行命令执行结果  
  207.                 String result = command.doExecute();  
  208.                 if (result == null) {  
  209.                     nextScript();  
  210.                     break;  
  211.                 }  
  212.                 // 分解命令  
  213.                 List commands = Command.splitToList(result, " ");  
  214.                 int size = commands.size();  
  215.                 String cmdFlag = (String) commands.get(0);  
  216.                 String mesFlag = null, orderFlag = null, lastFlag = null;  
  217.                 if (size == 2) {  
  218.                     mesFlag = (String) commands.get(1);  
  219.                 } else if (size == 3) {  
  220.                     mesFlag = (String) commands.get(1);  
  221.                     orderFlag = (String) commands.get(2);  
  222.                 } else if (size == 4) {  
  223.                     mesFlag = (String) commands.get(1);  
  224.                     orderFlag = (String) commands.get(2);  
  225.                     lastFlag = (String) commands.get(3);  
  226.                 }  
  227.                 if (cmdFlag.equalsIgnoreCase("wait")) {  
  228.                     isMessage = true;  
  229.                     break;  
  230.                 }  
  231.                 if (cmdFlag.equalsIgnoreCase("mes")) {  
  232.                     roleName = null;  
  233.                     isMessage = true;  
  234.                     roleName = Command.getNameTag(mesFlag, "{""}");  
  235.                     String nMessage = null;  
  236.                     if (roleName != null) {  
  237.                         int nameLength = roleName.length() + 2;  
  238.                         nMessage = mesFlag.substring(nameLength, mesFlag  
  239.                                 .length());  
  240.                     } else {  
  241.                         nMessage = mesFlag;  
  242.                     }  
  243.                     mesPrint.setMessage(nMessage);  
  244.                     flags[count] = -1;  
  245.                     if (++count == stringMaxLine) {  
  246.                         break;  
  247.                     }  
  248.                     break;  
  249.                 }  
  250.                 if (cmdFlag.equalsIgnoreCase("selects")) {  
  251.                     isMessage = true;  
  252.                     isSelectMessage = true;  
  253.                     String[] selects = command.getReads();  
  254.                     for (int i = 0; i < selects.length; i++) {  
  255.                         selectMessages[i] = selects[i];  
  256.                         flags[i] = i;  
  257.                     }  
  258.                     break;  
  259.                 }  
  260.                 if (cmdFlag.equalsIgnoreCase("fname")) {  
  261.                     roleName = null;  
  262.                     break;  
  263.                 }  
  264.                 if (cmdFlag.equalsIgnoreCase("cgwait")) {  
  265.                     isMessage = false;  
  266.                     break;  
  267.                 }  
  268.                 if (cmdFlag.equalsIgnoreCase("sleep")) {  
  269.                     sleep = Integer.valueOf(mesFlag).intValue();  
  270.                     sleepMax = Integer.valueOf(mesFlag).intValue();  
  271.                     isMessage = false;  
  272.                     break;  
  273.                 }  
  274.                 if (cmdFlag.equalsIgnoreCase("flash")) {  
  275.                     String[] colors = mesFlag.split(",");  
  276.                     if (color == -1 && colors != null && colors.length == 3) {  
  277.                         color = Color.rgb(  
  278.                                 Integer.valueOf(colors[0]).intValue(), Integer  
  279.                                         .valueOf(colors[1]).intValue(), Integer  
  280.                                         .valueOf(colors[2]).intValue());  
  281.                         sleep = 20;  
  282.                         sleepMax = sleep;  
  283.                         isMessage = false;  
  284.                     } else {  
  285.                         color = -1;  
  286.                     }  
  287.                     break;  
  288.                 }  
  289.                 if (cmdFlag.equalsIgnoreCase("run")) {  
  290.                     run = true;  
  291.                     isMessage = false;  
  292.                     continue;  
  293.                 }  
  294.                 if (cmdFlag.equalsIgnoreCase("gb")) {  
  295.                     if (mesFlag == null) {  
  296.                         return;  
  297.                     }  
  298.                     if (mesFlag.equalsIgnoreCase("none")) {  
  299.                         cg.setBackgroundCG(null);  
  300.                     } else {  
  301.                         cg  
  302.                                 .setBackgroundCG(LAGraphicsUtils  
  303.                                         .loadLAImage(mesFlag));  
  304.                     }  
  305.                     continue;  
  306.                 }  
  307.                 if (cmdFlag.equalsIgnoreCase("cg")) {  
  308.                     if (mesFlag == null) {  
  309.                         return;  
  310.                     }  
  311.                     // 删除  
  312.                     if (mesFlag.equalsIgnoreCase("del")) {  
  313.                         if (orderFlag != null) {  
  314.                             cg.removeImage(orderFlag);  
  315.                         } else {  
  316.                             cg.clear();  
  317.                         }  
  318.                     } else if (lastFlag != null  
  319.                             && "to".equalsIgnoreCase(orderFlag)) {  
  320.                         Chara chara = cg.removeImage(mesFlag);  
  321.                         if (chara != null) {  
  322.                             int x = chara.getX();  
  323.                             int y = chara.getY();  
  324.                             chara = new Chara(lastFlag, 00);  
  325.                             chara.setMove(false);  
  326.                             chara.setX(x);  
  327.                             chara.setY(y);  
  328.                             cg.addChara(lastFlag, chara);  
  329.                         }  
  330.                     } else {  
  331.                         // 移动  
  332.                         int x = 0, y = 0;  
  333.                         if (orderFlag != null) {  
  334.                             x = Integer.parseInt(orderFlag);  
  335.                         }  
  336.                         if (size >= 4) {  
  337.                             y = Integer.parseInt((String) commands.get(4));  
  338.                         }  
  339.                         cg.addImage(mesFlag, x, y);  
  340.                     }  
  341.                     continue;  
  342.                 }  
  343.             }  
  344.         }  
  345.     }  
  346.     private synchronized void runScript(final String fileName) {  
  347.         if (fileName == null) {  
  348.             return;  
  349.         }  
  350.         if (command == null) {  
  351.             command = new Command(fileName);  
  352.             // 刷新脚本缓存  
  353.             Command.resetCache();  
  354.         } else {  
  355.             command.formatCommand(fileName);  
  356.         }  
  357.         nextScript();  
  358.     }  
  359.     public void alter(LTimerContext timer){  
  360.         resetFlag();  
  361.     }  
  362.     public boolean onKeyDown(int keyCode, KeyEvent e) {  
  363.         return false;  
  364.     }  
  365.     public boolean onKeyUp(int keyCode, KeyEvent e) {  
  366.         return false;  
  367.     }  
  368.     public boolean onTouchDown(MotionEvent e) {   
  369.          if (run) {  
  370.          setScreen(new Title());  
  371.          return true;  
  372.          }  
  373.         if (!isSelectMessage && sleep <= 0) {  
  374.             if (!isMessage) {  
  375.                 isMessage = true;  
  376.             }  
  377.             isNext = true;  
  378.         } else if (isMessage && isClick) {  
  379.             if (flags[selectFlag] != -1) {  
  380.                 // 变更选择变量  
  381.                 select(flags[selectFlag]);  
  382.                 isNext = true;  
  383.                 isSelectMessage = false;  
  384.             }  
  385.         }  
  386.         if (isNext && !isSelectMessage) {  
  387.             // 逐行解释执行脚本  
  388.             nextScript();  
  389.         }  
  390.         return true;  
  391.     }  
  392.     public boolean onTouchMove(MotionEvent e) {  
  393.         resetFlag();  
  394.         return false;  
  395.     }  
  396.     public boolean onTouchUp(MotionEvent e) {  
  397.         return false;  
  398.     }  
  399. }  
package org.loon.framework.android.game.avg;import java.util.List;import org.loon.framework.android.game.LAFont;import org.loon.framework.android.game.LAGraphics;import org.loon.framework.android.game.LAGraphicsUtils;import org.loon.framework.android.game.LAScreen;import org.loon.framework.android.game.LASystem;import org.loon.framework.android.game.LTimerContext;import org.loon.framework.android.game.command.Command;import android.graphics.Color;import android.view.KeyEvent;import android.view.MotionEvent;/** *  * Copyright 2008 - 2009 *  * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *  * http://www.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. *  * @project loonframework * @author chenpeng * @email <a title="" href="http://hi.baidu.com/ceponline" mce_href="http://hi.baidu.com/ceponline" target="_blank">ceponline</a>@yahoo.com.cn * @version 0.1.0 */public class AVGScript extends LAScreen { private int color = -1; private int sleep, sleepMax; private boolean isClick,isNext, isMessage, isSelectMessage,run; private String scriptName; private int stringMaxLine = 8, selectFlag = 0; private String roleName; private CG cg; private Command command; private MessagePrint mesPrint = new MessagePrint(0, 210); private String[] selectMessages; private int[] flags; public AVGScript(final String initscript) {  format(initscript); } public void format(final String initscript) {  initialize(initscript);  runScript(scriptName); } private void initialize(final String initscript) {  scriptName = initscript;  sleep = 0;  selectFlag = 0;  isClick = false;  isSelectMessage = false;  isMessage = false;  cg = new CG();  selectMessages = new String[stringMaxLine];  flags = new int[stringMaxLine];  } public void finalize() {  flush(); } public void flush() {  cg = null;  mesPrint = null;  selectMessages = null;  flags = null; } public boolean nextMessages() {  return mesPrint.next(); } /**  * 绘制游戏界面  */ public void draw(LAGraphics g) {  if (sleep == 0) {   if (cg.getBackgroundCG() != null) {    g.drawImage(cg.getBackgroundCG(), 0, 0);   }   int moveCount = 0;   for (int i = 0; i < cg.getCharas().size(); i++) {    Chara chara = (Chara) cg.getCharas().get(i);    float value = 1.0f;    if (chara.next()) {     value = chara.getNextAlpha();     moveCount++;    }    g.setAlpha(value);    chara.draw(g);    g.setAlpha(1.0f);   }   if (isMessage && selectMessages != null     && selectMessages.length > 0) {    int size = 20;    Message.dialog.showDialog(g);    LAFont font = g.getFont();    g.setFont("黑体", 0, size);    g.setAntiAlias(true);    g.setColor(Color.WHITE);    Message.dialog.showRoleName(g, roleName);    if (isSelectMessage) {     char[] meschars;     int sizeWidth = -(size * 2);     int left = Message.dialog.getMESSAGE_LINE_X() + 2;     int top = Message.dialog.getMESSAGE_LINE_Y() + 20;     for (int i = 0; i < stringMaxLine; i++) {      meschars = selectMessages[i].toCharArray();      for (int j = 0; j < meschars.length; j++) {       g         .drawString(String.valueOf(meschars[j]),           (size * j) + left - sizeWidth, top             + i * 20);      }      if (flags[selectFlag] != -1) {       Message.dialog.showDialog(g, selectFlag, size,         LASystem.FONT_SIZE);      }     }    } else {     mesPrint.next();     mesPrint.draw(g);    }    g.setAntiAlias(false);    g.setFont(font);   }  } else {   sleep--;   if (color != -1) {    float alpha = (float) (sleepMax - sleep) / sleepMax;    if (alpha < 0.7) {     if (cg.getBackgroundCG() != null) {      g.drawImage(cg.getBackgroundCG(), 0, 0);     }     g.setAlpha(alpha);     g.setColor(color);     g.fillRect(0, 0, getWidth(), LASystem.getSystemHandler()       .getHeight());     g.setAlpha(1.0f);    }   }  } } public void addCG(String fileName) {  addCG(fileName, 0, 0); } public void addCG(String fileName, int x, int y) {  cg.addImage(fileName, x, y); } public synchronized void select(int type) {  if (command != null) {   command.select(type);   isSelectMessage = false;  } } public synchronized String getSelect() {  if (command != null) {   return command.getSelect();  }  return null; } private void resetFlag() {  if (!isMessage) {   return;  }  if (selectMessages != null) {   int count = (getTouch().y - Message.dialog.getMESSAGE_LINE_Y()) / 25;   if (count < 0) {    count = 0;    return;   }   if (count >= stringMaxLine) {    count = 0;    return;   }   if (flags[count] != -1) {    isClick = true;   }   int maxSize = 0;   for (; maxSize < selectMessages.length; maxSize++) {    if (selectMessages[maxSize].length() == 0) {     break;    }   }   maxSize -= 1;   if (maxSize > 0 && count > maxSize) {    count = maxSize;   }   selectFlag = count;  } } private synchronized void nextScript() {  isMessage = false;  isClick = false;  int count = 0;  for (int i = 0; i < stringMaxLine; i++) {   selectMessages[i] = "";   flags[i] = -1;  }  if (command != null) {   for (; command.next();) {    // 返回本行命令执行结果    String result = command.doExecute();    if (result == null) {     nextScript();     break;    }    // 分解命令    List commands = Command.splitToList(result, " ");    int size = commands.size();    String cmdFlag = (String) commands.get(0);    String mesFlag = null, orderFlag = null, lastFlag = null;    if (size == 2) {     mesFlag = (String) commands.get(1);    } else if (size == 3) {     mesFlag = (String) commands.get(1);     orderFlag = (String) commands.get(2);    } else if (size == 4) {     mesFlag = (String) commands.get(1);     orderFlag = (String) commands.get(2);     lastFlag = (String) commands.get(3);    }    if (cmdFlag.equalsIgnoreCase("wait")) {     isMessage = true;     break;    }    if (cmdFlag.equalsIgnoreCase("mes")) {     roleName = null;     isMessage = true;     roleName = Command.getNameTag(mesFlag, "{", "}");     String nMessage = null;     if (roleName != null) {      int nameLength = roleName.length() + 2;      nMessage = mesFlag.substring(nameLength, mesFlag        .length());     } else {      nMessage = mesFlag;     }     mesPrint.setMessage(nMessage);     flags[count] = -1;     if (++count == stringMaxLine) {      break;     }     break;    }    if (cmdFlag.equalsIgnoreCase("selects")) {     isMessage = true;     isSelectMessage = true;     String[] selects = command.getReads();     for (int i = 0; i < selects.length; i++) {      selectMessages[i] = selects[i];      flags[i] = i;     }     break;    }    if (cmdFlag.equalsIgnoreCase("fname")) {     roleName = null;     break;    }    if (cmdFlag.equalsIgnoreCase("cgwait")) {     isMessage = false;     break;    }    if (cmdFlag.equalsIgnoreCase("sleep")) {     sleep = Integer.valueOf(mesFlag).intValue();     sleepMax = Integer.valueOf(mesFlag).intValue();     isMessage = false;     break;    }    if (cmdFlag.equalsIgnoreCase("flash")) {     String[] colors = mesFlag.split(",");     if (color == -1 && colors != null && colors.length == 3) {      color = Color.rgb(        Integer.valueOf(colors[0]).intValue(), Integer          .valueOf(colors[1]).intValue(), Integer          .valueOf(colors[2]).intValue());      sleep = 20;      sleepMax = sleep;      isMessage = false;     } else {      color = -1;     }     break;    }    if (cmdFlag.equalsIgnoreCase("run")) {     run = true;     isMessage = false;     continue;    }    if (cmdFlag.equalsIgnoreCase("gb")) {     if (mesFlag == null) {      return;     }     if (mesFlag.equalsIgnoreCase("none")) {      cg.setBackgroundCG(null);     } else {      cg        .setBackgroundCG(LAGraphicsUtils          .loadLAImage(mesFlag));     }     continue;    }    if (cmdFlag.equalsIgnoreCase("cg")) {     if (mesFlag == null) {      return;     }     // 删除     if (mesFlag.equalsIgnoreCase("del")) {      if (orderFlag != null) {       cg.removeImage(orderFlag);      } else {       cg.clear();      }     } else if (lastFlag != null       && "to".equalsIgnoreCase(orderFlag)) {      Chara chara = cg.removeImage(mesFlag);      if (chara != null) {       int x = chara.getX();       int y = chara.getY();       chara = new Chara(lastFlag, 0, 0);       chara.setMove(false);       chara.setX(x);       chara.setY(y);       cg.addChara(lastFlag, chara);      }     } else {      // 移动      int x = 0, y = 0;      if (orderFlag != null) {       x = Integer.parseInt(orderFlag);      }      if (size >= 4) {       y = Integer.parseInt((String) commands.get(4));      }      cg.addImage(mesFlag, x, y);     }     continue;    }   }  } } private synchronized void runScript(final String fileName) {  if (fileName == null) {   return;  }  if (command == null) {   command = new Command(fileName);   // 刷新脚本缓存   Command.resetCache();  } else {   command.formatCommand(fileName);  }  nextScript(); } public void alter(LTimerContext timer){  resetFlag(); } public boolean onKeyDown(int keyCode, KeyEvent e) {  return false; } public boolean onKeyUp(int keyCode, KeyEvent e) {  return false; } public boolean onTouchDown(MotionEvent e) {    if (run) {   setScreen(new Title());   return true;   }  if (!isSelectMessage && sleep <= 0) {   if (!isMessage) {    isMessage = true;   }   isNext = true;  } else if (isMessage && isClick) {   if (flags[selectFlag] != -1) {    // 变更选择变量    select(flags[selectFlag]);    isNext = true;    isSelectMessage = false;   }  }  if (isNext && !isSelectMessage) {   // 逐行解释执行脚本   nextScript();  }  return true; } public boolean onTouchMove(MotionEvent e) {  resetFlag();  return false; } public boolean onTouchUp(MotionEvent e) {  return false; }}

 

效果如下图:

 

00

 

01

 

02

 

源码下载地址:http://code.google.com/p/loon-simple/downloads/list

 

就AVG发展现状而言,日式冒险游戏主流以称作音声小说与视觉小说的类型为大宗。这些游戏多半不如过去般着重解谜成分,而是当成故事的表现形式来制作。此类作品希望玩家如同小说一般阅览显示在画面上的讯息,选择的指令直接反映在剧情分歧上。其中更出现像《暮蝉悲鸣时》一样废除指令选择,要求玩家推理事件、在网络上交换推理情报的作品。对于这个现状,有很多资历玩家抱持否定态度,但是,此类作品依旧相当受欢迎,比如《暮蝉悲鸣时》与《かまいたちの夜》等游戏被制作成系列作品,更积极对漫画、动画、电视剧等媒体发展。归类于视觉小说的成人游戏有像《Fate/stay night》、《ToHeart2》等超过10万套的畅销作品(PC-NEWSランキング调查),人气程度可见一斑。

 

另外,上面给出的示例并非最优解决方案,事实上,很多功能完全可以组件化配置(比如对话框,就可以使用笔者在LGame-Simple中所改进的LMessage,暂未移植而已……),还留待读者自行强化和完善。

 


————————擎天白玉柱、架海紫金梁————————

 

再说句题外话,刚才写这篇博文时把笔瘾勾起来了,将以前写了个开头的玄幻小说《山海演武传》丢到了Blog上,结果将相关系列博文分开了|||,想看此系列博文前几篇的大人们,后翻一页即可见……

 

 


           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. MSDK手Q邀请透传参数问题:url编解码与base64编解码

    最近做MSDK手Q的邀请功能,遇到一个坑,手Q结构化消息分享功能接口如下:/*** @param scene 标识发送手Q会话或者Qzone* eQQScene.QQScene_QZone: 分享到空间(4.5以上版本支持)* eQQScene.QQScene_Session: 分享到手Q会话* @param title 结构化消息的标题* @pa…...

    2024/5/1 6:45:20
  2. 根据拼音首字母筛选人名

    using System; namespace Test { class Class1 { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { …...

    2024/4/29 23:02:53
  3. laravel-admin的filter联动

    组件$filter->equal(project_number,项目名字)->select(function(){$sql = "SELECT distinct p.project_number,p.project_nameFROM product_prices pGROUP BY p.project_number,p.project_name";$reArr = [];// $arr = Db::table("product_prices")…...

    2024/4/17 12:05:49
  4. uniapp跳转页面带url参数 不被转义

    uni.navigateTo({url:`../product/ratings/publish/publish?ID=${item}`,})...

    2024/4/28 1:08:02
  5. VS制作安装程序时删除以前旧版本

    1,修改版本号或更新升级码(UpgrateCode),会弹出是否更新ProjectCode,选择是,此时需修改卸载快捷方式命令参数ProjectCode同步。版本号要比以前的新,否则不能安装。 2,,将RemovePreviousVersions设置为TRUE. 这样在安装最新程序时不会产生错误。自动删除旧的版本。...

    2024/4/19 14:06:34
  6. ISTQB 文档

    ISTQB基础ISTQB=International Software Testing Qualifications Board,是国际权威的软件测试认证机构,现有包括美国、英国、德国、法国、日本、挪威、加拿大、澳大利亚等70多个成员国/地区。中国于2006年5月26日在美国奥兰多举行的ISTQB2006年年会上得到正式批准成为其成员。…...

    2024/4/17 23:02:48
  7. SharpZipLib 文件/文件夹压缩

    转自:https://www.cnblogs.com/kissdodog/p/3525295.html一、ZipFileZipFile类用于选择文件或文件夹进行压缩生成压缩包。常用属性:属性说明Count文件数目(注意是在ComitUpdat之后才有)Password压缩包密码Size压缩包占用空间大小Name压缩包名称,默认输出是文件路径ZipEntry压…...

    2024/5/1 6:06:31
  8. 如何用Google APIs和Google的应用系统进行集成(2)----Google APIs的所有的RESTFul服务一览

    上篇文章,我提到了,Google APIs暴露了86种不同种类和版本的API。我们可以通过在浏览器里面输入https://www.googleapis.com/discovery/v1/apis这个URL地址,其将会把所有Google API支持的不同种类和版本的API全部列出来。其具体信息如下: 序号 API 标题 名字 版本 RestFul请…...

    2024/5/1 8:07:05
  9. URL编码和解码

    ios中http请求遇到汉字的时候,需要转化成UTF-8,用到的方法是: NSString *encodingString = [urlStringstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 2.url解码 请求后,返回的数据,如何显示的是这样的格式:%3A%2F%2F,此时需要我们进行UTF-8解码,用…...

    2024/5/1 6:28:33
  10. ZooKeeper技术

    ZooKeeper——分布式程序协调服务 第一章 ZooKeeper是什么一 简介二 架构图三 作用在大数据中的应用四 ZK集群特点集群状态Server状态主从分工五 Leader的选举过程五 Zookeeper存储结构—Znode节点类型六 事件监听机制事件监听Watcher第二章 ZooKeeper的安装安装单机版[^1]安装…...

    2024/4/17 12:06:36
  11. 通过ZipInputStream来解析zip文件

    1解析zip文件,可以通过ZipInputStream来解析。 如:String zipFileName="C:/Users/xucla/Desktop/CO60.zip"; ZipInputStream zip = new ZipInputStream(new FileInputStream(new File(zipFileName)));//通过ZIpInputStream得到zip文件的对象 2 得到zip文件对象之后…...

    2024/4/17 12:07:13
  12. 效率很高的url-encode和url-decode函数

    在网上发现的url-encode和url-decode函数,写得简洁、高效,拿出来分享:/* Converts a hex character to its integer value */ char from_hex(char ch) {return isdigit(ch) ? ch - 0 : tolower(ch) - a + 10; }/* Converts an integer value to its hex character*/ char t…...

    2024/4/14 20:34:40
  13. Linux安装程序Anaconda分析

    1、概述 Anaconda是RedHat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。此外,其还支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序的功能是把位于光盘或其他源上的数据包,根据设置安…...

    2024/4/17 23:09:45
  14. iview admin 使用mock.js模拟数据

    最近在使用ivew admin做项目,为了前后端分离使用mock模拟数据,记录步骤:1.文件结构:2.打开src / mock,新建文件glbr.js:3.编写需要模拟的数据结构:import Mock from mockjs import {doCustomTimes } from @/libs/util; export const getHospital = (req) => {let hos…...

    2024/4/20 10:53:05
  15. Linux驱动开发学习的一些必要步骤.

    1. 学会写简单的makefile2. 编一些应用程序,可以用makefile跑起来3. 学会写驱动的makefile4. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world,insmod后应该能够通过dmesg看到输出。5. 写一完整驱动, 加上read, write…...

    2024/4/17 12:06:13
  16. C# zip压缩文件的功能

    using System; using System.Collections.Generic; using System.IO; using ICSharpCode.SharpZipLib.Checksums; using ICSharpCode.SharpZipLib.Zip;namespace BuildAssetBundle {public class ZipUtility{/// <summary> /// 所有文件缓存 /// </summary> Lis…...

    2024/5/1 6:43:41
  17. 修改后的取得汉字首字母的lazarus函数,可以自己增加疑难汉字,这个应该比较理想了

    前面要引用:LazUTF8function getPinYinCode(const input:string):string; varpinyintable: TStrings;i,j:integer;uChar: string; beginresult:=;pinyintable:=TStringList.Create;pinyintable.Append(A阿啊锕嗄厑哎哀唉埃挨溾锿鎄啀捱皑凒溰嘊敳皚癌毐昹嗳矮蔼躷噯藹譪霭靄艾…...

    2024/4/17 12:04:49
  18. hbase笔记---新版api之对表的操作,指定region创建,普通创建,删除,修改列族信息

    hbase 对于表的相关操作: 实现功能有:指定region创建,普通创建,删除,修改列族信息package learm.forclass.testclass;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescript…...

    2024/4/19 20:09:51
  19. wordpress 靶机渗透

    人过留名,雁过留声 人生天地间,凡有大动静处 必有猪头环境准备VMware workstation Pro12 Kali 虚拟机 (攻击机IP:10.10.16.133) Wordpress 虚拟机 (靶机IP:10.10.16.135) NAT 网络模式安装靶机 在导入靶机的时候出现版本不兼容的现象。用记事本打开靶机安装包里面的 .v…...

    2024/5/1 7:57:32
  20. iOS的url编码和解码

    1.url编码ios中http请求遇到汉字的时候,需要转化成UTF-8,用到的方法是:NSString * str = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];2.url解码请求后,返回的数据,如何显示的是这样的格式:%3A%2F%2F,此时需要我们进行UTF-8解码,用到…...

    2024/4/17 21:31:31

最新文章

  1. Stability AI 推出稳定音频 2.0:为创作者提供先进的 AI 生成音频

    概述 Stability AI 的发布再次突破了创新的界限。这一尖端模型以其前身的成功为基础&#xff0c;引入了一系列突破性的功能&#xff0c;有望彻底改变艺术家和音乐家创建和操作音频内容的方式。 Stable Audio 2.0 代表了人工智能生成音频发展的一个重要里程碑&#xff0c;为质量…...

    2024/5/1 9:07:43
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. Python读取文件里内容

    如果要读取一个文件里的内容是 # 文件名&#xff1a;db.txt 1 2 3 4代码如下 import requests f open("db.txt", mode"rb") content f.read() f.close()data content.decode(utf-8)# 存到 list 里 data_list data.split(\r\n) print(data_list)# 结果…...

    2024/4/30 6:07:58
  4. 基于ArrayList实现简单洗牌

    前言 在之前的那篇文章中&#xff0c;我们已经认识了顺序表—>http://t.csdnimg.cn/2I3fE 基于此&#xff0c;便好理解ArrayList和后面的洗牌游戏了。 什么是ArrayList? ArrayList底层是一段连续的空间&#xff0c;并且可以动态扩容&#xff0c;是一个动态类型的顺序表&…...

    2024/4/30 17:18:30
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/29 23:16:47
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57