Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2016/11/11 (金)

ぷろぐらみんぐ講座・・・的な?

| 16:56 | ぷろぐらみんぐ講座・・・的な? - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - ぷろぐらみんぐ講座・・・的な? - 雪乃☆雫のなでしこ日和 ぷろぐらみんぐ講座・・・的な? - 雪乃☆雫のなでしこ日和 のブックマークコメント

 漫才の文句をあれこれ考えるのもめんどーなんで、いっとばかり、マニュアルのHTMLからセリフを抜いてしゃべらそうとしたら、んなことする用のテキストじゃ無いんで、かえってめんどーで大変だった(大汗)

 知恵が足りないから、どーしても抜けないセリフがあったりもして・・・

 しかも、癒やされるかって言うと、なんかびみょーだ;;;

#-----------------------------------------------------------------------
# デスクトップマスコット的な?プログラミング講座??
#-----------------------------------------------------------------------

#-----母艦--------------------------------------------------
!母艦設計=「母艦の可視はオフ母艦のタイトルは「ぷろぐらみんぐ講座?」
母艦のクライアント幅はデスクトップW母艦のクライアント高さはデスクトップH母艦のスタイルは「枠なし」
母艦中央移動母艦デスクトップ色画面クリア母艦をタスクトレイ入れる。
母艦のタスクトレイクリックした時は~
  「終了しますか?」で二択。
  もしそれはいならば終わる。
#------------------------------------------------------------

#-----宣言--------------------------------------------------
マニュアルとは配列=「{ランタイムパス}doc\kouza\*.htm」の全ファイル列挙。

透明色とは整数=$00FF00。肌色とは整数=$FFDDCC。帽子とは整数=$EECC77。ネクタイとは整数=$FF6666。眼鏡とは整数=$CCDDEE。
うさぎとは整数=$EEBBCC。青服とは整数=$77BBBB。赤服とは整数=$EE7777。黄服とは整数=$EEDD77。橙服とは整数=$FF9966。緑服とは整数=$66CC99。
キャラ設定とは配列=「{ランタイムパス}doc\kouza\sensei.gif,0/0/{透明色},0/80/{透明色},89/0/{透明色},89/80/{透明色},75/85/{透明色},50/25/{肌色},60/50/{肌色},60/80/{青服},40/35/{眼鏡},70/35/{眼鏡}
{ランタイムパス}doc\kouza\seito.gif,0/0/{透明色},80/80/{透明色},50/40/{肌色},50/80/{赤服}
{ランタイムパス}doc\kouza\game\usagi.gif,0/0/{透明色},45/45/{肌色},45/80/{うさぎ},50/30/{うさぎ},15/20/{うさぎ},80/20/{うさぎ}
{ランタイムパス}doc\kouza\game\ufo.gif,0/0/{透明色},50/40/{肌色},50/80/{黄服}
{ランタイムパス}doc\kouza\stereotype\jousi.gif,0/0/{透明色},89/0/{透明色},10/30/{肌色},40/30/{肌色},77/32/{肌色},40/65/{ネクタイ},40/80/{ネクタイ},30/80/{青服},50/80/{青服}
{ランタイムパス}doc\kouza\stereotype\buka.gif,0/0/{透明色},50/40/{肌色},50/80/{橙服}
{ランタイムパス}doc\kouza\gui\toolman.gif,0/0/{透明色},50/20/{帽子},50/40/{肌色},50/80/{緑服}」

# 検索項目
追加検索項目とは配列=「class="code"{~}class="menuG"{~}.gif"{~}.png"」
キャラ名とは配列。
キャラ設定で反復。
 キャラ名に(それ¥0のファイル列挙し、「.」まで切り取ったもの)を配列追加追加検索項目で反復
  キャラ名にそれ配列追加。

# シナリオ
シナリオとは配列。シナリオ行数とは整数。
HTMLとは配列。HTML行数とは整数。
Dとは整数。

# マスコット
キャラNoとは整数。
mxとは整数デスクトップW/2-115。
myとは整数デスクトップH/2-100。

# 吹き出し
吹出方向とは文字列。
fxとは整数。fyとは整数。
minWとは整数=150。minHとは整数=100。   #吹出し最小幅と高さ。
cxとは整数。cyとは整数。
#-----------------------------------------------------------

