透過アイコンの作成ソフトの改良版

前に作った透過アイコン作成ソフトの改良版です。

アイコン作成することは、あまりないので、
前に作ったソフトはときどき使うだけなのですが、何か微妙なので、これも直してみました。

前回記事、Windowsの透過アイコン作成です と

基本的なプログラムの考え方は同じです。(HSPスクリプトで作成されています。)

改良点として
1.最初に元画像を表示しました。(画像を確認するため)
2.基本的な画像の大きさを256×256から128×128にしました。(現在においては、一般的で十分な大きさなため)
3..ICO形式のマルチアイコンを作成できるようにしました。(Windowsだけでなく、いろんなアプリに使える汎用性があるため、ただファイルの大きさは増えます)

ソースプログラムは前と似ていますが、ちょっと長くなる(100ステップ)ので、ダウンロードして確認してください。

ダウンロードはダウンロードページからお願いします。

makeico2.zipを展開して、その中のmakeicon2.exeを起動してください。
ファイルの選択がでますので、目的の画像を指定してください。

下は作業例です。



上はショートカットでアイコン(半透明)を使った例

使い方
1.まず、背景が白色(255,255,255)のアイコン用画像を用意してください。
2.その画像を呼び込んだのち、背景の色または透明を選んでOKボタンを押してください。
3.確認の画像がでますので、指示に従って保存してください。
の単純なプログラムです。

プログラムの仕様
元画像はそのまま表示します。
作成後の画像は128×128です。
保存するときの拡張子によって、自動的に画像形式が変わります。
拡張子.bmpで背景が透過のとき、画面上では黒くなります。よって、アイコン化するときは、.bmpで保存したものをファイル名変更で.icoの拡張子に強制的に変えると透明になります。(俗にbmp形式のwindowsアイコンという)
拡張子.icoで保存すると、自動的にICO形式の透過付マルチアイコン(128×128,48×48,32×32,16×16)になります。

上の仕様はあくまで、そのままmakeico2.exe使った場合ですので、
HSPスクリプトでiconmain.hspのソースプログラムを変更すれば自分の好みに変更できます。
なお、マルチアイコンについては、ireso styleのホームページを参考にC#で作成しました。この場で感謝いたします。

JUGEMテーマ:PC関連
| HSPスクリプト | 16:16 | comments(0) | trackbacks(0) |

「なでしこ」などでジョイパッドを使う


いままの記事のアクセスログを見ていると、
ゲームパッド(joypad)に関する記事にアクセスが多いので、
需要があるかなと思って、どんなゲーム(プログラム)でもゲームパッドをつかえるように
プログラムを作ってみました。
やっぱりゲームというのは、パソコンの定番ですね。

とは言っても、前に書いたHSPスクリプトのプログラムからキーボード操作をしているだけですが?!(HSPスクリプトではアクティブでなくてもキー送信できることを利用します。)
まず、ゲームパッドを使ったプログラム(その2)を見てください。

ごく簡単です。
前のプログラムを少しだけ変更を加えて出来上がります。

前回からの変更事項

