示例#1
0
//移棋第三步:不想移棋,把棋子放回去
void board::move_cancel()
{


	if (!isSelected) {
		//cout << "move cancel error : 没有选中棋子,怎么放回去???" << endl;
	}

	int x, y;

	data_itoxy(selected_chess,x, y);


	isSelected = false;
	if (lay(selected_color, x, y)) {
		m_curr_color[x][y] = m_chess_pos;
		m_chess[m_chess_pos] = selected_chess;
		isSelected = false;
		/*string c_color;
		switch (selected_color) {
		case WHITE:c_color = "后手"; break;
		case BLACK:c_color = "先手"; break;
		case NONE:c_color = "没有"; break;
		default:c_color = "未知"; break;
		}*/

		//cout << c_color << "方把棋子放回到(" << x << ',' << y << ')' << endl;

	}
	else {
		//cout << "出错:不知道为什么放不回去棋子???内核有问题" << endl;
	}

	//return false;
}
示例#2
0
static void append_engine(gchar * dlname)
{
    gchar * can;
    gchar * err;
    (void) dlerror();
    void * hand = dlopen(dlname,RTLD_NOW);
    err = dlerror();
    if (!hand || err)
    {
        g_warning(err);
        if (hand)
            dlclose(hand);
        return;
    }
    can = canonize_name(dlname);
    if (engine_is_unique(can))
    {
        layout_settings_proc lay;
        lay = dlsym(hand,"layout_engine_settings");
        if ((err=dlerror()))
            g_warning(err);
        if (lay)
        {
            get_meta_info_proc meta;
            EngineData * d = malloc(sizeof(EngineData));
            GtkTreeIter i;
            const gchar * format =
                "<b>%s</b> (%s)\n"
                "<i><small>%s</small></i>";
            meta = dlsym(hand,"get_meta_info");
            if ((err=dlerror()))
                g_warning(err);
                d->meta.description=g_strdup("No Description");
                d->meta.version=g_strdup("0.0");
                d->meta.last_compat=g_strdup("0.0");
                d->meta.icon=gtk_widget_render_icon(EngineCombo,GTK_STOCK_MISSING_IMAGE,
                        GTK_ICON_SIZE_LARGE_TOOLBAR,"themeengine");
            if (meta)
                meta(&(d->meta));
            else
                g_warning("Engine %s has no meta info, please update it, using defaults.",dlname);

            d->dlname = dlname;
            d->canname = can;
            d->vbox = gtk_vbox_new(FALSE,2);
            g_object_ref(d->vbox);
            lay(d->vbox);
            EngineList = g_slist_append(EngineList,d);
            gtk_list_store_append(EngineModel,&i);

            gtk_list_store_set(EngineModel,&i,ENGINE_COL_DLNAME,d->dlname,ENGINE_COL_NAME,d->canname,
                    ENGINE_COL_VER,d->meta.version,ENGINE_COL_LAST_COMPAT,d->meta.last_compat,
                    ENGINE_COL_ICON,d->meta.icon,ENGINE_COL_MARKUP,
                    g_markup_printf_escaped(format,d->canname,d->meta.version,d->meta.description),
                    -1);
            //gtk_combo_box_prepend_text(GTK_COMBO_BOX(EngineCombo),d->canname);
        }
    }
    dlclose(hand);
}
示例#3
0
//移棋第二步:在新位置下棋
bool board::move_step(int x, int y) {
	if (isSelected) {
		string c_color;
		switch (selected_color) {
		case WHITE:c_color = "白"; break;
		case BLACK:c_color = "黑"; break;
		case NONE:c_color = "没有颜"; break;
		default:c_color = "未知"; break;
		}
		if (lay(selected_color, x, y)) {
			int b_x(0), b_y(0);
			data_itoxy(selected_chess, b_x, b_y);
			m_chess[m_curr_color[b_x][b_y]] = data_xytoi(x, y);
			m_curr_color[x][y] = m_curr_color[b_x][b_y];
			m_curr_color[b_x][b_y] = 0;
			cout << c_color << "方把(" << b_x << ',' << b_y << ")移动到(" << x << ',' << y << ')' << endl;
			isSelected = false;
			pre_chess = data_xytoi(x, y);
			return true;
		}
		else {
			int b_x(0), b_y(0);
			data_itoxy(selected_chess, b_x, b_y);
			cout << "错误:在(" << b_x << ',' << b_y << ")处不能放下" << c_color << "色棋子,移棋失败" << endl;
			return false;
		}
	}
	else {
		cout << "错误:未选中棋子!" << endl;
		return false;
	}
}
示例#4
0
    bool operator()() const
    {
        mapnik::Map m(256,256,"+init=epsg:3857");

        mapnik::parameters params;
        params["type"]="memory";
        auto ds = std::make_shared<mapnik::memory_datasource>(params);
        // add whitespace to trigger phony "reprojection"
        mapnik::layer lay("layer",m.srs() + " ");
        lay.set_datasource(ds);
        lay.add_style("style");
        m.add_layer(lay);
        // dummy style to ensure that layer is processed
        m.insert_style("style",mapnik::feature_type_style());
        // dummy bbox, but "valid" because minx and miny are less
        // with an invalid bbox then layer.visible() returns false
        // and the initial rendering setup is not run
        m.zoom_to_box(mapnik::box2d<double>(-1,-1,0,0));
        for (unsigned i=0;i<iterations_;++i)
        {
            mapnik::image_rgba8 im(256,256);
            mapnik::agg_renderer<mapnik::image_rgba8> ren(m,im);
            ren.apply();
        }
        return true;
    }
