光庆内存画板应用之——《找不同游戏》 1.1改进界面闪烁

webyjh 4天前 131



 import win.ui;
import godking.paint; //导入光庆大帝的内存画板库
import godking.message;
import console;
/*DSG{{*/
mf = win.form(text="找不同";right=969;bottom=700)
mf.add(
edit={cls="edit";left=627;top=241;right=951;bottom=431;edge=1;multiline=1;z=2};
plus={cls="plus";left=0;top=0;right=620;bottom=700;background="\res\0.jpg";foreRepeat="stretch";notify=1;repeat="stretch";z=1};
static={cls="static";text="剩余不同点:";left=680;top=36;right=912;bottom=62;font=LOGFONT(h=-20);transparent=1;z=3}
)
/*}}*/

var i=1
var dpi = godking.paint.getDpi(); // 获取DPI缩放比例
var xy1={}  // 上半图所有正确的区域
var xy2={}  // 下半图所有正确的区域


var xy3={} //找到的 正确的
var xy4={} //找到的 正确的

mf.text=dpi

var py=358*dpi //偏移

table.push(xy1,
::RECT(371,19,420,70),
::RECT(471,38,538,92),
::RECT(96,13,142,60),
::RECT(90,128,120,163),
::RECT(28,310,68,347),
::RECT(210,255,247,280),
::RECT(403,295,450,328),
::RECT(562,223,608,268),
::RECT(220,117,260,153),
::RECT(478,183,528,214),
)
//处理屏幕缩放
for k,v in xy1{
	v.top*=dpi
	v.left*=dpi
	v.right*=dpi
	v.bottom*=dpi
}
//处理下半图 区域
xy2=table.clone(xy1)
for k,v in xy2{
	v.top=v.top+py
	v.bottom=v.bottom+py	
}




mf.static.text="共有不同点:"+table.count(xy1)





mf.plus.onMouseDown = function(wParam,lParam){
	var x,y = win.getMessagePos(lParam);	
  
	//设计时找坐标用


/*
	if i % 2!=0{
		mf.edit.text=""	
		mf.edit.print("::RECT("+x+","+y+",")
	}else{
		mf.edit.appendText(x+","+y+"),")
	}	
	i+=1	
	return ;
*/




	
	
	var p=godking.paint.fromPlus(mf.plus,false/*自动刷新*/,false/*重绘背景*/)
	
	var res=0;//找点结果正确 错误
	for k,v in xy1{
		if x>v.left and x<v.right and y>v.top and y<v.bottom{			
			table.push(xy3,v)
			table.push(xy4,xy2[k])	//将下半图对应的点加入表		
			table.remove(xy1,k) //移除已找到的,避免重复点击
			table.remove(xy2,k) //移除已找到的,避免重复点击			
			mf.static.text="剩余不同点:"+table.count(xy1)		
			if table.count(xy1)==0{
				godking.message().great("你真棒!已全部找出!",0/*延时关闭时间*/,/*是否隐藏OK按钮*/)
			}
			res=1
			break;		
		}
	}
	//如果点击的下半图
	for k,v in xy2{
		if x>v.left and x<v.right and y>v.top and y<v.bottom{						
			table.push(xy4,v)			
			table.push(xy3,xy1[k]) //将上半图对应的点加入表
			table.remove(xy1,k) //移除已找到的,避免重复点击
			table.remove(xy2,k) //移除已找到的,避免重复点击
			
			mf.static.text="剩余不同点:"+table.count(xy1)		
			if table.count(xy1)==0{
				godking.message().great("你真棒!已全部找出!",0/*延时关闭时间*/,/*是否隐藏OK按钮*/)
			}
			res=1
			break;		
		}
	}
	if res==0{
		mf.edit.print("点错了")
	}else{
		mf.edit.print("找对了")
		for k,v in xy3{
			p.drawRect(v ,0xFF00FF00,5,3)					
		}
		for k,v in xy4{
			p.drawRect(v ,0xFF0000FF,5,3)					
		}
		mf.plus.redraw()
	}

}
 

mf.show();

//作弊

/**
var p1=godking.paint.fromPlus(mf.plus,true/*自动刷新*/,false/*重绘背景*/)
for k,v in xy1{
	p1.drawRectF( v,0xFF00FF00,3/*线宽*/,/*线型*/)
}

for k,v in xy2{
	p1.drawRectF( v,0xFF0000FF,3/*线宽*/,/*线型*/)
}
**/

return win.loopMessage();
上传的附件:
最新回复 (0)
返回