1.#include "llmod3/llmod3.hsp"と#include "llmod3/input.hsp"を加える。
2.真ん中辺のif (joy & 1) != 0 :の後を変更してkeybd_event 38,-1などに変える。
3.不要なものを(//などで)消す。

だけです。

次のとおりとなります。

    #include "hmm.as"
    #include "llmod3/llmod3.hsp"
    #include "llmod3/input.hsp"

    diinit
    onexit goto *Program_End
    screen 0,320,240
    digetjoynum
    n_joy = stat
    b_name = ""
    
*Main_Pro
    await 200
    redraw 0
    cls 0
    if n_joy = 0 :mes "接続されていません。"
    digetjoystate joy, 0
//    if (joy & 1) != 0 :keybd_event 38,-1//うえ
//    if (joy & 2) != 0 :keybd_event 40,-1//した
//    if (joy & 4) != 0 :keybd_event 37,-1//みぎ
//    if (joy & 8) != 0 :keybd_event 39,-1//ひだり
    if (joy & 16) != 0 :keybd_event 38,-1//ボタン1
    if (joy & 32) != 0 :keybd_event 39,-1//ボタン2
    if (joy & 64) != 0 :keybd_event 40,-1//ボタン3
    if (joy & 128) != 0 :keybd_event 37,-1//ボタン4
 //   if (joy & 256) != 0 :b_name= "ボタン5"
 //   if (joy & 512) != 0 :b_name= "ボタン6"
 //   if (joy & 1024) != 0 :b_name= "ボタン7"
 //   if (joy & 2048) != 0 :b_name= "ボタン8"
 //   if (joy & 4096) != 0 :b_name= "ボタン9"
    if (joy & 8192) != 0 :goto *Program_End//ボタン10
    redraw 1
    goto *Main_Pro

*Program_End
    diend
    end


使い方はごく簡単です。

上のソース(コード)をHSPスクリプトエディタに貼り付けて実行するだけです。
(なお、hmm.as(hmm.dll)は標準のHPSには入っていません。ゲームパッドを使ったプログラムを参考にして入れておいてください。そもそもHSPスクリプトをダウンロードしてない人も)

上の場合はゲームパッドのボタン1からボタン4にキーボードの矢印(↑↓←→)を当てはめています。
また、ボタン10には終了を当てはめています。
これで、ゲームパッドのボタンを押せばキーボードを叩いていること同じになります。

1、まず遊びたいゲームで操作するキーボードの文字とゲームパッドのボタンを合わせるため変更してください。

2、プログラムを実行(上のようにゲームパッドのボタンに終了を指定すれば、そのボタンで終了)

3、遊びたいゲームを実行

以上でどんなゲームでもゲームパッド(joypad)で操作できます。
(ゲーム開始時にバッチ処理やプログラム中に予め2を実行しておけばさらに手間は省けます。)

日本語プログラム「なでしこ」ではゲームパッドに関する命令がありませんでしたが、なでしこで作ったゲーム(プログラム)も、
ゲームパッドを使ってゲームが楽しめます。

プログラムの説明は、
前の記事(ゲームパッドを使ったプログラム)を見てください。
*main_Proのawait 200のところは反応時間になりますので、自分にあった数字に変えてください。
(現在は1秒に5回(0.2秒ごと)呼びにいっています。ボタンを押し続ければ1秒に5回キーボードを叩いたことになります。)
新しく使った命令のkeybd_eventだけ説明します。
例)keybd_event 38,-1
keybd_event の次の数字はキーボードのコード番号で下の表とおり、例では↑矢印です。
次の-1は押して離す意味です。つまり叩くことになります。
ちなみに、0にすれば(もう一度この命令を1で行うまで)押しっぱなしになります。

ボタン番号の表 (番号:ボタン名)
1 : マウスの左ボタン
2 : マウスの右ボタン
3 : キャンセル([CTRL]+[BREAK])
4 : 3ボタンマウスのまん中のボタン
8 : [BACKSPACE](PC98の[BS])
9 : [TAB]
13 : [ENTER]
16 : [SHIFT]
17 : [CTRL]
18 : [ALT](PC98の[GRPH])
20 : [CAPSLOCK]
27 : [ESC]
32 : スペースキー
33 : [PAGEUP](PC98の[ROLLDOWN])
34 : [PAGEDOWN](PC98の[ROLLUP])
35 : [END](PC98の[HELP])
36 : [HOME](PC98の[HOMECLR])
37 : カーソルキー[←]
38 : カーソルキー[↑]
39 : カーソルキー[→]
40 : カーソルキー[↓]
48〜57 : [0]〜[9](メインキーボード)
65〜90 : [A]〜[Z]
96〜105 : [0]〜[9](テンキー)
112〜121 : ファンクションキー [F1]〜[F10]

あとがき
いろんな言語で作ってみましたが、皆さんに簡単に作ってもらえそうなHSPスクリプトにしました。

ただいま「なでしこ」にて、上のゲームパッド入力プログラムの汎用版(exe)作成中です。
まもなく完成します。

追記
ゲームパッド操作プログラムが完成しました。
JUGEMテーマ:PC関連
| HSPスクリプト | 16:13 | comments(0) | trackbacks(0) |

Windowsの透過アイコン作成ソフトです。

