no image
마인크래프트 스크립트 - 아이템 강화 1
제목마인크래프트 스크립트 - 아이템 강화 1 안녕하세요~ 이번에는 강화 스크립트를 만들어보려고 합니다. 제가 만드는 강화는 먼저 기본 아이템을 0단계 강화할 수 있는 아이템으로 만드는 것 부터 해보려고 합니다. 그리고 npc를 클릭해야지만 이벤트를 실행할 수 있도록 하려고 합니다. :: 목표 :: 기본 아이템을 강화할수있는 아이템으로 만들자 먼저 엔피시를 생성하겠습니다. 간단하게 명령어로 해도 되긴 하지만 하는김에 엔피씨와 GUI를 통해 만들어보겠습니다. 여기까지는 유튜브에 올라온 강좌글만 봐도 알 수 있으니 따로 설명을 적진 않겠습니다. on inventory click: # 무기 변형 창 if iname contains "&2&l무기 변형": if click type is left mouse butt..
2020.03.08
no image
마인크래프트 스크립트 - 아이템 복사 스크립트
제목마인크래프트 스크립트 - 아이템 복사 스크립트 안녕하세요! 이번에는 운영자로써 아이템을 관리하는데 특정한 아이템을 복사하고 싶다면 운영자는 /복사 같은 명령어쯤은 있으면 좋겠죠? 저도 여러가지 실험하면서 필요하다고 느꼈기 때문에 한번 만들어보려고 합니다. :: 목표 :: 아이템을 복사해보자 먼저 복사하려면 손에 아이템을 들고있어야할겁니다. 저는 인벤토리의 모든것을 복사하는게 아닌 특정 아이템을 복사하고싶기 때문에 이렇게 짜보겠습니다. 대충 생각해봤는데 쉽게 되더군요. command /아이템복사: trigger: if player is not op: message "관리자 권한이 필요합니다." else: set {_tool} to player's tool open chest with 1 rows nam..
2020.03.07
no image
마인크래프트 스크립트 - 경험치(exp)를 값으로 얻고 RPG 레벨을 올려보자
마인크래프트 스크립트 - 경험치(exp)를 변수 값으로 얻고 RPG 레벨을 올려보자 안녕하세요~ 닉네임을 바꿔봤어요 ㅎㅎ 여튼 요즘 관심사가 마인크래프트 스크립트에요. 유튜브에서 만두민님하고 장인돌이님 스크립트 강좌를 모두 두번씩 정주행하고 스크립트에 푹 빠졌습니다 ㅋㅋㅋㅋㅋ 그래서 블로그에 스크립트를 연구하는걸 올려보려고 합니다. 오늘의 주제는 경험치인데요. 마인크래프트 경험치를 올리면 RPG 경험치도 올려보는게 목표입니다. 스크립트 다운로드는 제일 아래에 있습니다. 스크립트 경험치에 대한 예문이 나와있네요. 이걸 활용하면 RPG 레벨을 올릴 수 있을것 같습니다. 먼저 플레이어의 레벨과 경험치바의 값을 불러오는 코드를 적어봤습니다. 플레이어의 레벨은 그대로 player's level이고 경험치바를 0에..
2020.03.03
no image
마인크래프트 스크립트 배포, 공유 - 레벨, 경험치를 올리면 RPG 경험치, 레벨도 얻어보자
마인크래프트 스크립트 - 레벨, 경험치를 올리면 RPG 경험치, 레벨도 얻어보자 안녕하세요! 포근한 블로그입니다! 레벨과 경험치 관련해서 연구하는김에 블로그도 써볼겸 오늘 바로 완성한 레벨 스크립트입니다. 마인크래프트 레벨을 올리려고 경험치를 올리면 RPG 경험치도 같이올라 일정 수치(최대경험치)에 도달하면 레벨업을 하는 구조입니다. 연구하면서 만든거라 완성도가 떨어지니 이점 유의해주시고! 다운로드, 수정, 배포 마음대로 하셔도 됩니다~ 반드시 수정해서 사용하시길 바랍니다! 스크립트 다운로드 ▼ 계속 스크립트 관련해서 글을 올릴 예정이니 많이 찾아주시고 정보 공유하실분 팔로우 부탁드릴게요!! ※ 사용법 ※ /초기화: 변수들을 초기화합니다. /RPG경험치최대설정: 최대 경험치를 재설정합니다. /정보: 자신..
2020.03.03
no image
[파이썬] 달력 만들기 import turtle 사용 calendar 없이 만들기
우리 학교 파이썬 수업 과제였습니다 ㅋㅋㅋㅋ 정말 한참 수정할게 많지만 나중에 하는걸로 하고 지금은 백업용으로 올립니다. 나름 리스트에 해당 년도 달력을 전부 넣고 싶어서 고민좀 했습니다. WOD.py # 모듈 import turtle import returnday # 터틀 입력창으로 연도 입력 받기 및 터틀 설정 turtle.title("달력 만들기") turtle.hideturtle() turtle.speed(0) inputYear = int(turtle.numinput("달력 만들기", "표시할 달력의 연도를 입력하시오.")) print("%d" % (inputYear)) print() # 터틀 창 테두리 꾸미기 turtle.penup() turtle.pensize(3) turtle.goto(-45..
2019.11.28
no image
[파이썬] 숫자 맞추기 게임 from random import randint
[파이썬] 숫자 맞추기 게임 from random import randint random 모듈로 1부터 100까지 랜덤 숫자를 불러와서 숫자맞추기 게임을 만들었습니다 시험에 나올줄알았는데 안나오누 ## 숫자 맞추기 게임 from random import randint tries = 0 myNumber = 0 correctNumber = randint(1, 100) print("1부터 100사이의 숫자를 맞추시오") while tries correctNumber: print("정답보다 높습니다!"..
2019.10.23
no image
[파이썬] 숫자를 입력하고 각 자릿수 숫자를 더하는 프로그램
[파이썬] 숫자를 입력하고 각 자릿수 숫자를 더하는 프로그램 ## 각 자릿수를 더하는 프로그램 number = str(input("숫자를 입력하시오 : ")) sum = 0 for i in range(len(number)): sum = sum + int(number[i]) print("입력한 숫자의 각 자릿수를 더한 값 =", sum, end = "\n\n") 숫자를 문자로 받아서 바로 리스트가 되도록하고 range(len(number))로 리스트의 범위만큼 반복되도록하고 더할때는 int로 바꿔서 더했습니다. 뭐 10나누고 하는방법도 있는데 바로 생각난건 이거라서... 꿀잠 ㅎ
2019.10.23
no image
[파이썬] 년, 월, 일 받아서 요일 출력하기 datetime.date
[파이썬] 년, 월, 일 받아서 요일 출력하기 from datetime import date myYear = int(input("연도를 입력하시오 : ")) myMonth = int(input("달을 입력하시오 : ")) myDay = int(input("일을 입력하시오 : ")) def printDayOfTheWeek (year, month, day): dayOfTheWeek = ["월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"] return dayOfTheWeek[date(year, month, day).weekday()] print("%d년 %d월 %d일은 %s 입니다." % (myYear, myMonth, myDay, printDayOfTheWeek(myYea..
2019.10.23
728x90
반응형

 

제목마인크래프트 스크립트 - 아이템 강화 1

 


 

안녕하세요~ 이번에는 강화 스크립트를 만들어보려고 합니다.

제가 만드는 강화는 먼저 기본 아이템을 0단계 강화할 수 있는 아이템으로 만드는 것 부터 해보려고 합니다.

그리고 npc를 클릭해야지만 이벤트를 실행할 수 있도록 하려고 합니다.

 

 

:: 목표 ::

 

기본 아이템을 강화할수있는 아이템으로 만들자

 


 

먼저 엔피시를 생성하겠습니다. 간단하게 명령어로 해도 되긴 하지만 하는김에 엔피씨와 GUI를 통해 만들어보겠습니다.

 

 

여기까지는 유튜브에 올라온 강좌글만 봐도 알 수 있으니 따로 설명을 적진 않겠습니다.

 

on inventory click:
	# 무기 변형 창
    if iname contains "&2&l무기 변형":
        if click type is left mouse button with shift or right mouse button with shift or right mouse button:
            cancel event
        else:
            if clicked raw slot is 0 or 2 or 3 or 5 or 6 or 8:
                cancel event
            else if clicked raw slot is 4:
                cancel event
                if slot 1 of current inventory of player is air:
                    message "[무기대장장이]: 어이! 무기를 올려야지!" to player
                else:
                    set {_w} to slot 1 of current inventory of player
                    delete slot 1 of current inventory of player
                    set slot 7 of current inventory of player to {_w} with lore " " and "&b0단계" and "&e==========" and "&a + 체력 0" and "&c + 공격력 0" and "&9 + 방어력 0" and "&e=========="
                    message "[무기대장장이]: 좋아 무기 변형에 성공했어. 창을 닫기전에 가져가!" to player

 

 

일단 변형에 대해 설명하자면

 

 

위 처럼 기본 칼을

 

 

이렇게 강화수치가 표시되도록 만드는겁니다.

위에 코드 대로라면 되기는 하지만 문제가 있습니다.

 

변형을 하기전에 무기를 올리고 창을 닫거나

변형 후 무기를 얻지 않고 창을 닫을 경우 그대로 아이템이 없어진다는점

 

그리고 무기가 아닌경우도 

 

 

보다시피 된다는점

이경우는 재밌으니 그냥 놔두겠습니다.

어차피 무기와 방어구 모두 저 형식으로 만들거라 상관없을듯합니다.

 

그럼 가장 큰 문제인 창을 닫을 때 아이템이 사라지는것만 해결하면 될듯한데

창을 닫을 때 아이템이 있으면 창을 닫을 수 없게 하면 될듯 합니다.

 

on inventory close:
    if inventory name of current inventory of player contains "&2&l무기 변형":
        message "무기변형창 닫음"
        set {_무기변형1} to slot 1 of current inventory of player
        set {_무기변형2} to slot 7 of current inventory of player
        if {_무기변형1} is not air:
            give 1 of {_무기변형1} to player
        if {_무기변형2} is not air:
            give 1 of {_무기변형2} to player
    else:
        message "다른거 닫음"

 

이렇게 한번 해보겠습니다.

인벤토리를 닫을 때 이름이 무기변형이면 임시변수들에게 각 아이템을 설정하고 공기가 아니면 플레이어에게 준다

 

 

로딩은 완료됐는데 이상한 에러가 뜨네요?

 

 

그리고 아이템을 놓고 창을 닫았는데 아이템은 주지도 않고 제대로 이름도 안뜨네요.

아까 에러를 다시 보겠습니다.

 

[Skript] In 1.13+ you cannot get the title name of an inventory outside of an InventoryClickEvent, Only if this inventory has an InventoryHolder may it be used in this state.

 

구글링해봐도 뭐 안나오네 ㅠ

조금 고민하다 보니까 iname이 있었고 icname이 있었던걸 까먹었습니다.

이거 어떤 애드온 깔아야했던걸로 기억하는데 아래 애드온 전부 설치해보시길 바랍니다...

 

on inventory close:
    if icname contains "&2&l무기 변형":
        set {_무기변형1} to slot 1 of current inventory of player
        set {_무기변형2} to slot 7 of current inventory of player
        if {_무기변형1} is not air:
            give 1 of {_무기변형1} to player
        if {_무기변형2} is not air:
            give 1 of {_무기변형2} to player

 

이렇게 수정을 해주고

 

 

창을 닫으니 잘 들어옵니다. 휴~~ 그런데

실험하다가 생각난건데 give를 통해서 줬는데 만약 피치못할 사정으로 플레이어의 인벤토리가 꽉찼다면?

 

 

이렇게 됐을 때 창을 닫으면 어떻게 될까요?

 

 

예 꿀꺽해버립니다.

우편함 같은걸 만들어서 거기에 지급하는방법이랑 창을 닫지못하게 하는 방법이 있을듯한데

창을 닫으면 다시 열리게 해보았지만 잘 안되더군요

그래서 우편함을 만드는 쪽을 생각해봐야겠습니다.

목표는 달성했으니 이제 강화를 하는 스크립트를 짜봐야겠네요.

 

 

 

 

※ 스크립트 다운로드 ※

 

해당 챕터가 끝나면 올리겠습니다.

 


 

:: 해당 서버에서 사용된 애드온 ::

 

Skript

GomSK

InvSk

GameAPI

HolographicDisplaysAddon

MarSK

QuarSk

SharpSK

SkChoke

Skellett

SkExtras

SkQuery

skRayFall

skript-yaml

SkRPG

SkStuff

skUtilities

TuSKe

Umbaska

Vault

 

만약 코드를 적용했는데 서버에서 에러가 뜨면 애드온 미적용 때문일 확률이 높습니다.

애드온은 아래 사이트에서 대부분 받을 수 있으며 없는 애드온은

아마 한국인 개발자가 만든 애드온일 확률이 높습니다.

구글이나 네이버에 애드온 모음을 검색하면 나와있으니 찾아서 다운로드 하시거나

제 블로그 마인크래프트 항목 처음 글에 다운로드 링크가 걸려있으니 확인하시길 바랍니다.

 

 

 

 

:: 이 글은 원 출처만 남기면 언제든 퍼가고 수정하셔도 좋습니다 ::

 

728x90
반응형
728x90
반응형

 

제목마인크래프트 스크립트 - 아이템 복사 스크립트

 


 

안녕하세요! 이번에는 운영자로써 아이템을 관리하는데

특정한 아이템을 복사하고 싶다면

운영자는 /복사 같은 명령어쯤은 있으면 좋겠죠?

저도 여러가지 실험하면서 필요하다고 느꼈기 때문에 한번 만들어보려고 합니다.

 

:: 목표 ::

 

아이템을 복사해보자

 


 

먼저 복사하려면 손에 아이템을 들고있어야할겁니다.

저는 인벤토리의 모든것을 복사하는게 아닌 특정 아이템을 복사하고싶기 때문에

이렇게 짜보겠습니다. 대충 생각해봤는데 쉽게 되더군요.

 

command /아이템복사:
	trigger:
    	if player is not op:
        	message "관리자 권한이 필요합니다."
        else:
			set {_tool} to player's tool
			open chest with 1 rows named "&0%player% 복사" to player
			wait a tick
			loop 9 times:
				set slot loop-value - 1 of current inventory of player to 64 of {_tool}

 

손에 들고있는 아이템을 {_tool}이라는 임시변수에 넣어서 "&0&l%player% 복사"라는

상자에 해당 아이템을 64개씩 설정하는 코드입니다.

 

신경쓸 구문은

open chest with [행] rows named "[이름]" to player

구문은 행에 해당하는 줄만큼 이름을 가진 상자를 여는데 보통 GUI 창 하면 이 구문을 쓰고

loop [숫자] times: 로 반복문을 적어서 코드를 간단하게 만들면 쉽게 만들 수 있습니다.

또 loop-value - 1을 하는 이유가 상자 칸이 제일 왼쪽 위부터 0에서 시작하기 때문입니다.

그런데 loop-value는 1부터 시작하니 -1을 해주면 됩니다.

 

 

이렇게 겹쳐지지 않는 아이템도 양을 정해서 복사할 수 있으니 좋습니다.

인첸트도 그대로 복사되니까 운영자는 이런 명령어는 있으면 좋겠죠?

 

 

※ 스크립트 다운로드 ※

 

해당 스크립트는 위 코드를 복사하면 됩니다.

따로 파일을 업로드 하지 않겠습니다.

 


 

:: 해당 서버에서 사용된 애드온 ::

 

Skript

GomSK

InvSk

GameAPI

HolographicDisplaysAddon

MarSK

QuarSk

SharpSK

SkChoke

Skellett

SkExtras

SkQuery

skRayFall

skript-yaml

SkRPG

SkStuff

skUtilities

TuSKe

Umbaska

Vault

 

만약 코드를 적용했는데 서버에서 에러가 뜨면 애드온 미적용 때문일 확률이 높습니다.

애드온은 아래 사이트에서 대부분 받을 수 있으며 없는 애드온은

아마 한국인 개발자가 만든 애드온일 확률이 높습니다.

구글이나 네이버에 애드온 모음을 검색하면 나와있으니 찾아서 다운로드 하시거나

제 블로그 마인크래프트 항목 처음 글에 다운로드 링크가 걸려있으니 확인하시길 바랍니다.

 

 

 

 

:: 이 글은 원 출처만 남기면 언제든 퍼가고 수정하셔도 좋습니다 ::

 

 

 

728x90
반응형
728x90
반응형

마인크래프트 스크립트 - 경험치(exp)를 변수 값으로 얻고 RPG 레벨을 올려보자 

 


 

안녕하세요~ 닉네임을 바꿔봤어요 ㅎㅎ

여튼 요즘 관심사가 마인크래프트 스크립트에요.

유튜브에서 만두민님하고 장인돌이님 스크립트 강좌를 모두 두번씩 정주행하고

스크립트에 푹 빠졌습니다 ㅋㅋㅋㅋㅋ

그래서 블로그에 스크립트를 연구하는걸 올려보려고 합니다.

 

오늘의 주제는 경험치인데요.

마인크래프트 경험치를 올리면 RPG 경험치도 올려보는게 목표입니다.

 

스크립트 다운로드는 제일 아래에 있습니다.

 

 

 

스크립트 경험치에 대한 예문이 나와있네요.

이걸 활용하면 RPG 레벨을 올릴 수 있을것 같습니다.

 

 

먼저 플레이어의 레벨과 경험치바의 값을 불러오는 코드를 적어봤습니다.

 

 

플레이어의 레벨은 그대로 player's level이고

경험치바를 0에서 1까지 수치로 나타낸것이 player's level progress이네요.

 

먼저 목표인 마인크래프트 경험치를 얻으면 RPG레벨을 올리는건데

가장 간단하게 마인크래프트 레벨과 RPG 레벨을 동기화 하는 방법이 있으니 한번 해보겠습니다.

 

마인크래프트 레벨이 바뀌면 RPG 레벨 변수 = 마인크래프트 레벨 변수 하는게 가장 쉽겠네요.

on level change를 사용합니다.

 

 

레벨이 바뀌면 RPG 레벨 변수에 마인크래프트 레벨 변수 값을 넣어서 채팅으로 표시가 되는걸 볼 수 있습니다.

굉장히 간단하네요. 이렇게 되면 RPG 레벨 작업은 끝입니다.

완전 RPG 서버고 인챈트를 하지 않을것이다라고 하면 더이상의 작업은 필요없을듯합니다.

 

추가적으로 경험치 바를 바꾸고 싶다면 이런식으로

 

 

 

코드를 저렇게 적고 레벨과 경험치가 0인 상태에서 명령어로 /경험치바 1을 하니까

1레벨업했습니다. 0~1값이니 최댓값을 주면 바로 레벨업을 하네요.

만약 초과인 값을 주면 /경험치바 2를 주면 바로 레벨이 3이 되었습니다.

저렇게 레벨을 올리는 방법도 있네요.

 

 

또 이렇게 경험치를 주는 방법도 있습니다. 이방법은 경험치 포인트 자체를 주는듯하네요.

 

음, 저는 마인크래프트 경험치를 얻으면 RPG 경험치를 올려서 RPG 레벨을 올리고 싶은데

그러면 얻는 경험치의 값을 알아야합니다.

 

구글링하다가 새로운걸 찾았습니다. 어떤 애드온을 추가하면 경험치의 그룹을 달리해서 다르게 얻는 방법도 있나봅니다.

나중에 다뤄보겠습니다.

 

여튼 또 구글링하다가 경험치 포인트를 리턴하는 방법을 찾았습니다.

 

 

정말 애드온이 잘나와서 구문도 쉽게만들어주고 좋네요 ㅎㅎ

그럼 경험치가 바뀌면 얻은 경험치를 저장해야하니 경험치가 바뀌면을 적어야겠죠

 

 

오케이 on experience change를 사용하겠습니다.

 

 

그전에 이런식으로 초기화를 해주겠습니다.

 

 

그리고 위 코드처럼 해주겠습니다.

하다보니 값이 안맞는 오류가나서 wait 1 tick을 주었더니 오류가 해결되었습니다 ㅎㅎ

 

경험치가 바뀌게 되면 현재 경험치 - 이전 경험치를 해서 얻은 경험치를 표시해봤습니다.

얻은 경험치를 얻었?으니 이걸로 RPG 경험치를 얻어보겠습니다.

 

 

먼저 최대경험치를 설정해주고

 

 

레벨업 코드를 넣어주었습니다.

 

 

그리고 on exprerience change 쪽을 한줄 추가해주면 끝!
add {_xp} / 2 to ~

이쪽에 얻은 경험치의 절반을 rpg 경험치로 추가한다라고 썼는데 마음대로 하면 됩니다.

실행하기전에 먼저 경험치를 재설정해줘야합니다.

 

 

처음 코드대로하니 너무 높아서 조금 줄였습니다.

이제 경험치를 얻어봅시다.

 

 

경험치가 얻어짐에 따라 rpg 경험치 포인트가 증가하는걸 볼 수 있습니다.

 

대충 목표는 이뤘습니다! 어느정도 바꾸면 서버에서 쓸만한 스크립트가 되겠죠 ㅎㅎ

열심히 하시길 바라며 다음에 다른 주제로 오겠습니다!

 

 

스크립트 다운로드

 

https://zynar.tistory.com/59

 


 

:: 구문 사용법 출처 ::

https://skriptlang.github.io/Skript/expressions.html

 

 

:: 해당 서버에서 사용된 애드온 ::

 

Skript

GomSK

InvSk

GameAPI

HolographicDisplaysAddon

MarSK

QuarSk

SharpSK

SkChoke

Skellett

SkExtras

SkQuery

skRayFall

skript-yaml

SkRPG

SkStuff

skUtilities

TuSKe

Umbaska

Vault

 

만약 코드를 적용했는데 서버에서 에러가 뜨면 애드온 미적용 때문일 확률이 높습니다.

 

 

 

 

:: 원 출처만 남기면 언제든 퍼가고 수정하셔도 좋습니다. ::

 

728x90
반응형
728x90
반응형

마인크래프트 스크립트 - 레벨, 경험치를 올리면 RPG 경험치, 레벨도 얻어보자 


 

안녕하세요! 포근한 블로그입니다!

레벨과 경험치 관련해서 연구하는김에 블로그도 써볼겸 오늘 바로 완성한 레벨 스크립트입니다.

마인크래프트 레벨을 올리려고 경험치를 올리면 RPG 경험치도 같이올라 일정 수치(최대경험치)에

도달하면 레벨업을 하는 구조입니다.

 

 

연구하면서 만든거라 완성도가 떨어지니 이점 유의해주시고!

다운로드, 수정, 배포 마음대로 하셔도 됩니다~

반드시 수정해서 사용하시길 바랍니다!

 

스크립트 다운로드 ▼

 

Level.sk
0.00MB

 

계속 스크립트 관련해서 글을 올릴 예정이니 많이 찾아주시고 정보 공유하실분 팔로우 부탁드릴게요!!

 


※ 사용법 ※

 

/초기화: 변수들을 초기화합니다.

/RPG경험치최대설정: 최대 경험치를 재설정합니다.

/정보: 자신의 정보를 봅니다.

 

 

※ 설치법 ※

 

먼저 스크립트 플러그인을 다운받아주시고

 

https://docs.skunity.com/downloads/

 

서버를 한번 돌려준 뒤 스크립트 풀더의 또다른 스크립트 풀더에 제가 만든 스크립트를

넣어주시면 됩니다.

 

! 추가 애드온이 필요합니다. !

아래 서버에서 사용된 애드온을 꼭 넣어주셔야 작동합니다.

 

애드온 다운로드 ▼

 

https://drive.google.com/file/d/1uAbgQpvITXYAreR8FWjNzoiCb9ZUz8kQ/view?usp=sharing

 


 

:: 해당 서버에서 사용된 애드온 ::

 

Skript

GomSK

InvSk

GameAPI

HolographicDisplaysAddon

MarSK

QuarSk

SharpSK

SkChoke

Skellett

SkExtras

SkQuery

skRayFall

skript-yaml

SkRPG

SkStuff

skUtilities

TuSKe

Umbaska

Vault

 

만약 코드를 적용했는데 서버에서 에러가 뜨면 애드온 미적용 때문일 확률이 높습니다.

 

 

 

 

:: 이 글은 원 출처만 남기면 언제든 퍼가고 수정하셔도 좋습니다. ::

 

 

728x90
반응형
728x90
반응형

 

 

우리 학교 파이썬 수업 과제였습니다 ㅋㅋㅋㅋ

 

정말 한참 수정할게 많지만 나중에 하는걸로 하고 지금은 백업용으로 올립니다.

 

나름 리스트에 해당 년도 달력을 전부 넣고 싶어서 고민좀 했습니다.

 

WOD.py

# 모듈
import turtle
import returnday

# 터틀 입력창으로 연도 입력 받기 및 터틀 설정
turtle.title("달력 만들기")
turtle.hideturtle()
turtle.speed(0)
inputYear = int(turtle.numinput("달력 만들기", "표시할 달력의 연도를 입력하시오."))
print("%d" % (inputYear))
print()

# 터틀 창 테두리 꾸미기
turtle.penup()
turtle.pensize(3)
turtle.goto(-457, 387)
turtle.pendown()
turtle.forward(910)
turtle.penup()
turtle.right(90)
turtle.forward(95)
turtle.right(90)
turtle.pendown()
turtle.forward(910)
turtle.penup()

# 달력 연도 꾸미기
turtle.penup()
turtle.goto(440, 308)
turtle.pencolor("black")
turtle.write("Calendar %dy" % (inputYear), align = "right", font = ("Bahnschrift", 45, "normal"))

# 일 배열 입력
arrayDay = []

for i in range(12):
    arrayDay.append(list(returnday.month_range(inputYear, i + 1)))


print(arrayDay, end="\n\n")

# 월 영어
arrEngMonth = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

eng_y = 440
indexArrEngMonth = 0

# 월 배열 출력
for i in range(12):
    eng_x = -340
    eng_y -= 220
    for u in range(4):
        if indexArrEngMonth == 12:
            break
        turtle.goto(eng_x,eng_y)
        turtle.pencolor("black")
        turtle.write("%s" % arrEngMonth[indexArrEngMonth], align = "center", font = ("Bahnschrift", 25, "normal"))
        indexArrEngMonth += 1
        
        eng_x += 225

# 월별 일 입력 및 출력
arrayCalendarDay = []
eng_weekOfTheDay = ["S", "M", "T", "W", "T", "F", "S"]
arrColor = ["#930000", "black", "black", "black", "black", "black", "#005A81"]

# 리스트 7 * 7 * 12
for mm in range(12):
    for i in range(7):
        arrayCalendarDay.append([None] * 7)

m = 0
nummm = 0
frist_1 = 1
frist_2 = 2
wod_x = -414
wod_y = 190
wod_x_1 = 0
day_y_1 = 165
y_2 = 0

# 달력 출력
for num in range(12):
    day = 1
    isMonth = arrayDay[num][0]      # 1일이 어느 요일에 있는지
    isDay = arrayDay[num][1]        # 그 달이 며칠까지 있는지
    
    # 4열 출력후 아래로 계속 출력
    if m == 4:
        wod_x = -414
        wod_y -= 218
        day_y_1 -= 218
        m = 0

    # 요일 출력
    for i in range(7):
        arrayCalendarDay[nummm][i] = eng_weekOfTheDay[i]
        turtle.goto(wod_x, wod_y)
        turtle.pencolor(arrColor[i])
        if i == 0:
            wod_x_1 = wod_x
            wod_y_1 = wod_y - 50
        turtle.write("%s" % arrayCalendarDay[nummm][i], align = "right", font = ("Bahnschrift", 10, "normal"))
        wod_x += 26

    # 월 첫 주 먼저 출력
    for i in range(frist_1, frist_1 + 1):
        # 일 당기기
        day_x_1 = wod_x_1 + isMonth * 26
        for u in range(isMonth, 7):
            arrayCalendarDay[i][u] = day
            turtle.goto(day_x_1, day_y_1)
            turtle.pencolor(arrColor[u])
            turtle.write("%d" % arrayCalendarDay[i][u], align = "right", font = ("Bahnschrift", 10, "normal"))
            day_x_1 += 26
            day += 1

    # 그다음 출력
    for i in range(frist_2, frist_2 + 5):
        day_x_2 = wod_x_1
        day_y_2 = wod_y_1

        # 일이 해당 일보다 초과하면 다음으로 넘어감
        for u in range(7):
            if day > isDay:
                break
            arrayCalendarDay[i][u] = day
            day += 1
            turtle.goto(day_x_2, day_y_2)
            turtle.pencolor(arrColor[u])
            turtle.write("%d" % arrayCalendarDay[i][u], align = "right", font = ("Bahnschrift", 10, "normal"))
            
            day_x_2 += 26
        wod_y_1 -= 25

    wod_x += 40
    nummm += 7
    frist_1 += 7
    frist_2 += 7
    m += 1
    
print(arrayCalendarDay)
turtle.done()

# 끝



 

 

returnday.py

def month_range(year, month):
    ins_year = 1
    ins_month = 1

    ins_now_month = 0

    while True:
        now_month = 31

        if ins_month == 4 or ins_month == 6 or ins_month == 9 or ins_month == 11:
            now_month = 30

        elif ins_month == 2:
            if (ins_year % 4 == 0 and ins_year % 100 != 0) or ins_year % 400 == 0:
                now_month = 29

            else:
                now_month = 28

        if ins_year == year and ins_month == month:
            break

        ins_now_month += now_month
        ins_month += 1

        if ins_month > 12:
            ins_month = 1
            ins_year += 1

    
    wodIndex = (1 + ins_now_month) % 7

    return wodIndex, now_month

 

 

근데 교수님께서 인터넷에 있는거 배끼면 0점 준다고 했었음 ㅋㅋㅋ

 

 

 

 

정말 어이없는 곳에서 오류나가지고...

 

아직 멀었네요.

 

 

2020년 달력도 만들 수 있습니다.

 

시간이 된다면

 

공휴일은 전부 빨간색으로 출력하도록 해보려고 합니다.

 

아마 오랫동안 시간이 안될듯 ㅋㅋㅋㅋㅋㅋㅋㅋ

 

 

728x90
반응형
728x90
반응형

 

 

 

[파이썬] 숫자 맞추기 게임 from random import randint

 

random 모듈로 1부터 100까지 랜덤 숫자를 불러와서

 

숫자맞추기 게임을 만들었습니다

 

시험에 나올줄알았는데 안나오누

 

## 숫자 맞추기 게임
from random import randint
tries = 0
myNumber = 0
correctNumber = randint(1, 100)
print("1부터 100사이의 숫자를 맞추시오")
while tries < 10:
    myNumber = int(input("숫자를 입력하시오: "))
    tries += 1
    if myNumber < correctNumber:
        print("정답보다 낮습니다!")
    elif myNumber > correctNumber:
        print("정답보다 높습니다!")
    else:
        break
if myNumber == correctNumber:
    print("정답입니다. 당신의 시도 횟수는 %d입니다." % tries)
else:
    print("실패했습니다. 정답은 %d입니다. 가능한 횟수는 %d입니다." % (correctNumber, tries))

 

728x90
반응형
728x90
반응형

 

 

[파이썬] 숫자를 입력하고 각 자릿수 숫자를 더하는 프로그램

 

## 각 자릿수를 더하는 프로그램
number = str(input("숫자를 입력하시오 : "))
sum = 0
for i in range(len(number)):
    sum = sum + int(number[i])
print("입력한 숫자의 각 자릿수를 더한 값 =", sum, end = "\n\n")

 

숫자를 문자로 받아서 바로 리스트가 되도록하고

 

range(len(number))로 리스트의 범위만큼 반복되도록하고 더할때는 int로 바꿔서 더했습니다.

 

뭐 10나누고 하는방법도 있는데 바로 생각난건 이거라서...

 

 

꿀잠 ㅎ

728x90
반응형
728x90
반응형

 

 

[파이썬] 년, 월, 일 받아서 요일 출력하기

 

from datetime import date
myYear = int(input("연도를 입력하시오 : "))
myMonth = int(input("달을 입력하시오 : "))
myDay = int(input("일을 입력하시오 : "))
def printDayOfTheWeek (year, month, day):
    dayOfTheWeek = ["월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"]
    return dayOfTheWeek[date(year, month, day).weekday()]
print("%d년 %d월 %d일은 %s 입니다." % (myYear, myMonth, myDay, printDayOfTheWeek(myYear, myMonth, myDay)))

 

from datetime import date

 

https://docs.python.org/ko/3/library/datetime.html

 

datetime --- 기본 날짜와 시간 형 — Python 3.7.5 문서

datetime --- 기본 날짜와 시간 형 소스 코드: Lib/datetime.py datetime 모듈은 날짜와 시간을 간단하거나 복잡한 방법으로 조작하는 클래스를 제공합니다. 날짜와 시간 산술이 지원되지만, 구현의 초점은 출력 포매팅과 조작을 위한 효율적인 어트리뷰트 추출입니다. 관련 기능에 대해서는, time과 calendar 모듈도 참조하십시오. 날짜와 시간 객체에는 두 가지 종류가 있습니다: "나이브(naive)"와 "어웨어(aware)". 어

docs.python.org

 

datetime 모듈의 date 객체를 이용했습니다.

 

 

요일을 출력하는게 주 목적 이니까

 

배열을 만들어서 weekday()함수로 인덱스를 뽑아주면 됩니다.

 

 

윤년도 잘 작동합니다.

 

오늘도 꿀잠 ㅋㅋㅋㅋ

728x90
반응형