示例#5
0
//悔棋,p1:现在坐标,p2=为前坐标;mode=0下棋,1移棋
bool board::back(bool mode, int p1, int p2) {
	int current_x(0), current_y(0);
	data_itoxy(p1, current_x, current_y);
	int pre_x(0), pre_y(0);
	data_itoxy(p2, pre_x, pre_y);
	if (retract(static_cast<CHESS_COLOR>(m_curr_color[current_x][current_y] % 2), current_x, current_y)) {
		if (mode == 0) {	//下棋
			m_curr_color[current_x][current_y] = 0;
			pre_chess = p2;
			--m_chess_num;
			return true;
		}
		else {	//移棋
			m_curr_color[pre_x][pre_y] = m_curr_color[current_x][current_y];
			m_curr_color[current_x][current_y] = 0;
			lay(static_cast<CHESS_COLOR>(m_curr_color[pre_x][pre_y] % 2), pre_x, pre_y);
			pre_chess = p2;
			return true;
		}
	}
	else {
		string c_color;
		switch (m_curr_color[current_x][current_y]%2) {
		case WHITE:c_color = "白"; break;
		case BLACK:c_color = "黑"; break;
		case NONE:c_color = "没有颜"; break;
		default:c_color = "未知"; break;
		}
		cout << "不能拿起在(" << current_x << ',' << current_y << ")的" << c_color << "色棋子!" << endl;
		return false;
	}
}
示例#6
0
//移棋第三步:不想移棋
bool board::move_cancel()
{

	int x, y;

	data_itoxy(selected_chess,x,y);

	isSelected = false;
	if (lay(selected_color, x, y)){
		string c_color;
		switch (selected_color) {
		case WHITE:c_color = "白"; break;
		case BLACK:c_color = "黑"; break;
		case NONE:c_color = "没有颜"; break;
		default:c_color = "未知"; break;
		}

		cout << c_color << "方把棋子放回到(" << x << ',' << y << ')' << endl;

	}
	else {
		cout << "出错:不知道为什么放不回去棋子???内核有问题" << endl;
	}

	return false;
}
示例#7
0
//下棋
bool board::step_inside(int x, int y) {
	

	if (selected_color != (m_chess_num + 1) % 2) {
		//cout << "step_inside error: 颜色对不上????" << endl;
		return 0;
	}

	CHESS_COLOR color = static_cast<CHESS_COLOR>((m_chess_num + 1) % 2);
	/*string c_color;
	switch (color) {
	case WHITE:c_color = "后手"; break;
	case BLACK:c_color = "先手"; break;
	case NONE:c_color = "没有"; break;
	default:c_color = "未知"; break;
	}*/
	//who_step++;

	if (lay(color, x, y)) {
		m_chess_pos=++m_chess_num;
		m_chess[m_chess_pos] = data_xytoi(x, y);
		m_curr_color[x][y] = m_chess_pos;
		//cout << c_color << "方在(" << x << ',' << y << ")下子" << endl;
		pre_chess = data_xytoi(x, y);
		return true;
	}
	else {
		//cout << "错误:在(" << x << ',' << y << ")处不能放下" << c_color << "棋子" << endl;
		return false;
	}
}
示例#8
0
	pos string_cast<pos, tstring>
		(const tstring & value)
	{
		pos pos;
		int32 index = value.find(';', 0);
		pos.x = string_cast<float32>(value.substr(0, index));
		int32 index2 = value.find(';', ++index);
		pos.y = string_cast<float32>(value.substr(index, index2 - index));
		pos.l = lay(string_cast<int32>(value.substr(++index2, value.size() - index2)));
		return pos;
	}