前にも透過アイコンの作り方を書きましたが
フリーソフトを使ったものでした。

やっぱり自前で作ったプログラムで行いたいので、
例によって機能の少ない単純な透過アイコン作成ソフトをつくりました。
仕様としては、背景色の白色の画像を白色を透過し透過アイコン(.ico)、透過pngにします。

今回はHSPスクリプトで拡張プラグイン(a2d.hsp)を使います。

ソースプログラムは以下のとおりです。

#include "a2d.hsp"
;初期設定
    screen 0, 640, 480
    title "AlphaPaint"
    redraw 0
;仮想イメージ画面の作成
    repeat 2
    alCreateImage cnt,640,640
    if stat = -1 :dialog "GDI+ を初期化できませんでした。":end
    loop
;背景の作成
*hajime
    a1=0:a2=0:a3=0:a4=0:a5=0
    objsize 80,24
    chkbox "赤",a1
    chkbox "緑",a2
    chkbox "青",a3
    chkbox "透明",a4
    chkbox "半透明",a5
    button "OK",*chkok
    stop
;色と透明度のサブルーチン
*chkok
    c1=0:c2=0:c3=0:alph1=255
    if a1 = 1 : c1 = 255
    if a2 = 1 : c2 = 255
    if a3 = 1 : c3 = 255
    if a4 = 1 : alph1 = 0
    if a5 = 1 : alph1 = 64
    alSelectImage 1
    alColor c1, c2, c3, alph1 ;透明度の設定
    alFillRect 0, 0, 255, 255 ;塗りつぶし
;ファイルの読み込み
    dialog "bmp;*.png;*.jpg;*.jpeg;*.tif;*.tiff;*.ico;*.gif", 16, "Image"
    if stat = 0 :dialog "読み込み失敗":goto *owari
    alGetFileWidth refstr, sizex, sizey
    if stat = -1 :dialog "読み込み失敗":goto *owari
;イメージの合成
    alSelectImage 0
    alErase
    alLoadFile refstr
    alCopyModeColorKey 0xffffff, 0xffffff ;透明色の設定(白)
    alStretchImageToImage 0, 1, 0, 0, sizex, sizey,   0, 0, 255, 255 ;作成サイズの設定
    alCopyImageToScreen 1, 0, 80, 0, 255, 255
    redraw 1
;イメージの保存
    image_form = "image/bmp"
    dialog "bmp", 17, "bmp Image"
    if stat = 0:goto *owari
    astr = refstr
    if strmid(astr, strlen(astr)-4, 4) = ".png" : image_form = "image/png"
    alSelectImage 1
    alSaveFile astr, image_form, 0, 0, 255, 255
    if stat = -1: dialog "保存失敗"
    wait 10 ; ミスクリック対策
*owari
    dialog "終了しますか?",2
    if stat = 6:goto *Program_End
    cls
    goto *hajime
    stop

*Program_End
    end

以上です。
単純な構造ですので、解かりやすいとおもいますが
いままでよりちょっと長いので、すみません。
でも、初心者でもなんとか読めると思います。

例によってコピーアンドペースト等でHSPスクリプトエディタに入力してください。




使い方
 ペイントなどのソフトで図形や写真を作り背景を白色にしてbmpやpngで保存してください。

 仕様としては、基本的に白色を透過します。(もちろん行番号42で変更できます)
 出力は、256×256pixの大きさのアイコンで保存します。(行番号43および行番号53で変更できます)

1.実行すると色と透明のチェックボックスがでますので、作成する背景色と透明度を選択してください。


*背景色は組み合わせを含め7色です
*透明を選択すると色は関係なくなります。

2.OKボタンを押すと画像ファイルを聞いてきますので、透過したいファイルを選択してください。



3.続いて出力ファイルを聞いてきますので、
 アイコンにしたい場合は、拡張子を.icoにしてください。
 透過pngにしたい場合は、拡張子を.pngにしてください。
 それ以外は、bmpファイルとして保存されます。

なお、.icoで保存しても、ico形式ではなくbmp形式のアイコンですので、
実行形式(.exe)などには使えません。念のため



*tetu10.pngをtetu20.icoにしたもの

