質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1958閲覧

画面の座標の指定について

yusuke.

総合スコア66

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2016/06/10 08:40

何度も質問してすいません。

今度は"kakikukeko"をおすとokが出るようにしたいのですが、
clicked?(x,y)メゾットの
(KUIZUX <= x <= 650) and (KUIZUY <= y <= 250)
これでは文字の場所の座標の指定をすることはできないのでしょうか。
ちなみにこれを実行すると
window.rb:33:in'clicked': undefined method '<=' for true:TrueClass (NoMethodError)
from main.rb:17:in"main"]
というエラーコードが出てきています。

window.rb

1require "sdl" 2require "./color.rb" 3class Window 4 WINDOW_YOKO = 750 5 WINDOW_TATE = 550 6 BITPIKUSERU = 0 7 KUIZUX = 550 8 KUIZUY = 200 9 10def initialize 11 SDL.init(SDL::INIT_EVERYTHING) 12 @screen = SDL.set_video_mode(WINDOW_YOKO,WINDOW_TATE,BITPIKUSERU,SDL::SWSURFACE) 13 SDL::TTF.init 14 @font = SDL::Kanji.open("font/jiskan24.bdf",24) 15 @font.set_coding_system(SDL::Kanji::SJIS) 16end 17 18def drawBack 19 @screen.fill_rect(0,0,WINDOW_YOKO,WINDOW_TATE,Color::GREEN) 20 @font.put(@screen,"aiueo",230,50,255,255,255) 21end 22 23def refresh 24 @screen.update_rect(0,0,0,0) 25end 26 27def gamestart 28 @font.put(@screen,"kakikuekko",KUIZUX,KUIZUY,255,255,255) 29 @font.put(@screen,"sasisuseso", 570,300,255,255,255) 30end 31 32def clicked?(x,y) 33 if (KUIZUX <= x <= 650) and (KUIZUY <= y <= 250) 34 return true 35 else 36 return false 37 end 38end 39end

main.rb

1#!ruby -Ks 2require "./window.rb" 3 4window = Window.new 5window.drawBack 6window.gamestart 7window.refresh 8 9while true do 10 while event = SDL::Event2.poll do 11 case event 12 when SDL::Event2::Quit 13 exit 14 when SDL::Event2::MouseButtonDown 15 x = event.x 16 y = event.y 17 if window.clicked?(x,y) 18 puts "ok" 19 end 20 end 21 end 22 23end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

比較の演算子(<=)を連結して使う事はできません。

if (KUIZUX <= x <= 650) and (KUIZUY <= y <= 250)

の行は、

if (KUIZUX <= x) and (x <= 650) and (KUIZUY <= y) and (y <= 250)

のように書いてください。

投稿2016/06/10 08:52

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問