Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Golang で制限時間付き・ランダム表示のタイピングゲームを作ってみた。
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Nobuyoshi
February 06, 2020
Programming
670
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Golang で制限時間付き・ランダム表示のタイピングゲームを作ってみた。
Golangで制限時間付き・ランダム表示のタイピングゲームを作って、
つまづいた事、解決方法についてお話します
Nobuyoshi
February 06, 2020
More Decks by Nobuyoshi
See All by Nobuyoshi
ピクセルパーフェクトの定義
uemura
1
110
仕事では採用されなかったホスティングサービス、 せっかくなのでLTで話します
uemura
0
130
Babylon.js × microCMS でフォトギャラリーサイト作った
uemura
0
280
2年ぶりにCSSアニメーションを作ったよ!
uemura
0
1k
今年初めてのBabylonJsを触ってみた
uemura
0
300
ポートフォリオサイトのお問い合わせフォームをSendgrid + microCMSで作成したお話
uemura
1
1.6k
Three.js(WebGL)で一年以上学習した成果と便利なクラス/ライブラリを紹介
uemura
0
340
Pug / SASS でピクロス(カービィ)を作成
uemura
0
190
僕の好きなcssプロパティ・値5選
uemura
0
520
Other Decks in Programming
See All in Programming
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
370
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
260
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
900
dRuby over BLE
makicamel
2
390
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
290
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
560
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.5k
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7k
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
220
Performance Engineering for Everyone
elenatanasoiu
0
200
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
580
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
730
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
740
Product Roadmaps are Hard
iamctodd
PRO
55
12k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Six Lessons from altMBA
skipperchong
29
4.3k
Believing is Seeing
oripsolob
1
150
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
190
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Practical Orchestrator
shlominoach
191
11k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
Transcript
Go lang で制限時間付き・ランダム表示の タイピングゲームを作った話 うえむー 2021/11
・自己紹介 ・なぜ、あの時Golangをやろうとしたのか? ・golangで作ったもの ・golangでつまづいた事 scan関数 ・golangでつまづいた事 timer設定 目次
Name うえむー Skill html / pug / css / scss
/ javascript / jQuery / gulp.js / php / React.js / Vue.js / next.js etc... ※firebase / Svelte 勉強中です。 Hobby プログラミング学習・ビートボックス・ゴルフ・ボードゲーム・麻雀 SNS・ブログサイト Twitter::https://twitter.com/uemuragame5683 ポートフォリオ:https://uemu-engineer.com/ 自己紹介
・[Gopher]というマスコットキャラクターがいい! ・2019年 学びたいプログラミング言語、 トップ3入り! ・progateのプログラミング学習に その言語が入っており面白そうだったから なぜ、あの時Golangをやろうとしたのか?
golangで作ったもの
タイピングゲームを作ってつまづいた事① Scan関数の罠・・・
最初はprogateのgo lang言語の学習 レッスンの最後に「タイピングゲームを 作ろう」があったので、チュートリアル をみて実装しました。 しかし、タイピングゲームの7問目に半 角スペースを含めた ワードを設定し実行すると。。。
正解のはずが、「不正解です!」と返さ れ8問目〜10問目が飛ばされてしま う。 実行結果
不具合の原因 原因はScan関数らしく、ドキュメントを見ると以下のことが書かれ ておりました。。。
標準入力からテキストを一行ずつ読み込む「bufio.NewScanner」の関数 を利用して、標準入力から読み込んだテキストをスキャンできたら、テキスト を文字列に変更しans 変数に渡して、ans 変数と問題が同一であれば「正 解です!」という文字列とポイント加算し、同一でなければ「不正解です!」 という文字列を返却するように処理に変更しました。 修正前 修正後
this is a dogと入力しても、さっき みたいに不具合にはならず正常に 処理がでた。
タイピングゲームを作ってつまづいた事・・・② タイマー設定。。。
第二フェーズ せっかくgo langを学習したのに勿体無い、 お題をランダム形式・タイマーを加えて実装してみたい。
新たな壁が。。。 いつも書いているphpはオブジェクト型、golangはパッケージ型な ので書き方が全然違うので慣れないのでタイマーはどうやって実 装するのかわからない。 ドキュメント・参考記事を参照に実装
修正前は、main関数・ask 関数を分割して実装。 main関数は、ask関数に連 番・お題・スコアの変数を設 定し、Printfで結果のコメント を出力するコードを入力。 ask関数は変数totalScore のポインタを引数として渡し 正解の場合はに+10を加え るコードを入力。
修正後は、ドキュメント・参考記事を 参照にしてmain関数、ask関数を 分割にするのをやめて一つにまと めた。 ・コマンドラインのフラグを解析する ための「flag」パッケージ ・日時データを取得するための 「time」パッケージ ・ランダム表示させるための 「math/rand」パッケージを利用して
実装
(1).shuffle関数を作成して文字列 をシャッフルさせてランダム表示 (2).init関数を利用してフラグを作成 (3).入力データを読み出すためのイ ンターフェース (4).timeパッケージを利用して数分 後に処理するtmの変数を作成 3 4 1
2
for文で配列を回してお題をランダ ムで出力 switch文と似ているselect文を利用 文字列を入力を入力し正解だった ら正解ですと文字列を返し、スコア が加算され次の課題へ不正解だっ たら加算されず正解が出るまで次 のお題出さない 時間がすぎたら制限時間すぎまし たという文字列を出力し強制終了
その結果、左図のように正常に処 理ができました。
来年の予定 ・サーバーサイド言語: firebase + typescript + next.js ログイン機能 firebase
+ gatsby.js でチートシート golang で何かを作る「未定」 ・フロントエンド: ブログサイトリニューアル
ご静聴ありがとうございました!