これで透過アイコンができますので、ショートカットなどでお使いください。


なおプログラムだけほしい方は
以下からダウンロードしてください。

Windows版
ダウンロードページ(zip版 130KB)

ダウンロード版はちょっとだけ内容が変わっていますが、(画像を保存するかどうかを聞いてくる)
ソースも入っていますので、不便なら変更して使用してください。

追記(2015.5)
透過アイコン作成の改良版を作成しました。


JUGEMテーマ:PC関連
| HSPスクリプト | 18:48 | comments(0) | trackbacks(0) |

ゲームパッドを使ったプログラム(その4)

前回のつづきです。

4.最後に実行ファイル(.exe)を作って、ワンクリックで実行できるようにします。

やり方は、自動で行うものと、手動で行う方法があります。

自動で行う

スクリプトのソースプログラムの先頭に、プログラムの名前を付けます。
たとえば、block4と名前をつけるとすれば

    #packopt name "block4"



とします。

あとは、
HSPスクリプトエディタのメニューの「HSP」から実行ファイル自動作成を選ぶだけです。
(または、「Ctrl」+「F9」を押す)



これで、カレントディレクトリに実行ファイル(block4.exe)が作成されます。

今回は、拡張プラグイン(hmm.dll)を使用しているため、
ディレクトリの場所を移す場合やほかの人に配布する場合は
hmm.dllもコピーして同じ場所においてください。


なお
手動で行う場合は、START.AXおよびオブジェクトファイル、pacfileを作成してから
メニューの「ツール」から「exeファイルの作成」で行ってください。
自動の場合は自動的に上のファイルが作成されています。


どちらも
詳しくは、プログラムマニュアルの実行ファイルの作成方法に書いてあります。


実行プログラムのだけほしい方は、ダウンロードを

ダウンロードページ

から行ってください。
ソースプログラムも一緒に入っていますので、自由にお使いください。



JUGEMテーマ:PC関連
| HSPスクリプト | 16:43 | comments(0) | trackbacks(0) |

ゲームパッドを使ったプログラム(その3)

前回のお約束のとおり

さっそく

ゲームパッドを使った、ブロック崩しのソースプログラムを書いておきます。


    ;
    ;    ブロック崩し(4)
    ;    (ボール・バー・ブロック表示します)
    ;
    #include "hmm.as"

    diinit
    onexit goto *Program_End
    digetjoynum
    n_joy = stat
    blcount=0
    bltensu=0
    await 1000
    
    x1=0:y1=0        ; 画面左上の座標
    x2=480:y2=640        ; 画面右下の座標

    clrflag=0        ; クリアフラグ

    blsize=16        ; ボールのサイズ
    blspd=5        ; ボールのスピード
    blx=240:bly=300        ; ボールの座標
    bpx=4:bpy=4        ; XY方向のボール座標加算値
    bk=0            ; ブロックを崩すフラグ(1=崩す)
    mblsize=-blsize

    barsize=64        ; バーのサイズ
    barx=240:bary=540    ; バーの座標

    barhalf=barsize/2
    blhalf=blsize/2

    wx=0:wy=100        ; ブロックの表示開始位置(左上)
    wsx=15:wsy=8        ; ブロックの配置数(X,Y)
    wpx=x2/wsx:wpy=16    ; ブロック1個あたりのサイズ

    dim wall,wsx,wsy    ; ブロックを表示するフラグ
                ; 0=表示、1=表示しない
    screen 0,x2,y2
    title "ブロック崩し"

    cls 4
    
