第11回 基礎プログラミング I レポート課題
氏名:久保田 瑛一郎
学籍番号:c109058
語学クラス:英語1
コース:社会福祉
チーム名:イナゴ食べないの?
チームホームページアドレス:http://roy/~c109001/inago/inagotabenaino.html
プロジェクト名:世界タイピング
1.ホームページでの作業
A ロゴの作り方の手順について簡単に解説する
今回私はGimpのロゴ作成時に出てくる「背景」は使わず、背景は別ファイルとし、
背景の作成完了後、ロゴの文字を別ファイルで通常どおり作成し、後にこの2つ
を合わせた。
frame2.htmlの内容を変更した。 よって掲載する。
My Home Page
c1090584
久保田 瑛一郎
5行目でロゴを表示させるようにしている。またそのまま掲載するとロゴが大き
すぎて表示できない部分も存在する。よって、縮小している。
ロゴを掲載したホームページアドレスは、
http://roy/~c109058/
である。
●ロゴ文字の作成手順
1 拡張→ロゴ→ぐにゃぐにゃをえらぶ
2 ロゴが出来上がる
3 「レイアー、パス、チャンネル」に存在する、新規レイヤーを選ぶ。
ここでは後に作成する「背景」の大きさがどれくらい必要なのか、(つまりロゴ
の大きさがどれくらいなのか)を確認するため、ウィンドウに表示される「たて」
の大きさと、「よこ」の大きさを確認する。)
確認したら閉じる
●背景の作成方法
1 ファイル→新規を選ぶ
2 たてとよこの大きさはロゴの作成手順の2で確認した、大きさと同じにする
また、下の方に存在する「グレースケール」を選ぶ
3 画像の上を右クリックし、フィルタ→下塗り→雲→ソリッドノイズを選択
4 ウィンドウは何も操作せず承認
5 画像の上を右クリックし、画像→色→カーブを選択
6 出てきたウィンドウの上の方が「明度」担っていることを確認し、下の方にあ
るカーブの種類を「自由曲線」に変更
7 なかなか解説しにくいのだが、四角いますめが点在しているエリアの左端〜右
端に向かいマウスで「ww」のようにして描く。終わったら了解を押す
8 画像の上を右クリックし、画像→モード→RGBを選択
9 画像の上を右クリックし、画像→色→カーブを選択
10 出てきたウィンドウの上の方を「赤」にして、下の方にあるカーブの種類を
「滑らか」に変更
11 斜めに延びている線の右端をマウスで掴み四角いエリアの大体半分のところ
へ持っていく
12次からは10と11の要領で緑と青を設定するが
赤よりも緑が低い位置、緑よりも青が低い位置に
なるように設定する
14 木目のようになるように12を守りながら高さを調整する
できあがり
●ロゴ文字と背景の統合
1 ロゴ文字のレイヤーを確認し、背景の色がついているものについて右クリックで
「レイヤーの削除」を選ぶ
→この時、どれだか判らなければレイヤー名の左にある「目玉マーク」で表示を
一時的に消しながら、背景の色が消えたレイヤーを削除する
2 「レイアー、パス、チャンネル」の上の方にある選択バーで背景のファイルを選
ぶ
3 レイヤー(たぶん1つだろう)をマウスで ロゴ文字の方へドロップする
4 ロゴ文字の方のレイヤーを確認し、背景が一番したにくるようにマウスでレイヤー
をつまみ、持って良く→背景が一番上だとロゴ文字が隠れてしまうため
5 完成!
2
A 決定したプロジェクトは「世界地図」(の検索プログラム)と「世界タイピング」
である。
経緯は常識としての「世界の国名」と「首都」は一致していた方が、良いだろう
という結論に達した。
もう一つのプログラムは、上記プログラムと関連させた方が良い。そこで、せっ
かく国名は、英語で表記されるのも一般的である。(旅行だったら空港など)、更
に、現代は英語力向上も叫ばれ、同時にコンピューターも各家庭に普及した。
そうした時代背景を加味し、上記プログラムと連動できるものとして、「世界タ
イピング」を開発する。
B 私の担当はプロジェクトは「世界タイピング」である。ここではプログラム
(問題の内容ではなく動かすための元となるプログラム)を作成している。
なおプロジェクトのホームページアドレスは
http://roy/~c109001/inago/sekaitiping.html
である。
C 作成したプログラム
tiping.rb
#!/usr/koeki/bin/ruby
#インタプリタ宣言文
$KCODE ="e"
#文字化け防止
s =0
a = 0
k=0
e_name =Array.new
#あとで外部データから新しくデータをとってくる
j_name =Array.new
#あとで外部データから新しくデータをとってくる
kaisuu = 0
#問題数を数えるのに使用
time = 0
#タイム計算に使用
point = 0
#スコア計算に使用
seikai = 0
#正解数計算に使用
start = 0
#スコア計算時に際し、スタート時間を記録するときに使用
finish = 0
#スコア計算時に際し、スタート時間を記録するときに使用
usrname = 0
#ユーザー名を入れてもらうときに使用
open("sekai.dat","r") do |tehon|
#外部からデータをとってくるが、そのデータをsekai.datと定義し、tehonに集める
while type = tehon.gets
#tehoに取りこむことをデータの終わりまで繰り返す
if /(\S+)\s+(\S+)/ =~ type
#もし外部のデータ配列が文字→空白→文字だったら
j_name[s] =$1
#j_nameという配列は外部データの2つ目の配列とする
e_name[s] =$2
#e_nameという配列は外部データの2つ目の配列とする
s +=1
#次の行に進むためにsにひとつ足すことにより、進む
end
#ifのおわり
end
#whileのおわり
end
#openのおわり
print("タイピングを始めます! sを押して下さい!:")
#主旨説明
sigh=gets.chomp
#そのコマンドをsighに取り入れる
if sigh =="s"
#もしsighにsと入力されたら先の処理に進む
else
#それ以外の文字が入力されたら
exit(0)
#異常終了
end
#ifのおわり
STDERR.print("ユーザー名を入れて下さい。リターンキーで確定後、2秒後にスタート:")
#ユーザ名の入力を指示
usrname = gets.chomp
#その文字の改行文字をとり、取りこむ
sleep (2)
#ktremの動き2秒間を止める(スリープさせる)
print(`banner "Start"`)
#Ktremにバナーを出す
start=Time.now.to_i
#時間を整数化することに、タイムを計算できるようにする
while a < 20
#a(問題数)が20になるまで繰り返す
srand
s = rand(243)
#s(配列番号)を乱数化(ランダムにする)することにより、ランダムに問題を出す
printf("入力単語和訳:%s\n",j_name[s])
#入力してほしい単語の和訳を表示
printf("入力単語:%s\n",e_name[s])
#入力してほしい単語を表示
STDERR.print("入力欄:")
#入力欄を表示
nyuuryoku = gets.chomp
#そこに入った文字の改行文字を取り除き、取りこむ
if nyuuryoku ==e_name[s]
#もし入力してほしい単語と、入力された単語が同じだったら
print("正解\n\n")
#結果表示
seikai+=1
#正解数を1つふやす
point+=10
#ポイントを10点ふやす
else
#それ以外の単語が入力されたら(間違っていたら)
print("不正解\n\n")
#結果表示
point -= 5
#ポイントを5点減らす
end
#ifのおわり
a += 1
#aに1を足すことによって 問題数を進める
end
#open(読みこみ)のおわり
finish = Time.now.to_i
#時間を整数化することにより、タイムを計算できるようにする
print(`banner "Stop"\n`)
#バナーを出す
time=finish-start
#先に求めた、フィニッシュの時間からスタートの時間を引くことにより、タイムを求める
if time < 20
#もしそのタイムが20(秒)以下だったら(仮のボーナス設定)
point +=20
#pointに20を足す
end
#ifのおわり
printf("タイム:%d秒\n",time)
#結果表示
printf("正解数:%d問\n",seikai)
#結果表示
printf("得点:%d点\n",point)
#結果表示
day=Time.now
#あとでホームページに結果を表示する際のプレイした日付を表示するための記録をする
open("score.html","a") do |score|
#外部データのscore.htmlに書きこむ
score.print("\n")
#htmlであることを宣言する
score.print("\n")
score.print("\n")
score.print("\n")
#本文であることを宣言
score.print("タイピングスコアカード
\n")
#タイトル表示
score.print("\n")
#表の始まりであることを宣言する
score.print("\n")
#表の行の始まりであることを宣言する
score.printf("ユーザー名:%s | \n",usrname)
#結果表示
score.print("
\n")
#表の1行のおわりであることを宣言する
score.print("\n")
#表の1行のはじまりであることを宣言する
score.printf("実施日/時間:%s | \n",day)
#結果表示
score.print("
\n")
#表の1行のおわりであることを宣言する
score.print("\n")
#表の1行のはじまりであることを宣言する
score.printf("タイム:%d秒 | \n",time)
#結果表示
score.print("
\n")
#表の1行のおわりであることを宣言する
score.print("\n")
#表の1行のはじまりであることを宣言する
score.printf("正解数:%d問 | \n",seikai)
#結果表示
score.print("
\n")
#表の1行のおわりであることを宣言する
score.print("\n")
#表の1行のはじまりであることを宣言する
score.printf("得点:%d点\n | ",point)
#結果表示
score.print("
\n")
#表の1行のおわりであることを宣言する
score.print("
\n")
#表のおわりであることを宣言する
score.print("
\n")
#横線(仕切り線)をひく
score.print("\n")
#本文のおわりであることを宣言
score.print("\n")
score.print("\n")
#htmlのおわりであることを宣言する
end
#open(書込み)の終わり
結果は各自のホームページで今までの結果とも一緒に確認できるようにしたが、
その際に使うcssも作成した
tiping.css
table.a{
border:solid 1px #000000;
border-collapse:separate;
}
td.a{border:solid 1px #000000;empty-cells:show;}
このプログラムはktermで実行する「タイピングプログラム」であるため、黒い
画面で楽しみたいというニーズもあるだろう。
その際に自動的に黒いktremが出るプログラムも作成した
settei.rb
#!/usr/koeki/bin/ruby
system("kterm -bg black -fg white")
実行結果
問題出題数は まだ未定のため6問で実行する
なお仮設定であるが、1問正解すると10点、1問不正解だと−5点である。
タイピングを始めます! sを押して下さい!:s
ユーザー名を入れて下さい。リターンキーで確定後、2秒後にスタート:Kubo
#####
# # ##### ## ##### #####
# # # # # # #
##### # # # # # #
# # ###### ##### #
# # # # # # # #
##### # # # # # #
入力単語和訳:パプアニューギニア
入力単語:PapuaNewGuinea
入力欄:Papua
不正解
入力単語和訳:チェコ
入力単語:Czech
入力欄:Czech
正解
入力単語和訳:パナマ
入力単語:Panama
入力欄:Panama
正解
入力単語和訳:ブラジル
入力単語:Brazil
入力欄:Briai
不正解
入力単語和訳:ガイアナ
入力単語:Guyana
入力欄:Guyana
正解
入力単語和訳:パキスタン
入力単語:Pakistan
入力欄:Op
不正解
#####
# # ##### #### #####
# # # # # #
##### # # # # #
# # # # #####
# # # # # #
##### # #### #
タイム:60秒
正解数:3問
得点:15点
なおこのプログラムではタイピングデータとして、tiping.htmlに記録される
その結果を掲載する(表示されているのは開発段階のデーターも含む)
pan{c109058}% cat score.html [~/public_html/trydemo_t1]
タイピングスコアカード
ユーザー名:s |
実施日/時間:Thu Jul 01 02:42:48 +0900 2010 |
タイム:7秒 |
正解数:0問 |
得点:-80点
|
タイピングスコアカード
ユーザー名:s |
実施日/時間:Thu Jul 01 02:45:02 +0900 2010 |
タイム:32秒 |
正解数:3問 |
得点:-55点
|
タイピングスコアカード
ユーザー名:Kuboman |
タイピングスコアカード
ユーザー名:Kubo |
実施日/時間:Thu Jul 01 04:55:40 +0900 2010 |
タイム:60秒 |
正解数:3問 |
得点:15点
|
考察
bc -lで今回の結果のスコアを試算する
pan{c109058}% bc -l [~/public_html/trydemo_t1]
10*3
30
5*3
15
30-15
15
quit
よってこのプログラムの正確性が示された
D
ロゴで工夫した点は、何といっても背景だ。ホームページのタイトルが「My
Home Page」であるため「Home」にかけ、家のような、フローリングのような木
目にしたことである。 自作である。
参考文献
西村まどか 2010講義ノート 第9回 じゃんけん
http://roy/~madoka/2010/r1/09/09_03_theme_01_rsp.html
西村まどか 2010講義ノート 第9回 かかった時間を調べる
http://roy/~madoka/2010/r1/09/09_05_theme_03_timeup.html
西村まどか 2010講義ノート 第9回 ファイルの入出力に関して
http://roy/~madoka/2010/r1/09/09_01_review_01_fileopen.html
西村まどか 2010講義ノート 第9回 バナー
http://roy/~madoka/2010/r1/09/09_06_theme_04_banner.html
西村まどか 2010講義ノート 第9回 色をつけよう
http://roy/~madoka/2010/r1/09/09_07_theme_05_ansi.html