2020/09/11

エド君と学ぶC講座7

今回の内容 型の種類 文字列入力(序盤のみ)




エド君「なにを語るか悩んでたがそうだな…今回は型とかを中心にしていくか。」
型?
エド君「intとかdoubleとかのやつだ。こういうのは算術型と言われている。その中にもいろいろと種類があるんだが…intは整数型、doubleは浮動小数点型と言われているな。」
なるほどな。そういや文字入力用の型もあるのか?
エド君「ああ。charという文字型がある。」

エド君「さて本題だがこの整数型や文字型には符号の有無があってだな…」

int
signed int
unsigned int

エド君「とまあこんな感じにわけられる。signedは符号あり、unsignedは符号なしの整数型だな。マイナスの数字とか使いたいときには符号あり、負の数が出ないなら符号なしにしておくといい。まあ符号ありならintだけでいいんだが。あとintの中でも長さがある。

short int
int
long int


エド君「余談だがshortやlongだけで書くとintの省略されたものという解釈になる。」
範囲の違いとかはわかったが実際の範囲としてはどうなんだ?
エド君「そうだな…ここに範囲の一覧を載せておく。」

char…0~255(-128~127の環境もある)
signed char…-128~127
unsigned char…0~255
short…-32768~32767
int…-32768~32767
long…-2147483648~2147483647
unsigned short…0~65535
unsigned…0~65535
unsigned long…0~4294967295

うわ数字でかすぎて意味分からん。なんだこれ。
エド君「まあ2の累乗の応用だ。」
256は流石に分かるが…
エド君「65536で2の16乗、4294967296で32乗だな。」
…ビット数か!!
エド君「そういうことだ。」
なるほどそれならわかりやすい。でもcharが2通りあるのはなんでだ?
エド君「環境の違いだな。ちなみにオマエの環境は-128~127だったぞ。」
統一すりゃ良いのにな。

エド君「char型の大きさは1だがそれ以外は環境によって異なってくる。試しにオマエの環境で調べてみるか。」

#include<stdio.h>


int main(void) {

printf("char:%d\n",sizeof(char));
printf("short:%d\n",sizeof(short));
printf("int:%d\n", sizeof(int));
printf("long:%d\n", sizeof(long));

return 0;
}


エド君「sizeof演算子を使えばこんな感じで型の大きさを調べることができる。環境によってはchar以外3つが全部同じ大きさってこともあるみてぇだな。」

エド君「ああそうだ。オマエが気になってた文字列の入力についても触りだけ話すか。」
待ってました。
エド君「C言語の文字列なんだが列の最後にナル(ヌル)文字が入ってくるという点がある。例えばADDと入れた場合は最後に文字が入って来て4文字という扱いになるわけだ。」
つまり入れた文字+1文字ってことか。
エド君「そういうことだ。文字列を入れたい変数はさっき言ったcharを使うといい。」

#include<stdio.h>


int main(void) {
char a[] = "ADD";
printf("%s", a);
return 0;
}

エド君「こうすれば文字を出力できるわけだ。文字列のときは%sになるからそこは間違えねぇようにな。」
キーボードから打ち込むときは?
エド君「これもscanfでいけるんだが注意点があってintとかのときは

scanf("%d",&a);

だったのが文字列だと

scanf("%s",a);

&をつけない決まりになっている。」
なるほどじゃあなんか作ってみるか。

#include<stdio.h>


int main(void) {
char a[50];
printf("エド君に何か言わせてみよう!:");
scanf("%s", a);
printf("エド君「%s」", a);
return 0;
}

つまりはこういうことだな!!
エド君「オマエ…これがやりたかっただけだろ…」
これでエド君にいろいろ言わせれるぞ!!
エド君「悪用するな。」

エド君「さて今回はここら辺で終わりだ。次は…何にするか…」
文字列やってこうぜ。
エド君「その前になにかしらやりてぇんだよな。」

DE誕だぜ?DE愛でようぜ?

今日は何の日か…それはもうわかるだろう。

そう。本家でのDE実装日だ!!








毎年のようにDEのSS書いてたりしたけど今回は趣旨を変えてDEの魅力を思う存分に語っていくぞ!!!
エド君「テンション高すぎだろ…」

まあ初期以外で一番好きな姿どれって言われたらDEだからな!!ただ鎧みたいな服装の作画コストが高すぎてあんま描けねぇ!!
エド君「そこは練習しろよ。」

DEは魅力的なところが多すぎるからな。こんなカワイイ19歳がいてたまるか。いやいろ。
なんならまどぱらとは別に愛玩用でDE作って99にした人やぞ?それぐらいすこなんだ。
エド君「気持ちわりぃなオマエ。」
なんでだよ!!