*main
    redraw 0
    gradf 0,0,x2,y2,1,0,128    ; 画面クリア
    
    pos 0,0:color 255,255,255:mes "SCORE="+bltensu;スコアの表示
    
    ; バー : マウス座標から位置を決定
    digetjoystate joy, 0
    if (joy & 4096) != 0 {ynougoki=-7}
    if (joy & 8192) != 0 {ynougoki=7}
    barx=barx+ynougoki
    color 255,255,255
    boxf barx,bary,barx+barsize,bary+16
    ynougoki=0
    
    ; ボール : X方向の移動
    blx=blx+bpx
    if blx<=x1 : blx=x1 : bpx=-bpx
    if blx>=(x2-blsize) : blx=x2-blsize : bpx=-bpx

    ; ボール : Y方向の移動
    bly=bly+bpy
    if bly<=y1 : bly=y1 : bpy=blspd : bk=1 : blspd=8
    if bly>=(y2-blsize) {
        if blcount=4 { goto *gameover }
        else { blx=240 : bly=300
               blcount=blcount+1
               blspd=5
               bpx=4 : bpy=4
               barx=240
               await 1050 : goto *main }
        }
    ; ボールとバーがぶつかったかどうか調べます
    coly=bly+blsize
    if (coly>=bary)&(bly<(bary+16)) {    ; ボールY座標のチェック
        ; ボールX座標のチェック
        colx=blx+blhalf
        x=barx+barhalf
        if abs(colx-x)<(barhalf+blhalf) {
            bly=bary-blsize : bpy=-blspd
            i=(colx-x)/4
            if i!=0 : bpx=i
            bk=1
            bltensu=bltensu+1
            if clrflag {
                dim wall,wsx,wsy    ; ブロックを復活させる
                clrflag=0
            }
        }
    }

    ; ブロックの処理
    colx=wpx+bsize
    coly=wpy+bsize
    left=0
    repeat wsy
    cy=cnt
    y=cnt*wpy+wy
    hsvcolor cnt*10,255,255
    repeat wsx
        cx=cnt
        x=cnt*wpx+wx
        if wall(cx,cy)=0 {
            ; ブロックを表示
            left++
            boxf x,y,x+wpx-2,y+wpy-2
            i=blx-x:j=bly-y
            if (i>=mblsize)&(i<colx)&(j>=mblsize)&(j<coly)&(bk) {
                wall(cx,cy)=1
                bpy=-bpy
                bk=0
                bltensu=bltensu+10
            }
        }
    loop
    loop

    ; ボールを表示
    pos blx,bly:color 255,255,255
    font msgothic,blsize
    mes "●"

    redraw 1
    await 16

    if left=0 : clrflag=1
    goto *main

*gameover
    objsize 180,32
    pos 150,330:button "終わり",*Program_End
    stop


*Program_End
    diend
    end    


以上です。

コピーアンドペースト等でHSPスクリプトエディタに複写してください。

以下、実行したところ



HSPスクリプトエディタのサンプルプログラムのSampleのblock3のブロック崩しに

1.ゲームパッドを使って動かす。
 この場合
 ボタン9:左にバーを動かす。
 ボタン10:右にバーを動かす。
となっています。
変更するときは、行番号52、53の
    if (joy & 4096) != 0 {ynougoki=-7}
    if (joy & 8192) != 0 {ynougoki=7}
を変更してください。
 また、バーの動きの速さを変えるときはynougoki=のあとの数字を変えてください。

2.ボールの数を5個にしています。
変更するときは、行番号68の
        if blcount=4 { goto *gameover }
の数字を変更してください。

3.スコアを表示するようにしてあります。
設定を変えるときは、行番号87、115の
            bltensu=bltensu+1
                bltensu=bltensu+10
の数値を変えてください。

なお、サンプルよりボールのスピードをかなり落としてあります。
著者にはちょうどいいのですが、若者はもっと反応が良いと思いますので、
調節するには、行番号21、66、71の
      blspd= のあとの数字を変えてください。

などの変更をしてあります。

見てわかるとおり、前回テストで試した形を使って
キーボードやマウスの入力をゲームパッドに置き換えれば
いろんなゲームでゲームパッドを使って遊べると思います。

次回は最後に実行ファイルの作り方を書く予定です。

その4に行きます


JUGEMテーマ:PC関連
| HSPスクリプト | 19:28 | comments(0) | trackbacks(0) |

07
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
Profile
New entries
Archives
Categories
Recent comment
カウンター


今日
昨日
レンタルサーバ/プロバイダー




ファッション
カタログ通販ベルーナ(Belluna)

イマージュ - IMAGEアウトレットセール
yahoo・その他


買い物
ビックカメラ.com



Mobile
qrcode
Links
Others
無料ブログ作成サービス JUGEM