
开发设计
文章平均质量分 74
dremi
享受工作,享受生活!
心态是王道...
展开
-
排列的非递归实现
这是在学离散数学时候书上的一个算法,翻出来看看,好像有点吃力,看到以前写的代码,注释这么少,真的较难看懂,就算是自己编的也一样。看来以后写一些程序一定要写注释或文档,先把下面没有注释的代码贴出来,有时间再把注释加上去。#include iostream.h>int n;int firmax(int a[]); //int lasmax(int a[],int原创 2007-05-03 17:02:00 · 890 阅读 · 0 评论 -
libev timer封装使用
libev是轻量级、高性能事件循环/事件模型的网络库,和他很相似的开源有libevent,libev开源代码很晦涩,较难读懂,里面可谓是把宏用到极致,代码很简练。libev提供非常全的功能,包含ev_ioev_timerev_periodicev_signalev_childev_statev_idleev_prepare and ev_checke原创 2012-04-15 12:56:33 · 11590 阅读 · 0 评论 -
线程间同步实现--通过互斥锁和条件变量
信号量是一种用于提供不同进程或一个给定进程的不同线程间同步手段。在Posix中,已经有一套信号接口,用于同一个进程中不同线程同步,其接口为:int sem_init(sem_t *sem, int pshared, unsigned int value);int sem_wait(sem_t *sem);int sem_trywait(sem_t *sem);int sem_原创 2012-11-04 00:58:16 · 2177 阅读 · 0 评论 -
人机博弈之(五)---估值基础
估值是一个通过既有的棋类知识来评估一个局面的优劣的过程。这一过程对具体的棋类知识的依赖程度很深,但是仍有一般性的规律可循。1. 棋子的价值评估,简单的说就是评估双方都有哪些棋子在棋盘上。根据我们的经验,可以让一个车的价值为500,一个马的价值为300,一个兵的价值为100等等。将的价值为无限大。一方的棋子总值就是棋盘上存活的该方棋子乘以棋子的价值的和。用一个式子表示: sideValue =原创 2007-09-29 21:10:00 · 2256 阅读 · 0 评论 -
人机博弈之(一)------博弈介绍
爱好编程的大部分还是喜欢自己编写一个游戏,但较少是编写和电脑对战的游戏,因为里面毕竟涉及博弈,搜索等技术,我想来通编写一个人机博弈的中国象棋游戏,希望从中收获些东西。参考书是王小春编著的一本《PC游戏编程-人机博弈》。应该说里面很多思想都是来自这本书上的,虽然思想不是源自我自己,但是可以通过自己亲手从头到尾把这个游戏编写出来,主要体会里面搜索技术和估值核心。1. 人机博弈的要点原创 2007-09-23 15:36:00 · 5897 阅读 · 1 评论 -
人机博弈之(二)------棋盘表示
棋盘表示主要探讨的是使用什么数据结构来表示棋盘上的信息。一般来说与具体的棋类相关。通常,用来描述棋盘及其上棋子信息的是一个二维数组。中国象棋可以用9X10个字节的二维数组来表示中国象棋的棋盘,数组中每一个字节代表棋盘上的一个交点,其值表明这个交点上放置的是一个什么棋子或是没有棋子。但在中国象棋中,中国象棋有14种不同的棋子,红黑个7种,所以棋盘用下面的方式表示。『2, 3, 6, 5, 1原创 2007-09-23 15:39:00 · 2348 阅读 · 1 评论 -
人机博弈之(六)------代码实现(2)走法产生器
package movegenerator;//走法产生器import constdata.ConstData;import chessmovedata.ChessMoveData;//一个走法的结构public class MoveGenerator...{ public ChessMoveData moveList[][] =new ChessMoveData[10][100];原创 2007-09-23 16:12:00 · 1964 阅读 · 2 评论 -
人机博弈之(六)------代码实现(3)搜索引擎
package searchengine;import chessmovedata.ChessMoveData;import constdata.ConstData;import movegenerator.MoveGenerator;import eveluation.Eveluation;public class SearchEngine...{ //表示棋盘棋的分布 publ原创 2007-09-23 16:20:00 · 1693 阅读 · 0 评论 -
人机博弈之(三)------走法产生
走法产生是指将一个局面的所有可能的走法罗列出来的那一部分程序。是用来告诉其他部分下一步可以往哪里走的模块。走法产生的复杂程度也有很大的区别。例如在五子棋的棋盘上的任意空白点都是合法的下一步。这样五子棋的走法产生模块丽,只要扫描棋盘,寻找到所有的空白即可。而在中国象棋中,就要仔细地判断,因为不同的棋走的规则不一样,所有需要检测走法的合法性。那中国象棋为例,首先要扫描棋盘。如果某一个位置上是一原创 2007-09-23 15:42:00 · 2335 阅读 · 0 评论 -
人机博弈之(六)------代码实现(1)常量数据
package constdata;//数据表示//public class ConstData...{ public final static byte NOCHESS = 0; //无子 //黑方 public final static byte B_KING = 1; //黑帅 public final static原创 2007-09-23 16:08:00 · 1704 阅读 · 0 评论 -
人机博弈之(六)------代码实现(4)估值
package eveluation;import constdata.ConstData;import java.awt.Point;public class Eveluation...{ // 存放棋子基本价值的数组 protected int m_baseValue[] = new int[15] ; // 存放棋子灵活价值的数组 protected原创 2007-09-24 22:49:00 · 1584 阅读 · 0 评论 -
人机博弈之(四)------搜索技术
诸如下棋、打牌、竞技、战争等一类竞争性智能活动称为博弈。博弈有很多种,我们讨论最简单的"二人零和、全信息、非偶然"博弈,其特征如下: (1) 对垒的MAX、MIN双方轮流采取行动,博弈的结果只有三种情况:MAX方胜,MIN方败;MIN方胜,MAX方败;和局。 (2) 在对垒过程中,任何一方都了解当前的格局及过去的历史。 (3) 任何一方在采取行动前都要根据当前的实际情况,进行得失分析,选取对原创 2007-09-23 15:44:00 · 1967 阅读 · 0 评论 -
ELF文件格式
ELF文件格式 •目标文件有三种类型: – 可重定位文件(Relocatable File) 包含适合于与其他目标文件链接来创建可执行文件或者共享目标文件的代码和数据。 – 可执行文件(Executable File) 包含适合于执行的一个程序,此文件规定了 exec()原创 2010-10-15 22:30:00 · 2180 阅读 · 1 评论