博文

ini解析(2010-02-20 20:24:00)

摘要:#include <iostream>#include <stdio.h>#include <fstream>#include <tchar.h>#include <conio.h>#include <io.h>#include <Windows.h>#include <string.h>using namespace std;#define NOPRO 0#define INSECTION 1#define INKEY 2#define INVAL 3struct KEY{    string name;    string val;    KEY* next;};struct SECTION{    string name;    KEY *Key;    SECTION *next;};class INIReader{private:    int state;    SECTION *SECTION_head;    int CreateSection(SECTION *nowpos);    int CreateKey(KEY *nowpos);    int ReadINI(FILE *File_In);public:    INIReader()    {        state=NOPRO;        SECTION_head=new SECTION;    }    int LoadFile(char* FilePath,char* ReadMode);    ......

阅读全文(854) | 评论:0

Flex打地鼠游戏(2009-11-24 17:10:00)

摘要:<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="InitApp()"> <mx:Script>  <![CDATA[   import mx.controls.*;   import flash.utils.Timer;   {    private var Image_Rabbit:Array=new Array(13);    private var Int_RabbitState:Array=new Array(13);    private var Int_RabbitStillTime:Array=new Array(13);    private var Timer_Tick:Timer=new Timer(100);    private const RABBIT:int=0;    private const KICKEDRABBIT:int=1;    private const EMPTY:int=2;    private var Int_Score:int=0;    private function InitApp():void    {     Timer_Tick.addEventListener(TimerEvent.TIMER,OnTime);     this.a......

阅读全文(2884) | 评论:4

字符串匹配(2009-08-18 17:17:00)

摘要:#include <iostream>#include <fstream>#include <istream>using namespace std;struct Solution{ int start; int end; int num; Solution &operator =(const Solution &);};Solution&Solution::operator =(const Solution &souSol){ start=souSol.start; end=souSol.end; num=souSol.num; return (*this);} Solution FindSolution(const int *a,const int num1,const int *b,const int num2);void main(){ ifstream infile("data.txt"); int a[100]; int b[100]; int num1; int num2; int i=0; Solution sol; bool flag=0; while (true) {  if (infile.eof())  {   num2=i;   break;  }  int tmp;  infile>>tmp;  if (tmp<0&&flag==0)  {   flag=1;   num1=i;   i=0;   continue;  }  if (tmp<0&&flag==1)  ......

阅读全文(662) | 评论:0

逆波兰计算器(2009-07-08 21:57:00)

摘要:#include <iostream>#include <string.h>#include <stdlib.h>#include <stdio.h>#define DATA 0#define SIG 1#define KUOHAO 2using namespace std;struct DataChain{ float data;                  //////////////数据 char sig;                    ///////////////符号 int dsflag;                  /////////////////符号、数据表示符 DataChain *next;            ////////////////下推指针 DataChain *pre;             //////////////回溯指针};                /////////////////数据链数据结构 struct DataStack      &......

阅读全文(2330) | 评论:0

自我折磨之中(2009-04-14 10:54:00)

摘要:太郁闷了,简直就是没事找抽。好好地想做个黑白棋,结果我竟然把它给变成了个浩大的工程。多线程、D3D、Dinput、人工智能、游戏逻辑、界面、鼠标处理,整死我了,一头一头的学,一个月了,停停做做,才弄了600多行代码,唉,远着呢。同学们一个个被那个网络老师搞得癫狂,全去学网络,再或者就去学嵌入式,就我一个人,天天抱着多线程和D3D啃,可怕的孤独啊。 今天用一种变态的方法解决了多线程输入控制下的双重鼠标位置问题,感觉很不甘心,但是没办法,Dinput跟win32无法同步,但我不想放弃Dinput,因为我很得瑟。所以我在主线程不断获取窗体位置,再在输入线程中用SetCursorPos将两个鼠标同步,所以一晃鼠标就会出现一个很搞笑的现象:我的自绘鼠标屁颠屁颠地跟着恶心的windows server 2008的系统默认鼠标跑,连我自己都感到无语了。 算了,就这样吧,下一步实现鼠标按键响应,又是一大堆参数计算啊。......

阅读全文(814) | 评论:0

嵌入式实验代码 链表逆置(2009-04-07 11:31:00)

摘要:#include <stdio.h>#include <tchar.h>#include <stdlib.h> typedef struct Chain { int a; Chain * Next;}*Head; int _tmain(int argc, _TCHAR* argv[]){ Head p,ReHead; Chain *tmpp,*tmph; Chain *Retmp1,*Retmp2; int a; p=(Head)malloc(sizeof(Chain)); p->Next=NULL; tmph=p; scanf("%d",&a); while(a>0) {  tmpp=(Chain*)malloc(sizeof(Chain));  tmpp->Next=NULL;  tmpp->a=a;  tmph->Next=tmpp;  tmph=tmpp;  scanf("%d",&a); } tmph=p; while(tmph->Next!=NULL) {  tmph=tmph->Next;  printf("%d ",tmph->a); } Retmp1=NULL; Retmp2=p->Next->Next; while(p->Next->Next) {  p->Next->Next=Retmp1;  Retmp1=p->Next;  p->Next=Retmp2;  Retmp2=Retmp2->Next; } p->Next->Next=Retmp1; tmph=p; while(tmph->N......

阅读全文(1031) | 评论:0

恐慌之中(2009-03-18 13:11:00)

摘要:在经过了大二的迷茫、浮躁与轻狂以及大三上学期的狂热后,我思考了一个寒假,痛苦的思考。我已经把考研这条路彻底堵死了,没了退路,所以只能硬着头皮往前冲,为了我的理想。我开始复习数据结构、算法和汇编,看操作系统,看DirectX,像一个孤独的行者。我放弃了与同班强人做嵌入式项目的机会,虽然我自信我有那个能力,但是我的理想不在那儿。 找工作的巨大压力我已经无法逃避了,当然我也不想逃避。我想进入这个行当,仅仅是为了我的梦想,因为这个梦想太美好了,以至于我只能用这种方式来实现。我最初想读文科,但是无法实现,我不可能只为自己而活,所以我毅然进入了这个行业。我大一入学时连电脑都不会开。我从来不害怕孤独,我去年下半年登QQ不超过60个小时,手机停机,一连数小时盯着CRT看源代码,甚至翘课看代码。我不知道我的努力是否值得,因为这半年我的进展很小,win32编程还好,理解了其消息循环和句柄机制也就没什么大不了,MFC却根本没认真学。现在我又碰到一个新的问题:VC的多线程处理问题,在操作系统中有涉及到,但是并不具体到win32编程中,只能自己找资料学习。 我终于发现,自己学的都是些半吊子。稍微上台面的东西,诸如内存管理,线程管理,人工智能我们都不会,汇编和系统体系结构这些东西我也只是懵懵懂懂有点概念,数据库连课都没认真听过(但是还是过了,哈哈,挺简单的,搞懂几个范式和SQL语句就OK了)。虽然我对于自己的定位很明确,但是这样一想我就觉得很恐慌,就我这点水平,做什么都不会啊,以后怎么混???......

阅读全文(820) | 评论:0

实验报告(2009-03-17 22:29:00)

摘要:被那女老师气得不轻啊,真想扁她,连学生文章是不是自己写的都看不出来,还敢教人工智能这种高IQ的人才能教好的课,真是受不了。                                                                     八数码广度优先搜索策略         八数码问题,类似于拼图,9格8个数,从当前状态开始移动,到指定状态即完成操作,可以用广度优先搜索或是深度优先搜索来解决。广度优先,顾名思义,就是优先在现深度上扩展,找出当前深度上的所有情况,再向下一级深度进行扩展搜索,所以这种解法必定可以找出答案(当然前提是有答案),代价就是比较恐怖的空间和时间消耗。         首先,我设定一个节点包含的数据有:当前状态,即一个3x3二维数组,一个指向双亲节点的回溯指针,三个指向孩子节点的指针(可有可无,纯粹为了找答案大可不必搞得指针漫天飞),一个指向兄弟节点的指针(我为了设计这个广度优先算法特意添加的,没有看标准的解法,不知道合不合理),一个int型的节点深度数据,由双亲节点加1获得,空格的x和y坐标值。         除此之外还有一个全局型的二维数组专门存放终止状态,一个全局型的节点类型指针存放终止节点地址,一个二维数组存放空格的所有移动方式,由一个TXT......

阅读全文(1163) | 评论:0

八数码问题求解(2009-03-17 21:09:00)

摘要:记得用记事本写一个输入和输出的状态放在工程里,名字为data.txt,一定要合规矩,否则这个程序非吃光你内存不可(我故意把深度控制给去掉了,虽有有节点深度的数据),因为我用的是广度优先搜索。当时感冒了,没认真组织,所以数据结构相当乱,指针漫天飞,光是检查指针越界访问的问题都花了我很长时间。 示例输入: 2 0 8 1 6 3 7 5 41 2 3 8 0 4 7 6 5 // OctNumQue.cpp : 定义控制台应用程序的入口点。// #include "stdafx.h"int EndState[3][3];int EPMove[4][2];UnCertainTree *Node;UnCertainTree *Solution;bool SateEqualCheck(UnCertainTree *Dest);/////////检测void EvaluateData(UnCertainTree *Dest,UnCertainTree *SouData);bool EmpPosMove(UnCertainTree *Dest,UnCertainTree *SouData,int Direction);void SpreadTree(BrothersList *BList);int _tmain(int argc, _TCHAR* argv[]){ ifstream DataFile; BrothersList *BList; ///////////////////////////////初始化根节点 Node=(UnCertainTree*)malloc(sizeof(UnCertainTree)); BList=(UnCertainTree*)malloc(sizeof(UnCertainTree)); Node->Brother=NULL; Node->Parent=NULL; for (int i=0;i<3;i++)  Node->Child[i]=NULL; DataFile.open("data.txt"); if (DataFile.fail()) {  cout<......

阅读全文(1717) | 评论:0

野人与修道士问题(2009-03-17 21:02:00)

摘要:闲来无事,忽然记起有这个博客,便把刚做的两个程序放上来。在Visual Studio 2008下用控制台写的,没认真组织设计数据结构,只是为了给人工智能课那个让我胃痛的老师交差。 野人与修道士问题(忘了是传教士还是修道士,反正就那一路货色,差不多)。3个野人,3个传教士,一条船(只能容纳两个人,当然一个人也不会把船怎么样),两岸和船上修道士人数不能少于野人,否则会被野人吃掉(老实说我也想尝尝),野人绝对服从修道士的安排,设计一个过河方案。解法为状态空间搜索策略。 // AITask.cpp : 定义控制台应用程序的入口点。//////树形空间遍历求解修道士与野人问题#include "stdafx.h"void FindPath(TNode *Node);int TestWay(int i,TNode *Node);int PrePath[100][3];int NodeNum=0;int MoveWay[5][2];int _tmain(int argc, _TCHAR* argv[]){ TNode *Node; Node=(Tree)malloc(sizeof(FIVTree)); Node->Back=NULL; Node->LeafFlag=1; Node->ThisSide[0]=3; Node->ThisSide[1]=3; Node->OtherSide[0]=0; Node->OtherSide[1]=0; for (int i=0;i<3;i++)  Node->Child[i]=NULL; Node->BoatSide=THIS_SIDE; PrePath[NodeNum][0]=3; PrePath[NodeNum][1]=3; PrePath[NodeNum][2]=THIS_SIDE; MoveWay[0][0]=1; MoveWay[0][1]=1; MoveWay[1][0]=1; MoveWay[1][1]=0; MoveWay[2][0]=0; MoveWay[2][......

阅读全文(3854) | 评论:1