hibikousinnkibouのブログ

駆け出しプログラマーによる足跡ブログ

オリアプ作成(自動返信チャット4)

今回も少しだけ進めています。

正規表現の練習になりますので、新しい形として、if条件一つに( || )を入れて、挨拶に挨拶を返すようにしました。

class ChatsController < ApplicationController
def index
@chats =Chat.all
end

def new
end

def create
if params[:content].match(/%おはよう%||%こんにちは%||%こんばんは%/)
Chat.create(content: params[:content])
Chat.create(content: "おはようございます")
end
redirect_to root_path
end
end

これによって、「おはよう」「こんにちは」「こんばんは」を含むコメントに対して、「おはようございます」を返すようにしています。

今後は、「おはよう」には「おはよう」を「こんにちは」には「こんにちは」を返せるようにしたいと思います。

 

オリアプ作成(自動会話チャット3)

どうもこんにちは。

引き続き自動会話チャットを作成しています。

今回は自分の発言内容に対して、正規表現を指定して、特定の言葉を返信することに成功しました。

class ChatsController < ApplicationController
def index
@chats =Chat.all
end

def new
end

def create
if params[:content].match(/こんにちは/)
Chat.create(content: params[:content])
Chat.create(content: "こんばんは")
end
redirect_to root_path
end
end

これで、こんにちはを入力した際に、こんばんはを返すようにできました。

今後はdeviseの機能を利用して、自動返信君とユーザーのどちらの発言であるかをわかるようにできたら良いなと思っています。

継続して頑張っていきます。

オリアプ作成(自動会話チャット2)

お久しぶりです、どうもです。

自動会話チャット作成したくて模索しています。

class ChatsController < ApplicationController
def index
@chats =Chat.all
end

def new
end

def create
if Chat.create(content: params[:content].include?("こんにちは"))
Chat.create(content: "こんばんは")
end
redirect_to root_path
end
end

これをやって、こんにちはの場合のみこんばんはを返したいのですが、

こんな感じで true と false を返してくれるのですが、どっちにしてもこんばんはを返してしまっているので、改良していきます!

牛歩ですが、がんばります。

オリアプ作成(自動会話チャット1)

こんにちは。

落ちゲーアプリ作成を一旦終えたので、新しいアプリ作成に入りました。

全く否定されない自動会話アプリを作りたいなと思って取り組んでいます。

とりあえず、メッセージを投稿して、反映されるアプリから自動で返信する機能をつけていきたいと思っています。

とりあえず、コントローラーにて

def create
if Chat.create(content: params[:content])
Chat.create(content: "こんばんは")
end
redirect_to root_path
end

を記述することで、何を入力しても「こんばんは」を返すことに成功しましたが、話している人との区別もつかないし、「こんばんは」を返すだけなので、まだまだこれからです。

なんとか違和感ない感じまで持っていきたいと思います。

がんばります!

落ちゲーアプリ作成21(BGMの追加)

どうも。

オリアプのBGMを追加しました。

一定時間後に自動的に結果画面に遷移するのですが、結果画面遷移とともに結果画面のBGMを流したいと思っていました。

今までの sound.js を setTimeout を利用して以下のように変更しました。

function sound() {
document.querySelector(`.sound_start`).addEventListener('click', () => {
const gameSound =document.getElementById('geme_sound');
const endingSound = document.getElementById("ending_sound");
gameSound.play();
gameSound.volume = 0.3;
window.setTimeout(function(){
if(gameSound.play()){
gameSound.pause();
endingSound.play();
endingSound.volume = 0.3;
};
}, 10000);
const ninjas = document.getElementById("ninjas");
const kenSound = document.getElementById("ken_sound");
ninjas.addEventListener('click', function(){
kenSound.play();
kenSound.volume = 0.3;
});
});
};
if(document.URL.match(/new/)){window.addEventListener('load', sound)};

水色の箇所が今回加えた記述です。

setTimeout を addEventlistner の中に入れることで実現しました。

点数保存機能は難しそうなので、またヒントがあった時に取り組みます。

ここまでで、オリアプの一旦の完成としたいと思います。

Rubyグレードダウン

どうも僕です。

PCをモノカリで借りていたものから別のPCに切り替えようとしていましたが、一旦諦めました。

その中で、アプリを新しいPCに移行させるために github から gitclone しようとして、ruby バージョンをアップグレードしていましたが、AWS おそらく render もバージョンが新しすぎてデプロイできないので、ダウングレードすることにしました。

もしかしたら、このあと、rails , webpacker もやらないといけないかも。。

以下の記事を参考にインストールから反映までを行いました。

Ruby 3.0.0 から 2.7.2 にダウングレードさせる。 - Qiita

[User@ip-address app_name]$ rbenv local 2.7.2

[User@ip-address app_name]$ rbenv versions

* 2.7.2 (set by /var/www/rails/app_name/.ruby-version)

3.0.0

この辺がポイントっぽいので同様のことが起きた時に肝に銘じておきたいです。

落ちゲーアプリ作成20(BGM再生)

久しぶりの投稿になります。

PCを入れ替えたいのも有りまして、アプリをデプロイして新しいPCで立ち上げて行きたいのですが、エラーが続いています。

おそらくアプリのいろいろなバージョンが古いということで、バージョンアップしていますので、そのうち新しいPCからの投稿になります。

 

今回は、以前よりゲームBGMを導入しようとしていたことができたので、投稿します。

html.erb で

<div><%= audio_tag 'bakumatsubukyoku_hananoran.mp3', id:"geme_sound"%></div>
<div><%= audio_tag 'koukaon.mp3', id:"ken_sound"%></div>

を導入していましたが、やっと稼働します。

以前より、クリックなどの人の動作によって、音声が再生されることがわかっていたので、ゲーム前に襖画面を導入し、音有りプレイと音無しプレイのボタンを設けて、ゲーム時に音声を再生するか選択できるのとクリックすることで音声が再生されることを同時に実現しました。

音声再生は JavaScript を利用して、

function sound() {
document.querySelector(`.sound_start`).addEventListener('click', () => {
const gameSound =document.getElementById('geme_sound');
gameSound.play();
gameSound.volume = 0.3;
const ninjas = document.getElementById("ninjas");
const kenSound = document.getElementById("ken_sound");
ninjas.addEventListener('click', function(){
kenSound.play();
kenSound.volume = 0.3;
});
});
};
if(document.URL.match(/new/)){window.addEventListener('load', sound)};

としました。

制限時間の setInterval も同じように `.sound_start` の click をイベント発火とすることで、クリックしてからスタートすることにし、ページの自動遷移も setTimeout を setInterval と同じスコープに入れることで、クリックしてから一定時間で自動にページが切り替わるようにしました。

 

かなりイメージが出来上がってきました。

あとは点数の保存がしたいなと思っています。では。