分享一个有趣的火柴人。

By o3o_o3o_o3o at 2021-08-11 • 1人收藏 • 1330人看过

我今天无聊,做了一个火柴人来一起陪我打发时间。大神们可以改善一下这个代码,增加一些火柴人的功能。

文件:

火柴人.rar

文件效果(注意鼠标光标):

代码:

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=399;bottom=299)
winform.add(
plus={cls="plus";left=0;top=0;right=400;bottom=300;foreRepeat="scale";z=1}
)
/*}}*/

import mouse;
winform.show(true);
var x,y,cx,cy = win.getPos(win.getDesktop()); 
winform.setPos(cx/2-winform.width/2,cy-winform.height+100)
i=0;
import win.ui.layered;
import win.ui.menu;
var popmenu = win.ui.popmenu(winform);
popmenu.add("退出",function(){
    winform.close()
})
win.ui.layered(winform)
startRight = function(){
    i = i%12+1
    var wx,wy = winform.getPos();
    winform.plus.foreground = "/.res/"+i+".png"
    winform.setPos(wx+7,wy)
}
startLeft = function(){
    i = i%12+1+12
    var wx,wy = winform.getPos();
    winform.plus.foreground = "/.res/"+i+".png"
    winform.setPos(wx-7,wy)
}
stop = function(){
    winform.plus.foreground = "/.res/standing.png"
}
winform.wndproc = function(hwnd,message,wParam,lParam){ 
    select(message) {
        case 0x201/*_WM_LBUTTONDOWN*/ {
            //winform.hitCaption()
        }
        case 0x204/*_WM_RBUTTONDOWN*/ {
            popmenu.popup()
        }
    }
}
while(winform.valid){
    var wx,wy = winform.getPos();
    var mx,my = mouse.getPos();
    if(mx>wx+winform.width/2+10){
        startRight()
    }
    elseif(mx<wx+winform.width/2-10){
        startLeft()
    }
    else{
        stop()
    }
    win.delay(1)
}
win.loopMessage();
return winform;

希望大佬们可以给这个火柴人增加更多的功能,比如跳跃、睡觉和聊天等,让这个火柴人变得更有趣。


8 个回复 | 最后更新于 2021-10-01
2021-08-11   #1

桌面宠物,哈

2021-08-11   #2

大概是这个意思。

2021-08-11   #3

动画可以写到plus.onAnimation里,然后可以在plus.onStateChange里根据 state 去调用plus.startAnimation、plus.stopAnimation, 图片也可以合成到一张图上,用gdip.bitmap(path).split分割,然后直接img[i]下标操作也挺方便的

2021-08-12   #4

回复#3 @nlysh007 :

真是不错的建议

2021-08-12   #5

不错

2021-08-26   #6

相当有意思 再出来一个打起来就更有意思了


2021-10-01   #7

最近开学有一些忙,终于可以在国庆节发一个评论了。


可以在while语句中加一些代码,就可以使火柴人一直在电脑的最前端了,不然的话火柴人会跑到所有窗口的最后面去的。

win.setPos(winform.hwnd,,,,,-1/*_HWND_TOPMOST*/)

我们把第十二行的代码中的100改成156就会落在整个电脑的最底端而不是在任务栏上走动了。

2021-10-01   #8

回复#7 @o3o_o3o_o3o :

置顶可以用


win.setTopmost(winform.hwnd);

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...