2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

クリック増量ゲーム

Last updated at Posted at 2024-10-05

ちょこっと業務を簡略化したいと思ったが,今回は息抜き

 
画面をクリックしまくると・・

Videotogif.gif

欲に満ち溢れた作品😂
こんなに簡単にクリックしたら溢れ出すぐらいのお金がほしい💴

tkinter コード一部解説

<環境>
🖥 Windows
🐍 python 3.12.5
🏆 VSCode

➀ 必要なインスト―ル
Pillowをインストールするためには、以下のコマンドを使ってpipでインストールしてください。 tkinterやrandomはPythonの標準ライブラリのため、特にインストールは不要です。

python
pip install Pillow

② 画像の設定
画像は、余白なしで作成するとよいです。以下の項目のファイルの種類を取り込めます。

python
filetypes=[("Image files", "*.png;*.jpg;*.jpeg;*.bmp;*.gif")]

③ クリック数に対するコメントの指定とコメントを消すタイミングの設定

comment_times は、コメントを出すクリック数とその言葉
clear_comment_offset は コメントを出すクリック数-5にコメントが消える設定にしている(以下の場合、5クリック目、45クリック目 )

python
# コメントを消すタイミングをリストで指定
       self.clear_comment_offset = 5  # 消去タイミングを表示タイミングからのオフセット
       self.comment_times = {
           10: "おお、欲がすごい",
           50: "これぐらい稼げるように頑張れ!"
       }

全体コード

全体コードはこちら
python
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk
import random

class ClickApp:
    def __init__(self, root):
        self.root = root
        self.root.title("クリックして画像を増やすアプリ")

        # クリックカウントの初期化
        self.click_count = 0
        self.comment_label = None  # コメント表示用ラベル
        self.images = []  # 画像保持用リスト

        # コメントを消すタイミングをリストで指定
        self.clear_comment_offset = 5  # 消去タイミングを表示タイミングからのオフセット
        self.comment_times = {
            10: "おお、欲がすごい",
            50: "これぐらい稼げるように頑張れ!"
        }

        # 画像を選択してロード
        self.image_path = self.select_image()
        if self.image_path:
            self.load_image()

        # クリックイベントのバインド
        self.root.bind("<Button-1>", self.add_image_on_click)

    def select_image(self):
        # ファイル選択ダイアログを開く
        image_path = filedialog.askopenfilename(
            title="画像ファイルを選択してください",
            filetypes=[("Image files", "*.png;*.jpg;*.jpeg;*.bmp;*.gif")]
        )
        return image_path

    def load_image(self):
        try:
            # 画像を読み込み、サイズを調整
            self.original_image = Image.open(self.image_path)
            self.image = ImageTk.PhotoImage(self.original_image)
        except Exception as e:
            print(f"画像の読み込みに失敗しました: {e}")
            self.image = None

    def add_image_on_click(self, event):
        if not self.image:
            return  # 画像がロードされていない場合は処理しない

        # クリック回数のカウント
        self.click_count += 1

        # ランダムな位置に画像を追加
        x = random.randint(0, self.root.winfo_width() - self.image.width())
        y = random.randint(0, self.root.winfo_height() - self.image.height())
        label = tk.Label(self.root, image=self.image)
        label.place(x=x, y=y)
        self.images.append(label)

        # コメントを表示するタイミング
        if self.click_count in self.comment_times:
            self.show_comment(self.comment_times[self.click_count])

        # コメントを消去するタイミングを計算
        clear_time = self.click_count + self.clear_comment_offset
        if clear_time in self.comment_times:
            self.clear_comment()

    def show_comment(self, message):
        if self.comment_label:
            self.comment_label.config(text=message)
        else:
            self.comment_label = tk.Label(self.root, text=message, fg="red")
            self.comment_label.pack()

    def clear_comment(self):
        if self.comment_label:
            self.comment_label.config(text="")

# tkinterアプリの起動
root = tk.Tk()
root.geometry("600x400")  # ウィンドウサイズの指定

app = ClickApp(root)
root.mainloop()

🧡最後に

画像を変更するのもおすすめ!

💢 → バグが起きた時の感情を1人で抱え込んではいけません。画像をこれにして怒りをぶつけましょう

💗 → 大好きが溢れ出ていますよ。これは相手に伝えましょう💓 でもちょっと恥ずかしかったらtkinterの画面をみせてもOK

🍔 → ダイエットきつすぎる。でも痩せたーーい。 これで食べたい欲を満たしているのえらすぎます。ダ

このアカウントは、ちょっとした効率化のための情報を載せます。(息抜きもあり)あなたの業務でも役立つこと願っています💓

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?