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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

2284閲覧

パズルゲームのドラッグ&ドロップのやり方

退会済みユーザー

退会済みユーザー

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/10 10:41

編集2021/06/10 11:30

私は現在pythonについて勉強していて、パズルゲームを作っています。
しかし、初心者で早速詰まってしまい、コードが書き進まないので、助けをいただきたいです。

添付しましたファイルのように、さまざまな形のブロックを枠の中に綺麗にはめていくというゲームを作りたいです。
イメージ説明
ブロックはpythonにイメージをアップロードする予定なのですが、3つずつランダムに出てくるブロックを、1つ選択して枠の上にマウスでドラッグ&ドロップするような形で置くようにするには、どのようなコードにすれば良いでしょうか?

とりあえず四角1つを動かせるようにコードを書いたのですが、四角が表示されるだけでマウスと共に動きません。

import pygame

pygame.init()
win = pygame.display.set_mode((500, 500))
pygame.display.set_caption("Moving rectangle")

x = 200
y = 200
width = 20
height = 20
vel = 10
run = True

while run:
pygame.time.delay(10)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and x>0:
x -= vel
if keys[pygame.K_RIGHT] and x<500-width:
x += vel
if keys[pygame.K_UP] and y>0:
y -= vel
if keys[pygame.K_DOWN] and y<500-height:
y += vel
win.fill((0, 0, 0))

pygame.draw.rect(win, (255, 0, 0), (x, y, width, height)) pygame.display.update()

pygame.quit()

アドバイスをいただきたいです!
宜しくお願いします。

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

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

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

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

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

miyabi_takatsuk

2021/06/10 10:46

今現状ので構いませんで、 質問者さんの書いているソースコードを掲示して下さい。 でないと、丸投げに思われてしまうかと。
miyabi_takatsuk

2021/06/10 10:47

あと、使用しているフレームワークなどありましたら、 質問タグに追加して下さい。
BeatStar

2021/06/10 11:06

そもそも、前提を履き違えています。 プログラミングは『こう書けばいい』ではないです。 それと人や仕様によって相当違います。なので丸投げにしか見えません。 まずはご自分でやったこと、試したこと、書いたコード、参考にしたサイトのURL等を載せましょう。 それだけでもだいぶ印象が違います。
BeatStar

2021/06/10 11:35

コードは、投稿や編集時に出る "<code>"または "<コード>" のボタンを押して出てくるやつに書いてください。 そのままだとインデントが無視されて非常に読みづらいです。
BeatStar

2021/06/10 13:37

結局、答えが欲しいだけだったんですね。だから簡単に退会する。
guest

回答1

0

そのコードで四角が表示されてキーボードで動かせるのであれば、マウスで動かすのはそれほど難しくはありません。とはいえ書くのも大変なので、切っ掛けだけ。

コードでは、keys = pygame.key.get_pressed() で、どのキーが押されているかを取得して、押されているキーによって、座標値を増減して四角を再描画しています。

pygamesでマウスの状態を取得するにはmouse.get_pressedなどの関数を使いますので、上記の部分を以下のような処理に置き換えればいいでしょう。、

  • pygame.mouse.get_pressed でボタンの状態を取得する
  • 左ボタンが押されていたら pygame.mouse.get_pos で座標を取得する。
  • マウスの座標から四角の座標を算出して、xとyを更新する。

というような感じでしょうか。

関数のドキュメントはこれを参考にしました。

お望のゲームにするまではまだだいぶみちのりは長いですが、千里の道も一歩からといいますので、頑張ってください。

投稿2021/06/10 12:39

編集2021/06/10 14:21
TakaiY

総合スコア13790

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問