#-----GUI------------------------------------------------
#---マスコット作成-----
処理用とはイメージの可視はオフ。
キャラ設定を反復
  Cとは整数。C=回数-1
  処理用の画像は対象¥0
  処理用を32に画像ビット数変更。
  線色は透明色。
  もし、キャラ名\C=「jousi」ならば、
    処理用の18,89へ透明色を点描画。   #上司のみ
  違えばもし、キャラ名\C=「buka」ならば、
    処理用の32,87から58,87へ。    #部下のみ
  対象反復。
    色指定とは配列。色指定=それを「/」で区切ったもの。
    x=色指定\0。y=色指定\1。指定色=色指定\2
    処理用のx,yを指定色で塗る。
  マスコット[C]をフォームとして作成。
  マスコット[C]→スタイルは「枠なし」。
  マスコット[C]→画像は「処理用」。
  マスコット[C]→画像通り変形。
  マスコット[C]→ポケットは指定色。  #ふきだしの色になる。
  マスコット[C]→ドラッグ移動オフ。
  マスコット[C]→タイトルは「マスコット{C}」  #最前面にするのに必要。
  マスコット[C]→ダブルクリックした時は~終了。

#---吹き出し作成-----
2
  C=回数-1
  吹出[C]をフォームとして作成。
  吹出[C]→ドラッグ移動オフ
  吹出[C]→タイトルは「吹出{C}」。

#---コード表示用-----
コードとはフォームのスタイルは「枠なし」。
のタイトルは「コード」。
のドラッグ移動オフ。
#-----------------------------------------------------------

#-----メイン------------------------------------------------
//母艦の可視はオン乱数初期化
メインループ

*メインループ
  ファイル名はマニュアル¥(マニュアルの要素数乱数)
  シナリオ作成。
  マスコット表示
  シナリオ解析
  100
    0.1秒待つ。
  メインループ。
#-----------------------------------------------------------

#-----シナリオ作成------------------------------------------
#マニュアルのHTMLから無理矢理系で科白を取得。
*シナリオ作成
  シナリオ=。D=0。
  HTMLにファイル名を開く。HTML=HTMLの「,」を「/;/」へ置換。
  HTMLからキャラ名の画像検索。
  シナリオの要素数
    シナリオ行数=(回数-1)-D。
    もし、シナリオ¥シナリオ行数,0=「code」ならば、
      HTML行数=シナリオ\シナリオ行数,1。
    違えば、
      HTML行数=(シナリオ\シナリオ行数,1)+1。
    シナリオ\シナリオ行数,1=。
    HTMLのHTML行数から科白抜き出し。
#-----------------------------------------------------------
*画像検索({参照渡し 配列=?}HTMLからキャラの)
  C1とは整数。C2とは整数。C3とは整数。C3=0
  HTML要素数
    C1=回数-1
    キャラで反復。
      C2=回数-1。
      HTML\C1で0から対象文字検索。
      もしそれが0でなければ、
        もし対象=「class="code"」ならば、シナリオ\C3,0=「code」。
        違えばもし対象=「class="menuG"」ならば、
          シナリオ\C3,0=「code」。HTML\(C1-1)に「」を追加。
        違えばもし対象=「.gif"」または対象=「.png"」でなければ、
          シナリオ\C3,0=C2。HTML\C1=HTML\C1の「.gif」を「」に置換。
        違えば、シナリオ\C3,0=「@」。
        シナリオ\C3,1=C1。   #HTML行数。
        C3=C3+1。

*科白抜き出し({参照渡し 配列=?}HTMLの{参照渡し 整数=?}行数から)
  一時とは文字列。一時=HTML\(行数)を空白除去。
  一時をシナリオ\シナリオ行数,1に追加。
  シナリオ\シナリオ行数,1=シナリオ\シナリオ行数,1の「
