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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Nobuyoshi
February 06, 2020
Programming
0
650
Golang で制限時間付き・ランダム表示のタイピングゲームを作ってみた。
Golangで制限時間付き・ランダム表示のタイピングゲームを作って、
つまづいた事、解決方法についてお話します
Nobuyoshi
February 06, 2020
Tweet
Share
More Decks by Nobuyoshi
See All by Nobuyoshi
ピクセルパーフェクトの定義
uemura
0
88
仕事では採用されなかったホスティングサービス、 せっかくなのでLTで話します
uemura
0
110
Babylon.js × microCMS でフォトギャラリーサイト作った
uemura
0
260
2年ぶりにCSSアニメーションを作ったよ!
uemura
0
940
今年初めてのBabylonJsを触ってみた
uemura
0
280
ポートフォリオサイトのお問い合わせフォームをSendgrid + microCMSで作成したお話
uemura
1
1.5k
Three.js(WebGL)で一年以上学習した成果と便利なクラス/ライブラリを紹介
uemura
0
320
Pug / SASS でピクロス(カービィ)を作成
uemura
0
180
僕の好きなcssプロパティ・値5選
uemura
0
490
Other Decks in Programming
See All in Programming
朝日新聞のデジタル版を支えるGoバックエンド ー価値ある情報をいち早く確実にお届けするために
junkiishida
1
780
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
7.9k
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
350
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
520
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
1k
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
210
AI Assistants for Your Angular Solutions
manfredsteyer
PRO
0
130
nilとは何か 〜interfaceの構造とnil!=nilから理解する〜
kuro_kurorrr
3
1.9k
今、アーキテクトとして 品質保証にどう関わるか
nealle
0
210
The Ralph Wiggum Loop: First Principles of Autonomous Development
sembayui
0
3.7k
CDIの誤解しがちな仕様とその対処TIPS
futokiyo
0
200
AI主導でFastAPIのWebサービスを作るときに 人間が構造化すべき境界線
okajun35
0
670
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
480
The SEO identity crisis: Don't let AI make you average
varn
0
410
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
170
Raft: Consensus for Rubyists
vanstee
141
7.3k
The Curse of the Amulet
leimatthew05
1
9.8k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
330
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
300
YesSQL, Process and Tooling at Scale
rocio
174
15k
The World Runs on Bad Software
bkeepers
PRO
72
12k
HDC tutorial
michielstock
1
520
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
310
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 で何かを作る「未定」 ・フロントエンド: ブログサイトリニューアル
ご静聴ありがとうございました!