CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·주식한당 ·아이포니앙 ·MaClien ·방탄소년당 ·일본산당 ·자전거당 ·개발한당 ·이륜차당 ·소시당 ·나스당 ·안드로메당 ·AI당 ·걸그룹당 ·영화본당 ·골프당 ·클다방 ·사과시계당 ·디아블로당 ·패스오브엑자일당 ·가상화폐당 ·노키앙 ·IoT당 ·축구당 ·젬워한당 ·노젓는당 ·창업한당 ·윈폰이당 ·리눅서당 ·육아당 ·소셜게임한당 ·여행을떠난당 ·바다건너당 ·물고기당 ·라즈베리파이당 ·캠핑간당 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·콘솔한당 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·갖고다닌당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·키보드당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·MTG한당 ·소리당 ·적는당 ·방송한당 ·PC튜닝한당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·품앱이당 ·리듬탄당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·VR당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

아무거나질문

위치 파이썬 코드를 실행시키면 창이 닫힙니다. 5

2025-01-14 06:08:09 수정일 : 2025-01-14 06:10:50 59.♡.98.101
오감자샘

과거에 파이썬을 공부하려다가 포기했습니다.

챗 지피티가 간단한 코딩은 해주더라고요.

초등학생들의 수학시간에 사용할 게임을 만들어보고자 시도했습니다.

대략의 게임내용은 루미큐브 형식으로 

초등학생이 나누기를 공부를 할 수 있는 게임입니다.

카드를 15장 가지고 있고, 그 중에 나누어지는 수, 나누는 수, 몫 이 세가지를 한 묶음으로 해서 바닥에 내려놓는 프로그램을 시도했습니다.

15개의 숫자 중에서 세 개를 클릭하면 맞으면 그 세 개의 숫자가 손에 들고 있는 것에서 사라지는 것입니다.

챗지피티에게 위 상황을 설명하였더니  몇가지 수정하더니만 코드를 만들어주었습니다.

그것을 메모장에 붙여서 저장한 다음 실행시키니 보드게임이 실행되는 것이 아니고 바로 창이 사라집니다.

제가 하는 방법으로는 보드게임이 안 만들어지는 건지요? 완전초보라서 어디 물어볼 곳이 없어서 여기에 여쭙습니다.

챗지피티가 불러준 코드는 아래에 첨부합니다.


import random

import time


class FinalizedDivisionRummikub:

    def __init__(self):

        self.deck = self.generate_numbers()

        self.player1_hand = []

        self.player2_hand = []

        self.shared_board = []

        self.turn = 1  # Player 1 starts

        self.no_progress_turns = 0  # Tracks consecutive turns with no progress

        self.init_game()


    def generate_numbers(self):

        # Generate 60 random numbers (decimal and integers)

        return [round(random.uniform(1, 20), 1) for _ in range(60)]


    def deal_cards(self):

        # Deal 15 cards to each player

        self.player1_hand = random.sample(self.deck, 15)

        self.player2_hand = random.sample([num for num in self.deck if num not in self.player1_hand], 15)


    def init_game(self):

        self.deal_cards()

        print("게임 시작!")

        self.play_game()


    def display_state(self):

        print(f"공유 보드: {', '.join(map(str, self.shared_board)) if self.shared_board else '비어있음'}")

        print(f"Player 1 남은 카드: {len(self.player1_hand)}장, Player 2 남은 카드: {len(self.player2_hand)}장\n")


    def is_valid_set(self, dividend, divisor, quotient):

        try:

            return round(dividend / divisor, 2) == round(quotient, 2)

        except ZeroDivisionError:

            return False


    def play_turn(self, player_name, player_hand):

        print(f"{player_name}의 차례입니다. (30초 제한)")

        random.shuffle(player_hand)  # Shuffle the hand to make exploration random

        attempts = 0


        while attempts < 10:  # Limit to 10 attempts for efficiency

            attempts += 1

            if len(player_hand) < 3:

                break

            selected_cards = random.sample(player_hand, 3)

            dividend, divisor, quotient = selected_cards

            if self.is_valid_set(dividend, divisor, quotient):

                self.shared_board.extend([dividend, divisor, quotient])

                print(f"{player_name}가 {dividend}, {divisor}, {quotient}을(를) 배치했습니다!")

                for card in selected_cards:

                    player_hand.remove(card)

                self.no_progress_turns = 0  # Reset no progress counter

                return True  # Progress was made


        print(f"{player_name}가 배치할 수 있는 카드가 없습니다. 턴 종료.")

        return False  # No progress made


    def play_game(self):

        while self.player1_hand and self.player2_hand:

            self.display_state()

            if self.turn == 1:

                if not self.play_turn("Player 1", self.player1_hand):

                    self.no_progress_turns += 1

                self.turn = 2

            else:

                if not self.play_turn("Player 2", self.player2_hand):

                    self.no_progress_turns += 1

                self.turn = 1


            # End game if no progress for 4 consecutive turns

            if self.no_progress_turns >= 4:

                print("양측 모두 진행할 수 있는 조합이 없어 게임을 종료합니다.")

                break


        self.display_state()

        if not self.player1_hand and not self.player2_hand:

            print("양쪽 모두 카드를 모두 사용했습니다! 무승부입니다!")

        else:

            winner = "Player 1" if not self.player1_hand else "Player 2"

            print(f"게임 종료! {winner}가 승리했습니다!")


# Start the finalized game

FinalizedDivisionRummikub()


오감자샘 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [5]
시카고핫도그
IP 104.♡.97.25
01-14 2025-01-14 07:53:59 / 수정일: 2025-01-14 07:56:56
·
그냥 메모장에 넣고 실행시키셨다고요?
파이썬 설치는 되어 있는게 맞나요? 터미널에서 실행 시키신거에요?
메모장 코딩도 못할건 없지만 pycharm 같은 ide를 쓰시는걸 추천드리고 싶네요
아님 주피터 노트북을 검색하시거나 (이게 사용은 더 쉬운데 설치가 좀 더 어려울거에요)
solarstorm
IP 121.♡.31.139
01-14 2025-01-14 08:47:27
·
아예 기초가 없으시면 파이썬 강의 부터 보시고 하시길, 기본적으로 실행 구동 방법은 이해하셔야 하니까요. 유투브에 영상 많으니 검색하셔서 강의 들으시면서 따라하시면 금방 적응하실거요. 그러면서 기본 문법도 익히셔야 지피티 활용 100% 가능합니다.
Chiro
IP 218.♡.69.80
01-14 2025-01-14 08:55:32
·
어떻게 실행시키셨나요? 혹시.. 탐색기에서 .py 파일을 더블클릭하셨다면 커맨드 창이 열리고 거기에서 실행된 다음에 창이 닫히기 때문에 창이 사라져보일 것이긴 합니다.
파일의 가장 아래에 input() 을 추가하시면 창이 바로 닫히지 않기 때문에 결과가 보일 것입니다.

아니면 명령창을 열고 "python filename.py"를 실행하면 됩니다.

단, 이 코드에는 사용자 입력을 받는 부분이 없고 랜덤으로 생성하도록 되어 있으므로 원하시는 목적에 맞지는 않아 보입니다.
전마머꼬
IP 112.♡.1.25
01-14 2025-01-14 09:35:03
·
터미널 프로그램은 터미널에서 실행하시는게 맞습니다.
amollang
IP 14.♡.71.238
01-14 2025-01-14 09:57:54 / 수정일: 2025-01-14 09:58:11
·
pycharm으로 해보셔요
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.