」を『/~/』へ置換。   もし、シナリオ\シナリオ行数,0=「code」でなければ、  # キャラ画像の横にコードがある場合     一時で0から「class="code"」を文字検索。     もしそれが0でなければ、シナリオのシナリオ行数配列削除。D=D+1。戻る。   一時で0から「/TD」を文字検索。   もしそれが0でなければ、     シナリオ\シナリオ行数,1=シナリオ\シナリオ行数,1のタグ削除。     もし、(それ=「上司」)または(それ=「部下」)または、   # キャラ画像の下に名前がある場合     (それ=「実行ボタン」)または(それ=「実行結果」)ならば、       シナリオ\シナリオ行数,1は。       HTML行数=HTML行数+1。       HTMLの(HTML行数)から科白抜き出し。戻る。   一時で0から「/TR」を文字検索。   もしそれが0でなければ、     シナリオ\シナリオ行数,1=シナリオ\シナリオ行数,1のタグ削除。       もし、(それ)または(それ=「/~/」)ならば、         シナリオのシナリオ行数配列削除。D=D+1。戻る。  #科白が無い場合   違えば、     HTML行数=HTML行数+1。     HTMLの(HTML行数)から科白抜き出し。 #----------------------------------------------------------- #-----マスコット表示---------------------------------------- *マスコット表示   シナリオの要素数     C=(回数-1)     もし、(シナリオ\C,0=「@」)または(シナリオ\C,0=「code」)でなければ、       キャラNo=シナリオ\C,0。抜ける。   マスコット[キャラNo]→位置は「{mx},{my+(100-自身→高さ)}」   もし、キャラNo=6でなければ、マスコット[キャラNo+1]→位置は「{mx+130},{my+(100-自身→高さ)}」   マスコット浮上。 *マスコット浮上   マスコット[キャラNo]→可視はオン。   「マスコット{キャラNo}」を窓最前面。   もし、キャラNo=6でなければ、     マスコット[キャラNo+1]→可視はオン。     「マスコット{キャラNo+1}」を窓最前面。 #----------------------------------------------------------- #-----科白表示---------------------------------------------- *シナリオ解析   Cとは整数。C=0。科白=   シナリオで反復     Noは対象¥0     科白は対象¥1の「/;/」を「,」へ置換したもの。     科白は科白を「/~/」で区切ったもの。     もし、No=「code」ならば、       科白は100で行揃え。       コード表示。吹出[0]→可視はオフ。吹出[1]→可視はオフ。     違えばもし、No%2=0ならば、       吹出方向=「左上」。塗り色=マスコット[No]→ポケット       科白は科白を46で行揃え。       0の吹出表示。吹出[1]→可視はオフ。コードの可視はオフ。     違えばもし、No%2=1ならば、       吹出方向=「右上」。塗り色=マスコット[No]→ポケット       科白は科白を46で行揃え。       1の吹出表示。吹出[0]→可視はオフ。コードの可視はオフ。     違えば、       吹出方向=「左上」。塗り色=マスコット[No]→ポケット       科白は科白を46で行揃え。       0の吹出表示。吹出[1]→可視はオフ。コードの可視はオフ。     科白=。C=C+1。     50       0.1秒待つ。   マスコット[キャラNo]→可視はオフ。コードの可視はオフ。   吹出[0]→可視はオフ。吹出[1]→可視はオフ。   もし、キャラNo=6でなければ、マスコット[キャラNo+1]→可視はオフ。 #----------------------------------------------------------- #-----吹き出し---------------------------------------------- *吹出表示({整数}Noの)   吹出[No]に科白を吹出方向へminW,minHで吹出セリフ表示。   もし、No=0ならば、     fx=mx-吹出[No]→クライアント幅。     fy=my-吹出[No]→クライアント高さ。   違えば、     fx=mx+230     fy=my-吹出[No]→クライアント高さ。   もし、fy<0ならば、      # 吹き出しの上端がデスクトップからあふれる場合     もし、吹出方向=「左上」ならば、吹出方向=「左」。fx=fx-50     違えば、吹出方向=「右」。     fy=(デスクトップH-吹出[No]→クライアント高さ)/2-50。     吹出[No]に科白を吹出方向へminW,minHで吹出セリフ表示。   吹出[No]→位置は「{fx},{fy}」   吹出[No]→ドラッグ移動オフ。   吹出[No]→可視はオン。   「吹出{No}」を窓最前面。   マスコット浮上。 *コード表示   コードの可視はオフ。   Aとは文字列=。Bとは文字列=。   科白で反復     Bはそれ。     もし(Aの文字数)<(Bの文字数)ならば、A=B。   コードの幅=Aの文字幅取得+40*2。   コードの高さ=(科白の文字高さ取得)*(科白の要素数)+10*2   cx=(デスクトップW-コードの幅)/2   cy=デスクトップH/2+5。   コードを$009900で画面クリア。   塗り色は$FFFFCC。線色は$009900。線太さは2。   コードの2,2から(コードの幅-1),(コードの高さ-1)へ四角。   コードの可視はオン。   コードの位置は「{cx},{cy}」   コードの10,10へ科白を文字表示。   「コード」を窓最前面。   マスコット浮上。 #----------------------------------------------------------- #----------------------------------------------------------------------- ●吹出セリフ表示({グループ=?}FにSを{整数=100}minW,{整数=50}minHで{文字列=「」}方向へ)   Aとは文字列=「」。Bとは文字列=「」。   Sで反復     Bはそれ。     もし(Aの文字数)<(Bの文字数)ならば、A=B。   swとは整数=Aの文字幅取得shとは整数=(Sの文字高さ取得)*(Sの要素数)   fwとは整数=(Aの文字幅取得)*1.5。fhとは整数=(Sの文字高さ取得)*(Sの要素数)*1.8   もしfw<minWならば、fw=minW。 #</pp>   もし、fh<minHならば、fh=minH。 #</pp>   sxとは整数fw/2-sw/2-10   syとは整数=fh/2-sh/2   もし、方向=ならば、方向=F→ポケット。   もし、方向=ならば、方向=左上。   もし、方向=右ならば、sx=sx+fw/10  #矢印の長さ分   もし、方向=下ならば、sy=sy+fh/10   Fをfw,fhで方向へ吹出作成。   Fのsx,syへSを文字表示。 #----------------------------------------------------------- ●吹出作成({グループ=?}FをW,Hで方向へ)   xx=0。yy=0。ww=0。hh=0。   方向で条件分岐     右上ならば、  #矢印は左下       Fのポケットは「右上」       x1=0。y1=H。x2=W/8。y2=H/4*3。x3=W/4。y3=H/8*7。     右下ならば、  #矢印は左上       Fのポケットは「右下」       x1=0。y1=0。x2=W/4。y2=H/8。x3=W/8。y3=H/4。     左上ならば、  #矢印は右下(吹出し変形と同じ)       Fのポケットは「左上」       x1=W。y1=H。x2=W/4*3。y2=H/8*7。x3=W/8*7。y3=H/4*3。     左下ならば、  #矢印は右上       Fのポケットは「左下」       x1=W。y1=0。x2=W/4*3。y2=H/8。x3=W/8*7。y3=H/4。     上ならば、  #矢印は下向き       hh=H/10。Fのポケットは「上」       x1=W/2。y1=H+hh。x2=W/2-W/20。y2=H-H/100。x3=W/2+W/20。y3=H-H/100。     下ならば、  #矢印は上向き       hh=H/10。yy=hh。Fのポケットは「下」       x1=W/2。y1=0。x2=W/2-W/20。y2=hh+H/100。x3=W/2+W/20。y3=hh+H/100。     左ならば、  #矢印は右向き       ww=W/10。Fのポケットは「左」       x1=W+ww。y1=H/2。x2=W-W/100。y2=H/2-H/20。x3=W-W/100。y3=H/2+H/20。     右ならば、  #矢印は左向き       ww=W/10。xx=ww。Fのポケットは「右」       x1=0。y1=H/2。x2=ww+W/100。y2=H/2-H/20。x3=ww+W/100。y3=H/2+H/20。   Fの可視はオフ。   FのクライアントWはW+ww。FのクライアントHはH+hh。   Fを$00FF00で画面クリア。   線スタイルは透明。   Fのxx,yyからxx+W,yy+Hへ。1秒待つ。   Fの「{x1},{y1},{x2},{y2},{x3},{y3}」へ多角形。   F→画像通り変形。 //  Fの可視はオン。 #-----------------------------------------------------------------------

 「こちら」ってどちらだよ! とか、いろいろ話のつながりがおかしかったりとかあるけど、気にしないで!

 それでも、折角だいぶまともにしゃべるようになったので、スクリーンセーバーにでもしてみようかと思い立った。(プログラムのコードも表示するようにした結果、画面の中央を占拠して、デスクトップマスコットってゆうより、なんかもーむしろ邪魔すぎだからさーw)

 「コマンドライン」命令があるから、なでしこでもできるはず~。

 昔、HSPで作ったことがあるんだよね。本の通りにやったら動いたよ!ってだけのことですが・・・

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20161111