agencies

파이썬 프로그래밍을 통한 ben.exe 프로그램 제작하기 본문

Ⅰ. 프로그래밍

파이썬 프로그래밍을 통한 ben.exe 프로그램 제작하기

agencies 2024. 1. 29. 22:22

이번 시간에는 추억의 ben.exe 프로그램을 제작하려고 합니다.

https://namu.wiki/w/Ben%20drowned

 

Ben drowned - 나무위키

가장 흔한 Ben drowned 게임의 이름이다. 시리즈 자체가 한 제작자가 6번대 시리즈까지 제작된 것으로, 처음엔 짤막한 점프스케어에서 백신에서 ben.exe를 걸러내는 게임까지 만들어냈다. 첫번째 ben.e

namu.wiki

 

이미지 출처(김재민) 님


준비물

- ben drowned (mp3)
- ben image (webp)
- winrar (exe)
- python (script)
* 이미지와 mp3를 base64로 인코딩하고, 프로그램 동작 시 디코딩해서 사용할 수 있습니다.
하지만 이번 방식은 이미지와 소리파일이 실행파일과 동일한 경로에 있어야 합니다.

 

프로그램 설명

1. 파일을 실행하면 ben 이미지가 화면 중앙에 나타납니다.
2. 노래가 반복적으로 실행됩니다.
3. ben 이미지를 클릭하면 메시지박스(알림창)이 나타납니다.

소스코드

from tkinter import Tk, Button, Canvas
from PIL import Image, ImageTk
import pygame
import threading
import tkinter.messagebox as messagebox

def display_image(image_path):
    # Tkinter 창 생성 (닫기 버튼 제거)
    root = Tk()
    root.overrideredirect(True)

    # 창을 항상 위에 유지
    root.wm_attributes("-topmost",1)

    # 이미지 열기
    image = Image.open(image_path)
    # 이미지 리사이즈
    resized_image = image.resize((400, 400))

    # Tkinter용 이미지로 변환
    photo = ImageTk.PhotoImage(resized_image)

    # Canvas 생성
    canvas = Canvas(root, width=400, height=400)
    canvas.pack()
    
    # 이미지를 Canvas에 배치 nw(좌측상단 모서리 기준 배치)
    canvas.create_image(0, 0, anchor="nw", image=photo)

    # 창 크기 설정 (화면 중앙으로 배치)
    w=400
    h=400
    x = (root.winfo_screenwidth() - w) // 2
    y = (root.winfo_screenheight() - h) // 2
    root.geometry(f"{w}x{h}+{x}+{y}")


    def play_music(): 
        # 노래 재생
        pygame.mixer.init()
        pygame.mixer.music.load("ben.mp3")
        pygame.mixer.music.play(-1)
    # 노래 재생을 위해 별도의 스레드로 실행
    m_thread = threading.Thread(target=play_music)
    m_thread.start()

    def sh_msgbox(event):
        # 클릭 이벤트 (메시지 박스 표시)
        messagebox.showinfo("BEN","You've Met with a terrible fate haven't you?")
    # Tkinter 창에 클릭 이벤트 바인딩
    root.bind("<Button-1>", sh_msgbox)

    # Tkinter 창 실행
    root.mainloop()

# 이미지 파일 경로
image_path = "ben.webp"
# 이미지 표시
display_image(image_path)

제작 방법

1. cmd창을 열어 ben.py를 exe로 변환합니다.

pyinstaller --onefile --noconsole --add-data "ben.webp;." --add-data "ben.mp3;." ben.py

 

2. 생성된 폴더(dist)에 들어가면 ben.exe파일이 생성됩니다.

 

3. winrar프로그램을 실행하여 3개의 파일을 병합합니다.

3개의 파일을 모두 선택한 후 add를 누릅니다

 

create sfx archive에 체크한 후

 

advanced 탭의 sfx options를 선택합니다

 

update탭에서 위와 같이 설정합니다

 

 

 


ben.sfx.exe가 실행된 화면