これはDEのキャッチコピー。
まあ厳密にはその後も過去を追い求め続けた結果体バラバラになって思念体になりましたとさ。めでた…くねえ!!
ぜんぜんハッピーエンドじゃねぇじゃん!なんだよこれ!!バッドエンドまっしぐらだよ!
エド君「前々から言ってんじゃねぇか。」
そうなんだよこのルート救いがなさ過ぎる。やっぱ私と結婚して幸せな家庭築くのが最善では?
エド君「丁重に断らせてもらう。」
。゚(゚´Д`゚)゚。
エド君「泣くな気持ち悪い。」
エド君いつもよりツン率高くない?なんで?

結局DEの経緯ってなんなんだと聞かれると過去に戻ろうとした少年が過去に戻れないと気づいたので世界破壊しようとしたら悪魔の天才科学者と恐れられるようになりましたみたいな感じ。それでも時間移動続ける執念すごいよな。



この通り反転目が魅力的な180cm59kgの細身なカワイイ天使です。
エド君「悪魔どこ行った。」
悪魔だけど天使なんだよわかるか?
エド君「わかんねぇよ。」




ちなみにゲーム内では普通の見た目をしてるんだが覚醒したときに反転目になる。これがすごくカワイイんだわ…あと単純にDEの髪型好きなので有料でいいので売ってください買います。金なら出す。
だってこんなにカワイイんだぜ?見ろよこれ。これを悪魔とか言ったやつどこの誰だよどう見ても天使じゃないか。

SDになってもこんなにカワイイ。顔の線どこ行った?
お持ち帰りしますね。ポケットの中入れていろんなとこ連れて行きたい。

さて昔、1冊目のほんとに初期の頃にDEの魅力語るとか言ってるやつがいるんだがこいつは全然愛が足りてませんねどこのどいつだ。あ、昔の私か。
愛をこじらせたな!!いいことだ!
エド君「なにもよくねぇどころか悪化してんぞ。」

と言うわけで改めて…

DEの個人的な魅力なところでも書こうか。
エド君「書くな。」


その1
エド君「話聞け。」
俗に言う反転目だな。黒白目とか言う人もいるらしいぞ。私はどこで反転目って単語知ったんだろうな。今じゃけっこうそういう属性の子増えた気がするけど先天的なものと後天的なものがあってDEの場合は後者になるな。ちなみにこれは毒素による影響で変色したもので転職前のTiTはその毒素を消すための薬を試験管に入れて持ち歩いてるぞ。反転目というと悪役とかボスとか闇墜ちとかそういう要素に使われるイメージだし事実エド君はこのルートでは闇墜ちしてるからその通りなんだがカワイイエド君が反転目属性を持ってるというギャップがまたいいんだよな。まさに堕天使のような。そう。

その2
服装について。
これどういう構造なんだろうな?なんか鎧っぽい感じにも見えるけど外に羽織ってる感じのやつとかけっこう材質柔らかい可能性もあるし堅いかもしれない。個人的にはけっこうがっちりしてるイメージです。エド君というと白ベースの服で随所に黒要素が入ってる感じだけどDEは逆でほぼほぼ黒いんだよな。後気になるんだが胸のとこにある菱形のそれ体内に埋め込んでるの?埋め込んでると解釈でいいの?そこ触られるとどうなるの?
これは個人的な偏見だがそこ敏感そう。

その3
顔立ち。
LPは男らしさあるしMMはけっこう美しいって感想なんだがDEって特質なんだよな。やっぱあれかね?反転目の影響?

あと超越で判明したギザ歯属性。これはでかい。
これも毒素のせいなんです?カワイイね。なんかやんちゃそうだな。カワイイ。なおこの天使的表情で破壊行動起こすそうです。ヤバいな。


その4
体型だがさっきも語ったとおりすごく細いんだよな。あと2職と比べると全員慎重同じなんだが体重が明らかに軽い。なんなら2次職の時点で軽めだし。ご飯食べてるか?私がなんか作るぞ?あとまあ服装が体のラインに沿ってる感じだからよけい細く見えるんだよな。いっっぱいおいしいもの食べさせたい。ちょっと強く握ったら折れたりしない?大丈夫?

その5
垂れ下がっているベルト?みたいなやつ。

このダイヤみたいな形のが繋がってるやつ。
多分悪魔モチーフなんだろうけど猫の尻尾っぽいんだよなあ。
もともとエド君の服って猫耳フードついてたわけだし。
てかまどぱら見るにやっぱ猫の尻尾だったのではと…

その6
技について。
肉体攻撃(ただし魔法攻撃)なLPやドライヴ任せ(ただし物理攻撃)なMMと比べると真っ当に魔法攻撃してるのがDEなんだよな。どうやら技を見てると相手の精神に干渉してくる系っぽそうでまあ実際マインドコントロールってパッシブがあるんだが。原子の超振動とか脳波放出とか私のような凡人にはよくわからんなさすが天才科学者。
余談なんだがマスタークラスのスキル説明はまどぱらだけ台詞があって段階ごとにどんどん完成していく過程がわかるぞ。やっぱこのルートが正規ルートなのでは??まあマスタークラスなんてものは私の世界じゃ存在しません。理由はわかるな?


その7
時空移動という能力カッコイイんだよな。
エド君のスキルにも亜空間とか次元門からの攻撃とかそういうのがあってしっかり時空移動能力が使われてるのポイント高い。


その8
やっぱディアボリックエスパーってカッコイイんだよな。
悪魔と科学者とって要素がすぐにわかるのもいいところ。
でもやっぱ私としてはDEは天使なんでエンジェリックエスパーに改名しないか?
エド君「しねぇよ世界観壊すな。」


その9
悪魔の天才科学者という肩書。
エド君はその天才的な頭脳があったからこそこういう結果に行き着いた。ドミネーター見てると行動に起こしてなかったらまだ救いあったのかもしれないけどな…まああっちはあっちで電脳世界の王みたいになってるけど。やっぱ救いないな…?

その10

コイツを見てくれ。
…カワイイだろう?
何度も言ってきたがやっぱカワイイんだわ…この捨て猫みたいなこの…その…(語彙力消失)
まあDEの魅力はこの切なそうなとこにもあると思うんだよな!!救いたい幸せにしたいそんな気持ちにさせてくるんだ。え?もっと酷い目に遭ってほしいタイプ?あー…そういう人もいますよね。うん。

その11
そういえばエド君のドライヴはエド君の精神状態にリンクしていて比較的安定しているMMは並びも綺麗だけどDEは不安定だって話を聞いたことがあるな。
DEはまあこんな感じで何もかも壊してやる!ってなってるけど中身はすごくつらくて苦しんでるんだろうなと。私はそんなDEの心の支えになりたい。え?その心バキバキにしたい?え?うーん…私はハッピーエンドにしたいタイプなので5次職で救いください。



…ふう。いろいろと語りすぎたな。
とまあ今の私はだいぶあの頃よりエドキチに育ちました。
不治の病だが支障はないので大丈夫です。
さあみんなもエルソードでDE愛でようじゃないか!!




エド君「変な自作広告持ってくんな!!」

2020/09/07

独断と偏見による選べる☆6配布について~フェス編~




エド君。これがなにかわかるか?
エド君「分かるわけねぇだろ帰らせろ。」
そんなこと言うなよぉ!!

…とまあ久しぶりにぷよクエが選べる☆6キャンペーンをしてたので簡単な性能説明をしていこうと思う。
正直なところ上にあげたフェスを取るのが一番な気もするけど手持ちによってはこういう役割がほしいって人もいるだろうしあと単純に好みで取るタイプの人もいると思う。
まあ中には下手なフェスより優秀なのもいるからな…
あ、気に入ってる子を取るのが良いと思いますよ?

というわけでフェスの紹介から。
余談だが今日から始まるイベントの特攻がシェゾ系統だからイベント有利に進めたいならシェゾのフェス取ることをおすすめします。俺もしんげつのシェゾを取る予定だ。

・しんげつのシェゾ


特攻入ることと強力なスキルで今回取る人多そうだなと思う。
けっこうリダスキが特徴的なタイプで回復を下げる代わりに大幅に黄色と紫の攻撃をあげてくれる。☆6の時点でかなり高めの4倍、☆7にすればなんと5倍と最高レベルにまで上がる上になぞり消しを2個常に増やしてくれるという…もちろん体力もフェス標準の3~3.5倍を持ってるためかなり強力。スキルは黄紫へのエンハンスで☆6で1ターン4倍、☆7だと5倍に加えて敵の攻撃を90%ダウンさせることができる。
シェゾパ組むときのリダカにしても優秀かと。まあハイキュー!!コラボだけ赤なんだが。
余談だがこのカードの☆7が実装されたときに炎上した。
エド君「性能の問題か?」
いや。☆7が実装された翌日になってこのカードを☆7にするときに使えるアイテムを報酬にするとか言い出したんだよここの運営。
事前に言ってくれそういうのは。


・目覚めし力シリーズ



比較的初期に登場したフェス。
赤と青もあるんだがなぜか今回は対象外らしい。
こっちのシェゾも特攻はいるのでまあほか2色よりはありかもしれん。
開始時に自属性のネク変を入れてくれるからスキルの初動が早くなる単色向けカード。
リダスキはネク変に加えて攻撃体力3倍、☆7で攻撃4.2倍体力3.5倍。スキルは攻撃を数倍にして3連攻撃、与えたダメージの1%を回復。倍率は☆6で攻撃×7、☆7で攻撃×20となるため基本運用するなら7にしたいが現状強力なフェスが増えてることもあり優先度は少し低め。とはいえ副属性を入れない単色編成のリダカとしてはまだまだ現役な気はする。


・くろいシグ



敗北者
なんかやたらネタにされてる気がするフェス1回目のカード。
まあ厳密にはヴァルルがフェスに昇格したからそっちが最初のような気もするが。
リダスキは混色向けで属性が増えるごとに攻撃と体力があがるシステム。
☆6で攻撃体力ともに1色ごとに0.5倍(最大3.0倍)、☆7で攻撃が1色ごとに0.75倍(最大4.0倍)、体力は1色ごとに0.6倍(最大3.4倍)となる。
正直なところステータスとしては低い。
エド君「言われてみればデメリット付きとはいえシェゾが☆6で4倍だもんな…」
体力も3.5倍が多い中でちょっと低いからなあ…あと倒されて属性減ると倍率も下がる。まあこういう系のは強力なフェスでも持ってたりはするんだが…
スキルも属性数依存のエンハンス。☆6で1ターン最大3.5倍、☆7なら2ターン最大4.5倍。
まあ☆7で2ターンになるのは大きいな。
実装された当初は攻撃と体力両方を3倍にできるってだけでぶっ壊れだったんだけどな?俺もその後登場した同性能の赤アミ引いて世界だいぶ変わった。
まあ2ターンエンハンスほしいならって感じ。ただ同系列が赤と緑にもいてそっちのほうが使い勝手良い感は否めない。また赤はチャミドラ、緑はあんどうりんごが強いからなあ…その分有利かもしれん。

・ストリートのまぐろ


通称ストまぐ。
こっちも多色エンハンスだけどリダスキの属性依存がないこと、初動でチャンスぷよ生成がある分使いやすい。☆6は攻撃体力3倍、☆7で攻撃4.2倍、体力3.5倍。
エンハンスの倍率も高く☆6で4倍、☆7だと5倍になる。
エド君「これだけ見ると黒シグの上位互換じゃねぇか。」
正直なとこ☆6だと完全上位互換だと思う。属性違うのが救いだが。ただ☆7でもこっちはエンハンスは1ターンだからそこで差別化はなんとかできた。エンハンス系ほしいならターン数と好みと属性で決めると良いかと。蒸気とか引けたらなあ(遠い目)

・戦乙女ダークアルル



さっきの2枚が混色ならこっちは単色系。
同属性のカードの枚数が多いほどステータスが上がるリダスキを持ってる。
☆6で最大攻撃力3.5倍、体力2.75倍、☆7で最大攻撃力4.5倍、体力3.25倍。
攻撃に振った感じの構成だな。ただこれはサポーター込みの6枚の時で編成数が少ない、サポーターを借りれないようなステージだと火力が下がるデメリットもある。
今じゃ無条件でステータス上がるカードが増えたからわざわざリダカにする機会も減ってるという…
エド君「でもまあ攻撃4.5倍なら高い方じゃねぇのか?」
いやでも今無条件で4.5倍の青結構あるんだわ…そういうやつ大概体力も3.5倍あるし。
スキルは色ぷよ全部を自属性に盤面変換して連鎖後にプリボ変換。☆6で8,☆7で12個作る。どっちかというと盤面変換の火力よりその後のプリボを使った攻撃に繋ぐ役割だな。
直接の火力はそこまで高くはない。というか今回あんま青強めなカード選ばれてないんだよな…あおぞらのシグはまあ☆7の期待値は高いけどいつ来るかわかんないし。

・すずしげなレムレス、あおぞらのシグ



レムレスの方は最近になって7が来たけどまだシグには来ていない。シグ取るならそこに注意だな。多分6の性能が同じだから7で変わることはないだろうし一緒に説明しとく。
こっちも多色向けのカードで属性数が増えるごとにステータスが上がる。
☆6で攻撃は0.6倍(最大3.4倍)、体力0.5倍(最大3倍)、☆7で攻撃は0.95倍(最大4.8倍)、体力0.65倍(最大3.6倍)。
また初回のスキル発動のぷよ数を☆6で3個、☆7で4個減らしてくれる。
5属性そろえたときのステータスは標準を超えてることもあって結構強い。やっぱ最近7来たからかね?今回の対象にはないけど強力なラフィソルってやつと結構似てる。あっちの方が発動数の減少が1多いけど。
スキルはちょっと変わった感じでまあ見てもらった方がわかりやすいな。



こんな感じに縦に変化させるスキルとなっている。ちなみにラフィソルは横に変化させるタイプでハートブロックは生成しない。火力は少し下がるが回復をけっこうできるのは強い。なお☆7では攻撃と回復に1.7倍の補正がかかるため火力は結構高くなる。スキル砲要員でほしいなら結構おすすめする。たださっきも言ったがシグの方はまだ7が来てないかついつ来るか分からないので注意。
涼レムの☆7絵は実はコラボカフェで先行発表されていたのだが実装されたのは半年以上後だったという話があってだな…


・ひらめきのクルーク



ざっくり言うと混色向け童話砲。
属性数が増えると火力が上がる同じやつ(この説明何回目だ?)
☆6で攻撃3.4倍体力2.4倍、☆7で攻撃4.4倍体力3.2倍。
黒シグとかに比べると攻撃に特化したようなステータス。
涼レム系同様にスキル発動数を減らすリダスキも兼ね備えている。
スキルはなぞり消し増加。このスキルは同時消し係数というものがあり、これが高いほど火力も上がるようになっている。
☆6で5個増加、係数5倍。☆7で7個増加、係数6倍+チャンスぷよ生成。
童話砲はスキル砲とは異なり通常攻撃を強化する場合に使うタイプである。
まあ通常攻撃無効ボスとかじゃ歯がたたんが。
余談だがこの服装クソ好き。


・うすやみのDGアルル


DGはドッペルゲンガーの略称らしい。
リダスキが混色向けの攻撃にかなり特化したタイプで攻撃する属性が多いほど倍率が上がり☆6では体力3.0倍、攻撃倍率に0.80倍プラス(最大4.2倍)、☆7になると体力3.2倍、攻撃倍率に1.05倍プラス(最大5.2倍)と攻撃の最高倍率はかなり上位クラスとなる。
しかし攻撃する属性数に依存するため常にこの火力が出るとは限らない。プリボがあれば確実に出せるが。
そんなプリボを好きな場所に配置できるスキルを持っているが☆6では5個しか生成できず正直使い道は薄い。しかし7になれば13個まで作れるようになる。スキル発動数が30個と少ないのも魅力だろう。7にする余裕があるならけっこうおすすめだが6のままじゃあまり使えない、5.2倍の最大火力を安定させることが難しいなど上級者向けな感じがする。


・ジーニアスナイトクルーク



連撃系のスキルを持つ1人。
☆6で紫の攻撃3.2倍、体力3倍、☆7で攻撃4.2倍、体力3.5倍。さらにタフネス付きで攻撃を1回耐えてくれる。倍率的にはクールなシェゾと同等だがこっちはタフネスがある分バトルでも活躍しやすい。
スキルは3ターンの間、このカードの通常攻撃を「こうげき」×3の☆6で4連続攻撃☆7で5連続攻撃にするというもの。これも通常攻撃系なので童話とかと合わせるといい。例えばつい今日☆7になったルファスとか…



…なんでこういう描き方にした?
エド君「何か問題あるのか?」
俺からしたら大問題だ。メカクレにおいて髪から目が透けてる描写が俺はあまり好きじゃなくてだな…


こういう感じに隠れておいてほしいんだ。
ぷよクエじゃこの描写少なくて1人しかいなかったのにな…同じイラストレーターなんだろうな…




こういう感じの描き方が良いんですよ俺としては。あ、このインキョウ君なんだけどこのクルークと同時期に実装された子でな…攻撃タイプ特化だから相性はいい。まあ交換対象じゃないんだが。
にしてもこのクルーク今年はいってからの登場なのに早いな。



エド君の目の隠れ方は好きですね!!
エド君「早く本題に戻れ。」



・はりきるドラコ



比較的初期のカードで同時消しに重みを置いた構成になっている。
ちょっとリダスキが特殊な感じで
☆6だと体力2.5倍、12個以上の同時消しで攻撃4倍。
☆7で体力3.2倍、8個以上同時消しで攻撃4.5倍となっている。
まあ条件も緩和されて倍率も上がるわけだが…4.5倍ならふつうに出てきてるからあまりこれだけじゃ強みにはならないんだよな。
ただはりドラには特訓でリダスキを変えれるようになっていて
体力2.5倍、12個以上の同時消しで攻撃5倍というのがある。
エド君「5倍はでかいが12個はちょっと毎回は出せねぇな…」
そこなんだよな…条件満たせなかったときに攻撃に補正がかからないのがきつい。
でもって体力の倍率は低い。
スキルの方もラフィソルに似てはいるんだが☆6だと一番下がプリボじゃなくてハートブロックで火力が低い、7でようやく6のラフィソルに並ぶという時代に取り残された感がすごいやつ。特訓スキルでこっちを変えるとこともできるが☆6のスキルの発動数が5減るだけなので正直恩恵が大きいかと聞かれるとそうでもない気がする。
まあ強いて言うならプワチャレみたいな初動でスキル打てるとこでなら攻撃5倍のリダスキも発揮できるし体力低くてもそんな支障はないかなと。自身のスキルがもうちょい強かったらなおよかったんだが。




さて。ここまでで13人。後の2人に関してはまだ☆7が実装されてないこともあって交換するかはちょっと考えた方がいいかもしれないな。とはいえ☆6でもまあ弱くはないし☆7の期待値は高そうだからそれを見据えての交換も1つかもしれない。


・ひめりんご


かわいい。
リダスキは 赤属性と緑属性の攻撃力3倍、体力3.2倍。
さらにクエスト開始時の1ターン目のみネクストぷよを全て赤ぷよに変える効果付き。
まあ☆7になれば攻撃4.2倍、体力3.5倍くらいにはなるんじゃないかね…?
似た能力持ってて☆7実装されてるジャーンがいるけど☆6の倍率がそもそも違うからリダスキの上昇は参考にならないんだよな。まあスキルの方は同等になりそうな気がするけど。
そんなスキルは自属性の攻撃の合計×10で単体攻撃+状態異常なら2倍というもの。
ジャーンは7で×15になった。
多分こっちも15倍にはなると思う。
いつ7来るかわからんがな…ただ赤は7待ち多いし来月にでも来たら良いな。


・あかきウィッチ




2019年の初売りガチャで登場したということもあって☆6でも結構強かったりする。☆7来たらかなりヤバくなる可能性…そのせいかまだ7がこない子。
リダスキは 全体の攻撃3倍、体力を3.2倍、3属性以上の同時攻撃でさらに攻撃を1.4倍。
3属性以上なら4.2倍と下手な☆7フェスに相当する火力になる。
同リダスキ持ちにかがみのラフィソルというのがいるんだがこれの☆7のリダスキが攻撃3倍、体力3.5倍、3属性以上で1.5倍になっていてその攻撃はなんと5.25倍となる…
DGアルルに比べて条件が緩い上に火力も少し上だから恐ろしい。この子もそのリダスキひっさげてくるかもしれん。
スキルは10個プリボを作った上で赤に盤面変換。自身だけで火力を出せるのが強みだ。なおこのプリボ変換はおじゃまぷよやその上のかたぷよですら変えてしまう。…けっこうやばいな?赤の疑似単色で使うことが多そうだがスキルはプリボの分の火力で混色でも使うことはできる。☆7の期待値がけっこうやばそうだがその反面7がなかなか来ない可能性もある。



フェスだけでもすごく長くなってしまった。まあフェスじゃなくても強いカードもあるしフェス外だとリダスキよりスキル重視になりそうな感じがするからそこら辺はまた解説楽にしていきたいとこ。

でも最後は好みで選ぶのがいいぞ!!





↑好みと性能を考慮した結果。


2020/09/03

エド君と学ぶC講座6

今回の内容 配列 関数の作成



アイスなエド君おいしそう…


エド君「なんか変なこと言ってるやつがいるが今回は配列の話だ。配列は変数を1つにまとめて番号を振ることで管理しやすくなるものという感覚で覚えてくれれば良い。例えばだがオレやコイツのように2人だけならデータもそんなに多くなくて良いがもし10人、100人文のデータが必要になった場合に変数をそんだけ作っていたら大変だし無駄すぎる。それを簡単にするためのものだ。例えばだが…今回はエル捜索隊(エルソードのメンツのいるチーム的なやつ)の男性陣の身長とその平均を出すプログラミングを作る。」
エド君の身長しか知らんわ。
エド君「他のやつにももう少し興味持て。」
ブーメラン刺さってね?
エド君「うるせぇ!」

#include<stdio.h>

int main(void) {
    int i;
    int height[7];
    int sum = 0;

    printf("身長を入力してください。\n");
    for (i = 0; i <7; i++) {
        printf("%d番", i + 1);
        scanf("%d", &height[i]);
        sum += height[i];
    }
    printf("平均:%.1f", (double)sum / 7);
    return 0;
}



エド君「…ん?男は6人しかいねぇはずだが…」
あ、最後の私だな。
エド君「オマエは関係ねぇだろうが!!」
ひどいな!?仲間だろう!?
エド君「エルソ知らねぇやつが混乱するからそういうこと言うんじゃねぇ!」
でもほらエド君私平均に近い。
エド君「じゃあオマエ抜いてもあまり数値変わんねぇな。」
ひでぇ!!(なお実際に6人で計算した場合は171.7でした。ほんとにあんま変わんなかった。)

こう見ると大人組でかくない?うちの子でも180超えそんないないんだけど。
一番平均に近いのはエド君かあ。カワイイ。
エド君「何がカワイイかわかんねぇが解説していくぞ。今回使ったheight[7]ってやつが配列だ。これで7つの身長を入れる箱ができたわけだな。ちなみに箱の数字は0から始まるから厳密にはa[n-1]まで、つまり今回だと0~6の範囲の数字となる。」

int a[3]={1,2,3};

エド君「このように最初に初期化することもできる。入れてない所は0で初期化がされる。」
なるほど。そういや途中でコピーさせたいときはそのまま代入演算子でいける?
エド君「ああ、それだがforで1つずつコピーする必要があるな。」
めんどいな…
エド君「キーボードから入力する際も今回みたいにforを使うのがやりやすいな。#defineというのを使ってマクロで数字を置換することもできる。」

#include<stdio.h>
#define NUMBER 7
int main(void) {

    int i;
    int height[NUMBER];
    int sum = 0;

    printf("身長を入力してください。\n");
    for (i = 0; i < NUMBER; i++) {
        printf("%d番", i + 1);
        scanf("%d", &height[i]);
        sum += height[i];
    }

    printf("平均:%.1f", (double)sum / NUMBER);
    return 0;
}

エド君「今回は7という数字をNUMBERで置き換えた。」
でもこれめんどくさくない?むしろ文字数増えてるし。メリットあるのか?
エド君「こうすることのメリットだが数字を置き換えたいときにdefineのとこの数字さえ変えれば全部置き換わるから楽というところだな。さっきのだと全部の数字を変える必要があったからな。」



エド君「あと数字を入力された逆の並びでだすこともできるぞ。」

#include<stdio.h>

int main(void) {
    int i;
    int a[7];
    int sum = 0;

    for (i = 0; i <7; i++) {
        printf("a[%d]:", i );
        scanf("%d", &a[i]);
       
    }
 
    for (i = 0; i < 3; i++) {
        int b = a[i];
        a[i] = a[6 - i];
        a[6 - i] = b;
    }
    printf("反転結果\n");
    for (i = 0; i < 7; i++)
        printf("a[%d]=%d\n", i, a[i]);
    return 0;
}


おおすごい。どういう技術だこれ。
エド君「今回の場合7個あるから2つめのforでi番目と6-i番目を入れ替えるプログラムを用意した。」


エド君「さっきまでは一次元の配列だったが活用すれば多次元の配列も作れるぞ。」

int a[3][2]={{1,2},{3,4},{5,6}};

エド君「こういう感じだな。2個はいる配列が3個あるって解釈になる。」
なるほど…



エド君「さてと配列の話はこれくらいだな。実際のとこなんだがここら辺まで分かっていれば自分で関数を作ってちょっと複雑なプログラムもできるようになる。」
関数を作る?
エド君「ああ。むしろ本格的なものを作るなら自作する必要が出てくるからな。簡単に大きい数字を判別する関数を自作してみるぞ。」


#include<stdio.h>

int max(int x, int y) {
if (x > y)
return x;
else
return y;
}

int main(void) {
int a, b;
printf("エド君「数字を2つ入力しろ。」\n");
printf("a:"); scanf("%d", &a);
printf("b:"); scanf("%d", &b);
printf("エド君「大きい方の数字は%dだ。」",max(a, b));

return 0;
}

エド君「int mainの所とは別にmaxという関数で大きさの比較をするようにしたぞ。mainの中でmaxが出てきたところで呼び出すシステムになっているから先に書いたから先に動くということはない。あと自作関数はmainの後ろに置くこともできるんだが…」

#include<stdio.h>

int max(int x,int y);

int main(void) {
int a, b;
printf("エド君「数字を2つ入力しろ。」\n");
printf("a:"); scanf("%d", &a);
printf("b:"); scanf("%d", &b);
printf("エド君「大きい方の数字は%dだ。」",max(a, b));

return 0;
}

int max(int x, int y) {
if (x > y)
return x;
else
return y;
}

エド君「どっちみちmainの前に関数の宣言がいるから前に書いた方が手間が省けるんだけどな。まあこういうのを応用すればいろいろな関数を自分で作れるようになって幅が広くなる。あとポインタとか構造体とかもあるんだが…こういうのはややこしいからな。またそのときになれば話すとするか。」

エド君と学ぶC講座5

今回の内容 簡単な復習 C言語の性質 ミスしがちな内容





エド君「さて今回は箸休めとでもいくか。まずは今までにやってきた関数の簡単な整理をしていく。」

printf 文字の出力。%dで10進数、%fで浮動小数点数を出すことができる。その他に%u、%sなどもあるがこれは使うときにまた…

scanf キーボードから入力された値を格納する。格納したい変数の前には基本的に&を
つけるがつけないものもある。これの説明も使うときに…

puts printfと似ているが自動的に改行が入る。

putchar 1文字のものを出力する際に使う。'A'のように'で文字を囲む。

if 式を評価しその条件に合うかで分岐させる。else ifやelseと組み合わせて使うことが多い。

switch 複数の分岐があり、式が同じ場合にはこっちのほうが使いやすい。

do do~whileで使う。他のループ系に比べるとあまり使わない。

while do文が判定が1度実行された後に対して実行前に判定される。こっちの方が使うが条件次第ではループが1度も実行されないこともある。

for 最大3つの式で条件や行動を表す。制御式(真ん中の式)以外は省略することもできるが制御式を省略すると無限ループと化す。


エド君「まあこんなところだな。さてここからはC言語のちょっとした性質の話をするか。まずは識別子…変数とかに使うやつだな。これの制限の話だ。これは先頭が非数字、2文字目以降は数字でも非数字でもよくなっている。」
つまりはx1はいけるけど1xはいけないってことか。
エド君「ああ。あと大文字と小文字は区別されるからABCとabcは別の識別子になる。非数字のなかにはアンダーバー(_)も使えるがそれ以外の記号とかは使えねぇ。abc@とかはできないわけだな。」
つまりはtako_addは識別子として使えるのか…
エド君「あとはifやforのように変数に使えないものもある。まあ基本的には既存の関数やそこで使うものは対象外ってことだ。」






そういやプログラム見てるとなんか字下げされてるけどあれっていったい?
エド君「インデントの話だな。段落中のものをずらして書くと構造がわかりやすくなるというのと環境によっては並べると不都合が起きることもあるんだよ。あとそういう風に書くと読みやすい。C言語には記述にある程度の自由さがあるんだが…」



#include<stdio.h>

int main(         void) { printf("Hello world!"
);
    return 0
        ;
}

エド君「こんな書き方でも動くのは動くが…わかりにくいだろ?」
これはひどい。
エド君「自由形式自体は認められてはいるが流石に見る側につたわりにくすぎる。初歩的なhalloworldでこのざまだからな。さらに複雑な内容だと自分で見直したときにも混乱しかねない。あと自由形式とはいえ例えばintやreturn、演算子の間に空白を入れるとエラーになるし最初にあるincludeのような#がつく処理は分離ができねぇ。」

#include
<stdio.h>

エド君「こう書くとエラーになる。」
そういえば長文書きたいときに行変えるとエラーになったんだがあれってどうすりゃいいんだ?
エド君「たまにあるやつだな。中身が長くなって見づらくなること。」

printf("口は悪いけどほんとは優しいし抱えてる闇深すぎるしギャップがカワイイ。
そう。エド君はカワイイんだよ。");

こういうのを入れたかったんだが…
エド君「文章が変なのは置いといてそういう場合は行ごとに"で囲むといい。」

printf("口は悪いけどほんとは優しいし抱えてる闇深すぎるしギャップがカワイイ。"
        "そう。エド君はカワイイんだよ。");

エド君「こうすりゃ長文でも見やすくなる。あと個人で見返す時や相手にわかりやすいプログラミングを作るならコメントの挿入をするといい。」
コメント?
エド君「ああ。例えばだが…」


/*読み込んだ数字は奇数か偶数か*/
#include<stdio.h>

int main(void) {
    int x;
    printf("エド君「数字を入力しろ。」");
    scanf("%d", &x);
    if (x % 2)

        printf("エド君「その数は奇数だ。」"); //2で余りが出る。
    else
        printf("エド君「その数は偶数だ。」"); //2で割り切れる。
    return 0;
}

エド君「/**/や//でコメントをつけることができる。複数人での作業なら必須だな。こういうのを残しておくとどういう動作なのかとかがわかりやすくなる。あとは初心者がやりがちなミスとかの話もするか。」

・stdio.hをstudioとかく。

エド君「英単語のほうで書きがちなミスだ。」
あるわ…stuまで書いてあ、違うってなるやつ。
エド君「動かねぇと思ったらそもそもここが違っていたというオチだな。」

・半角と全角を間違える。

エド君「出力される文字とかなら全角でも良いんだが括弧やセミコロン、空白が全角になっていてエラーになることがある。ここは半角でやるということを覚えるしかねぇな。それでもたまにやらかすんだが。」
あー…これ空白が全角だとわかりにくいな…気をつけねば。

・綴りのミス。

エド君「まあ最初のもこれなんだが動かないと思っていたらprintfがprinfになってたとかあとこれはPythonとかしてるとやりがちなんだがprintで書いて動かないってパターンだな。」
Python?
エド君「そういうプログラミング言語があるんだよ。あっちだとprintで動くからfを付け忘れるとかな…」

・=と==の間違い。

エド君「=は代入==は等しいかの判別なんだがそもそも==を使うべき所で=を入れてエラーになるもありがちなミスだな。」
どうしてもa=bで2つが等しいって認識になってしまうんだよなあ…

・;の付け忘れ

エド君「printfとかの後ろは;をつける必要があるんだがこれを忘れることも多い。あと逆のパターンとしてforとかのつけなくて良いところでつけてしまうこととかもな。」
なんにでもつけて良いわけじゃないのか…困ったらつけとけば解決…ともいかないんだな。

・変数の宣言し忘れ。

エド君「変数を複数使っていたり途中で増やしたいとなったときに宣言漏れが起こるときがある。」
確認大切だな。

・配列の範囲の勘違い。

エド君「配列に関しては次の回でやる予定なんだが先にミスしやすいとこを言っておくと
int a[10]ってなってるやつはこの10は0~9の10個で10番目は10じゃなくて9になるという仕様がある。つまりa[9]までしかないということだ。」

・{}の数が合わない。

エド君「{で始めたら}で閉じる必要があるんだがこれの数が合わずにエラーになる、括弧の位置がおかしくて挙動が合わないという事が起きる。とくに長文になると数がわかりにくくなるんだよなこれが…」
んでどこに入れたら良いかわからなくなるやつ…つらみ。

・そもそもなんでエラーが起きているのかがわからない。

エド君「そんな馬鹿なとなりそうだが以外と何が原因なのか分からないとかエラー表示はないのに動かそうとしたらエラーを吐くとかな…まあ表示される場合はそのエラーを読めば良いんだが英語表示も多くてわからねぇってやつもいるな…」
あるある…できたと思って起動したら例外がどうのこうのって出てなにも分からないとき…
エド君「分からないときに相談できる相手がいるとプログラミングは特に心強いんだが…」
やめろ。私みたいな陰キャにはエド君くらいなんだよ頼れるの。






エド君「さて。今回は小休憩だったが次からはまたいろいろと教えていくぞ。次回は途中でも語った配列の話だ。」