示例#9
0
//移棋第二步:在新位置下棋
bool board::move_step(int x, int y) {
	if (isSelected) {
		/*string c_color;
		switch (selected_color) {
		case WHITE:c_color = "后手"; break;
		case BLACK:c_color = "先手"; break;
		case NONE:c_color = "没有"; break;
		default:c_color = "未知"; break;
		}*/
		if (lay(selected_color, x, y)) {
			/*int b_x(0), b_y(0);
			data_itoxy(selected_chess, b_x, b_y);*/

			if (m_chess_pos == 0) {
				//cout << "move_step error: 位置m_chess_pos出错了,为什么??" << endl;
			}
			if (m_chess_pos % 2 != selected_color) {
				//cout << "move_step error :: 放的位置和颜色不一样,为什么??" << endl;
			}
			m_chess[m_chess_pos] = data_xytoi(x, y);
			m_curr_color[x][y] = m_chess_pos;
			m_chess_pos = 0;
			//m_curr_color[b_x][b_y] = 0;
			//cout << c_color << "方把(" << b_x << ',' << b_y << ")移动到(" << x << ',' << y << ')' << endl;
			isSelected = false;
			pre_chess = data_xytoi(x, y);
			

			// 判断棋面修改
			selected_color = (selected_color + 1) % 2;
			who_step++;

			m_before[0].push(pre_chess);
			m_before[1].push( selected_chess);

			return true;
		}
		else {
			/*int b_x(0), b_y(0);
			data_itoxy(pre_chess, b_x, b_y);*/
			//cout << "错误:在(" << b_x << ',' << b_y << ")处不能放下" << c_color << "色棋子,移棋失败" << endl;
			return false;
		}
	}
	else {
		//cout << "错误:未选中棋子!" << endl;
		return false;
	}
}
示例#10
0
suic::Size ScrollViewer::ArrangeOverride(const suic::Size& availableSize)
{
    ClearVisualChildren();

    suic::ElementPtr cont(GetContent());

    if (cont)
    {
        suic::Rect rect;

        rect.right = availableSize.cx;
        rect.bottom = availableSize.cy;

        _vScroll->SetVisible(false);
        _hScroll->SetVisible(false);

        suic::Size desiredSize = cont->GetDesiredSize();

        //
        // 计算是否有滚动条
        //
        _hScroll->UpdateScrollInfo(rect.right, desiredSize.cx, false);
        _vScroll->UpdateScrollInfo(rect.bottom, desiredSize.cy, false);

        ComputeScrollBar(rect.right, rect.bottom, desiredSize.cx, desiredSize.cy);

        suic::PanelPtr lay(cont);

        if (lay)
        {
            lay->SetHorizontalOffset(_hScroll->GetScrollSize());
            lay->SetVerticalOffset(_vScroll->GetScrollSize());
        }

        rect.left += _contentOffset.x;
        rect.top += _contentOffset.y;

        if (rect.bottom > rect.top)
        {
            AddVisualChild(cont.get());
            cont->Arrange(rect);
        }
    }

    return availableSize;
}
示例#11
0
TakeOf::TakeOf(QWidget *parent) :
    AbstractCentWid(parent)
{
    setObjectName("Take-Off");

    lc=new ListCollection;
    lc->append(new CommonList("Les Vols Prets",new TousVol));
    set_lc(lc);

    _fly=new Fly();

    connect(_fly,SIGNAL(doneVol()),this,SLOT(setModel()));

    sc=new OneATimeShowCollection(_fly);
    DropReceiver *dr=new DropReceiver(sc,true);
    set_sc(sc);
    add_dr(dr);
    lay();
}
示例#12
0
//下棋
bool board::step(CHESS_COLOR color, int x, int y) {
	string c_color;
	switch (color) {
	case WHITE:c_color = "白"; break;
	case BLACK:c_color = "黑"; break;
	case NONE:c_color = "没有颜"; break;
	default:c_color = "未知"; break;
	}
	if (lay(color, x, y)) {
		m_chess[++m_chess_num] = data_xytoi(x, y);
		m_curr_color[x][y] = m_chess_num;
		cout << c_color << "方在(" << x << ',' << y << ")下子" << endl;
		pre_chess = data_xytoi(x, y);
		return true;
	}
	else {
		cout << "错误:在(" << x << ',' << y << ")处不能放下" << c_color << "色棋子" << endl;
		return false;
	}
}
示例#13
0
void main()
{

	lay(1,1);
	getchar();
}
示例#14
0
文件: opensave.cpp 项目: Tapsa/QGE
OpenSave::OpenSave(QWidget *papa)
    : QDialog(papa)
{
    setWindowTitle("Open files...");
    QLabel *version_text = new QLabel("      Genie version:", this);
    genie_version = new QComboBox(this);
    genie_version->setMaxVisibleItems(30);
    dataset_check = new QCheckBox("Compressed dataset:", this);
    dataset_path = new QLineEdit(this);
    QPushButton *fill_from_reg = new QPushButton("Fill paths from registry", this);
    QPushButton *browse_dataset = new QPushButton("Browse", this);
    QPushButton *decompress_do = new QPushButton("Decompress only", this);
    decompress_path = new QLineEdit(this);
    QPushButton *browse_decompress = new QPushButton("Browse", this);
    lang_check = new QCheckBox("Language file location:", this);
    lang_path = new QLineEdit(this);
    QPushButton *browse_lang = new QPushButton("Browse", this);
    langX_check = new QCheckBox("Language x1 file location:", this);
    langX_path = new QLineEdit(this);
    QPushButton *browse_langX = new QPushButton("Browse", this);
    langP_check = new QCheckBox("Language p1 file location:", this);
    langP_path = new QLineEdit(this);
    QPushButton *browse_langP = new QPushButton("Browse", this);
    drs_check = new QCheckBox("Path for DRS files *:", this);
    drs_folder = new QLineEdit(this);
    QPushButton *browse_drs = new QPushButton("Browse", this);
    mod_check = new QCheckBox("Path for mod DRS files:", this);
    mod_folder = new QLineEdit(this);
    QPushButton *browse_mod = new QPushButton("Browse", this);
    extra_check = new QCheckBox("Extra 1st priority DRS file:", this);
    extra_path = new QLineEdit(this);
    QPushButton *browse_extra = new QPushButton("Browse", this);
    QGridLayout *layout_main = lay(new QGridLayout, 2, 2, 5);
    QLabel *donate_text = new QLabel("<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_donations"
                                     "&business=4JDUUTF6B9HFN&lc=FI&item_name=Advanced%20Genie%20Editor"
                                     "&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif"
                                     "%3aNonHostedGuest\">Donate to developers</a>", this);
    donate_text->setTextFormat(Qt::RichText);
    donate_text->setTextInteractionFlags(Qt::TextBrowserInteraction);
    donate_text->setOpenExternalLinks(true);
    QPushButton *button_ok = new QPushButton("Load", this);

    genie_version->addItem("TEST");
    genie_version->addItem("TEST.DAT");
    genie_version->addItem("MICKEY.DAT");
    genie_version->addItem("DAVE.DAT");
    genie_version->addItem("MATT.DAT < 6.92");
    genie_version->addItem("Age of Empires Beta (7.04 - 7.11)");
    genie_version->addItem("Age of Empires (7.2)");
    genie_version->addItem("Rise of Rome (7.24)");
    genie_version->addItem("Age of Kings Alpha (10.19)");
    genie_version->addItem("Age of Kings Beta (11.05)");
    genie_version->addItem("Age of Kings (11.5)");
    genie_version->addItem("The Conquerors (11.76)");
    genie_version->addItem("The Forgotten + The African Kingdoms > 12");
    genie_version->addItem("Star Wars: Galactic Battlegrounds (1.0)");
    genie_version->addItem("Clone Campaigns (1.1)");
    genie_version->addItem("Mod: Expanding Fronts");
    genie_version->setCurrentIndex(EV_TC);

    int row = 0;
    layout_main->addWidget(version_text, row, 0);
    layout_main->addWidget(genie_version, row, 1);
    layout_main->addWidget(fill_from_reg, row, 2, 1, 2);
    layout_main->addWidget(dataset_check, ++row, 0);
    layout_main->addWidget(dataset_path, row, 1, 1, 2);
    layout_main->addWidget(browse_dataset, row, 3);
    layout_main->addWidget(decompress_do, ++row, 0);
    layout_main->addWidget(decompress_path, row, 1, 1, 2);
    layout_main->addWidget(browse_decompress, row, 3);
    layout_main->addWidget(lang_check, ++row, 0);
    layout_main->addWidget(lang_path, row, 1, 1, 2);
    layout_main->addWidget(browse_lang, row, 3);
    layout_main->addWidget(langX_check, ++row, 0);
    layout_main->addWidget(langX_path, row, 1, 1, 2);
    layout_main->addWidget(browse_langX, row, 3);
    layout_main->addWidget(langP_check, ++row, 0);
    layout_main->addWidget(langP_path, row, 1, 1, 2);
    layout_main->addWidget(browse_langP, row, 3);
    layout_main->addWidget(drs_check, ++row, 0);
    layout_main->addWidget(drs_folder, row, 1, 1, 2);
    layout_main->addWidget(browse_drs, row, 3);
    layout_main->addWidget(mod_check, ++row, 0);
    layout_main->addWidget(mod_folder, row, 1, 1, 2);
    layout_main->addWidget(browse_mod, row, 3);
    layout_main->addWidget(extra_check, ++row, 0);
    layout_main->addWidget(extra_path, row, 1, 1, 2);
    layout_main->addWidget(browse_extra, row++, 3);
    pad(layout_main, false, true);
    layout_main->addWidget(donate_text, ++row, 1, Qt::AlignRight);
    layout_main->addWidget(button_ok, row, 2);
    layout_main->setColumnStretch(1, 1);
    setLayout(layout_main);
    button_ok->setDefault(true);

    connect(browse_dataset, &QPushButton::released, [this]
    {
        dataset_path->setText(QFileDialog::getOpenFileName(this, "Select a file", "", "Compressed data set (*.DAT)"));
    });
    connect(browse_decompress, &QPushButton::released, [this]
    {
        decompress_path->setText(QFileDialog::getOpenFileName(this, "Select a file", "", "Compressed genie file (*)"));
    });
    connect(decompress_do, &QPushButton::released, [this]
    {
        std::string filename = decompress_path->text().toStdString(), savename = filename + "u";
        if(!filename.empty())
        {
            genie::DatFile raw;
            raw.extractRaw(filename.c_str(), savename.c_str());
            QMessageBox::information(this, "Decompress", "Saved to " + QString::fromStdString(savename));
        }
    });
    connect(button_ok, &QPushButton::released, [this]
    {
        accept();
    });
}
示例#15
0
文件: themer.c 项目: rbuj/emerald
static void append_engine(gchar * dlname)
{
    gchar * can;
    gchar * err;
    (void) dlerror();
    void * hand = dlopen(dlname,RTLD_NOW);
    err = dlerror();
    if (!hand || err)
    {
        g_warning("%s", err);
        if (hand)
            dlclose(hand);
        return;
    }
    can = canonize_name(dlname);
    if (engine_is_unique(can))
    {
        layout_settings_proc lay;
        lay = dlsym(hand,"layout_engine_settings");
        if ((err=dlerror()))
            g_warning("%s", err);
        if (lay)
        {
            get_meta_info_proc meta;
            EngineData * d = g_malloc0(sizeof(EngineData));
            GtkTreeIter i;
            const gchar * format =
                "<b>%s</b> (%s)\n"
                "<i><small>%s</small></i>";
            meta = dlsym(hand,"get_meta_info");
            if ((err=dlerror()))
                g_warning("%s", err);
            d->meta.description=g_strdup("No Description");
            d->meta.version=g_strdup("0.0");
            d->meta.last_compat=g_strdup("0.0");
            d->meta.icon=gtk_icon_theme_load_icon(gtk_icon_theme_get_default(),
                                                  "image-missing",24,
                                                  GTK_ICON_LOOKUP_USE_BUILTIN,
                                                  NULL);
            if (meta)
                meta(&(d->meta));
            else
                g_warning("Engine %s has no meta info, please update it, using defaults.",dlname);

            d->dlname = dlname;
            d->canname = can;
            d->vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL,2);
            g_object_ref(d->vbox);
            lay(d->vbox);
            EngineList = g_slist_append(EngineList,d);
            gtk_list_store_append(EngineModel,&i);

            gtk_list_store_set(EngineModel,&i,ENGINE_COL_DLNAME,d->dlname,ENGINE_COL_NAME,d->canname,
                    ENGINE_COL_VER,d->meta.version,ENGINE_COL_LAST_COMPAT,d->meta.last_compat,
                    ENGINE_COL_ICON,d->meta.icon,ENGINE_COL_MARKUP,
                    g_markup_printf_escaped(format,d->canname,d->meta.version,d->meta.description),
                    -1);
            /* gtk_combo_box_prepend_text(GTK_COMBO_BOX(EngineCombo),d->canname); */
        }
    }
    dlclose(hand);
}
示例#16
0
// 悔棋:无须传入参数: 传出参数 : p1 现在位置的棋子, p2=0 下棋模式,p2!=0 之前位置的棋子
void board::back(int& p1,int& p2)
{
	if (m_before[0].empty()){
		//cout << "error:: 无棋可悔" << endl;
		return;
	}

	p1=(m_before[0].top()), p2=(m_before[1].top());
	m_before[0].pop();
	m_before[1].pop();

	if (m_before[0].empty()) pre_chess = -1;
	else 
	pre_chess = m_before[0].top();


	// 局面改变 
	who_step--;
	selected_color = (selected_color + 1) % 2;


	int cx(0), cy(0);
	
	data_itoxy(p1, cx, cy);

	m_chess_pos = m_curr_color[cx][cy];

	if (m_chess_pos % 2!=selected_color) {
		//cout << "back error; 颜色不一样???" << endl;
		return;
	}

	m_curr_color[cx][cy] = 0;
	if (!retract(selected_color, cx, cy))
	{
		//cout << "back error ::不能移棋???" << endl;
		return;
	}


	// p2!=0 表示移棋的模式
	if (p2) {
		int bx(0), by(0);
		data_itoxy(p2, bx, by);
		lay(selected_color, bx, by);
		m_curr_color[bx][by] = m_chess_pos;
		m_chess[m_chess_pos] = p2;
		//	m_chess_num--;
	}


	else {
		if (m_chess_pos != m_chess_num) {
			//cout << "error:: 删除的棋子不是最后下的棋子??" << endl;
		}
		m_chess_num--;
		int b_x(0), b_y(0);
		data_itoxy(m_chess[m_chess_pos], b_x, b_y);
		//cout << "错误:在(" << b_x << ',' << b_y << ")处success" <<endl;
	}
	
}
示例#17
0
void lay(int row,int column)
{
	bool kkk=false;

	//行(row)优先摆放
	if (graph[row][column]!=0)
	{
		if (row<n)
		{
			lay(row+1,column);
		}
		else if (row==n&&column<n)
		{
			lay(1,column+1);
		}
		else
		{
			for (int x = 1; x <= n; x++)
			{
				for (int y = 1; y <= n; y++)
				{
					printf("%2d",graph[x][y]);
				}
				printf("\n");
			}
			printf("\n");
		}
	}
	else
	{
		for (int i = 1; i <= n; i++)
		{
			if (check(row,column,i))
			{
				graph[row][column]=i;
				kkk=true;
				if (row<n)
				{
					lay(row+1,column);
				}
				else if (row==n&&column<n)
				{
					lay(1,column+1);
				}
				else 
				{
					for (int x = 1; x <= n; x++)
					{
						for (int y = 1; y <= n; y++)
						{
							printf("%2d",graph[x][y]);
						}
						printf("\n");
					}
					printf("\n");
				}
			}
		}
		if (kkk==true)
		{
			graph[row][column]=0;
		}
	}
}