티스토리 툴바


http://blog.naver.com/PostView.nhn?blogId=bieraa&logNo=90063970885&categoryNo=0&parentCategoryNo=28&viewDate=&currentPage=2&postListTopCurrentPage=1&from=search

회로도 & 부품 : http://blog.naver.com/bieraa/90084314887

제어코드:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

unsigned char cw[4] = {0x01, 0x02, 0x04, 0x08};
unsigned char ccw[4] = {0x08, 0x04, 0x02, 0x01};
unsigned char button = 0x00;
unsigned char back_button = 0x00;
unsigned char direction = 10;

unsigned char fnd_flag;
unsigned int i=0, j=0, k=0,n=0;
unsigned int count = 0;

void rotate(void);

int main(void){
    DDRA = 0xff;
    DDRB = 0x00;
   
    while(1){
        button = PINB;
       
        if(button != back_button){
            if((button&0x01) == 0x01){
                direction = 0;
            }
            else if((button&0x02) == 0x02){
                direction = 1;j=0;
            }
            else if((button&0x04) == 0x04){
                direction = 2;j=0;
            }
            else if((button&0x08) == 0x08){
                direction = 3;
            }
        }
        rotate();
        back_button = button;
    }
}

void rotate(void){
    if(direction == 0){
        for(i=0;i<4;i++){
            PORTA = cw[i];
            _delay_ms(5);
        }
    }
    if(direction == 1){
        if(j<50){
        for(i=0;i<4;i++){
            PORTA = cw[i];
            _delay_ms(5);
            j++;
        }
        }
    }
    if(direction == 2){
        if(j<50){
        for(i=0;i<4;i++){
            PORTA = ccw[i];
            _delay_ms(5);
            j++;
        }
        }
    }
    if(direction == 3){
        for(i=0;i<4;i++){
            PORTA = ccw[i];
            _delay_ms(5);
        }
    }

}



저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by JamesClifford

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by JamesClifford

이번에는 저번 강좌에 이어서 계속 만들어볼까요??

다시 한번 말씀드리자면.. VB가 없이 그냥 쓰는거라.. 오류가 생길수도.. -_- 이런경우는 코멘트 달아주세요.

먼저 카드를 구성해야 할것같은데..
대충 떠오르는 방법으로는 구조체를 사용하는 방법과 클래스 모듈을 사용하는 방법이 있을거 같네요..
여기서는 클래스모듈을 사용해보도록할께요...

프로젝트 탐색기에서 오른쪽 마우스 클릭! -> 추가 -> 클래스모듈 추가하시면 되구요..
이름은 CLS_Card로 설정하면 됩니다..

'----------------------------
'            CLS_Card.cls
'----------------------------
Public CardType as Integer '//카드의 패를 구성하는 변수
Public CardNumber as Integer '// 카드번호를 구성하는 변수
Public nAttack as Integer '// 공격카드일 경우 값을 지정해줍니다..
Public nPlayer as Integer '// 소유자의 플레이어 번호를 저장합니다.

그리고 플레이어를 구성해볼께요..
플레이어를 효과적으로 관리하기 위해서 클래스 모듈을 하나 만들어보도록하죠..
이름은 Cls_Player으로 설정하시구요..

'----------------------------
'          CLS_Player.cls
'----------------------------
Public Player_Name as String
Public Player_Num as Integer
Public Cards(20) as string '해당 유저가 보유한 카드를 저장할 변수입니다.

사실 변수가 별로 사용되지 않아서 구조체로 구성하는게 나을뻔 하기도 했지만..
다시 타이핑 하기 귀찮으니 그냥 넘어가도록 하죠.. (별 상관없으니까...)



게임을 구동할 폼이름을 FrmMaiN으로 설정하시구요..
PictureBox를 하나 만듭니다..
이름은 PicDraw정도로 해두구요..
Width=800 , Height= 600 정도로 셋팅해줍니다.
PicDraw에 화면을 그려줄거구요.

그리고 임시로 그림을 불러올 공간이 필요할듯 하네요...
이것역시 PictureBox구요..
이름은 Pic1 정도로 설정합니다

음.. DX를 사용할까도 생각했는데 bitblt를 사용해도 괜찮을것 같네요..

'----------------------------
'            FrmMain.frm
'----------------------------

Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, _

    ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, _

    ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

DIM User(5) as New Cls_Player
Dim Cards(100) as New Cls_card
Dim CurrentCard as integer

Dim MaxPlayer as integer

Private sub Form_Load()

'// 카드를 초기화 합니다
Dim Npv as Integer
Dim Npx as Integer
Dim Cnt_Card as Integer
Cnt_Card = 0
Npv = 0
Npx = 0

For Npv = 0 to 3 '// 4개의 패가 있으니까... 0~3까지면 4개겠죠.

'// ◇ - 1101 ♡ - 1102 ♤ - 1103 ♧ - 1104

'// 1부터 9까지의 카드를 초기화 합니다.
For Npx = 1 to 9
Cards(Cnt_Card).CardType =  "110" & Npv
Cards(Cnt_Card).CardNumber =  "100" & Npx
Cnt_Card = Cnt_Card + 1
Next Npx

'// A카드를 초기화합니다
IF Npv = 0 or Npv = 1 or Npv = 3 Then
Cards(Cnt_Card).CardType =  "110" & Npv '// K
Cards(Cnt_Card).CardNumber =  "1001"
Cards(Cnt_Card).nAttack = 3 '// 3장의 공격기회를 가집니다..
Cnt_Card = Cnt_Card + 1

ElseIF Npv = 2 then
'// 스페이드 A
Cards(Cnt_Card).nAttack = 5 '// 5장의 공격기회를 가집니다..
Cnt_Card = Cnt_Card + 1
End IF

'// K Q J 카드를 초기화 합니다
Cards(Cnt_Card).CardType =  "110" & Npv '// K
Cards(Cnt_Card).CardNumber =  "1010"
Cnt_Card = Cnt_Card + 1

Cards(Cnt_Card).CardType =  "110" & Npv '// Q
Cards(Cnt_Card).CardNumber =  "1011"
Cnt_Card = Cnt_Card + 1

Cards(Cnt_Card).CardType =  "110" & Npv '// J
Cards(Cnt_Card).CardNumber =  "1012"
Cnt_Card = Cnt_Card + 1

Next Npv

'// Joker
Cards(Cnt_Card).CardType =  "1105" '// 컬러
Cnt_Card = Cnt_Card + 1
Cards(Cnt_Card).CardType =  "1106" '// 흑백
Cnt_Card = Cnt_Card + 1

'// 플레이어 셋팅.
MaxPlayer = 4

npv = 0
For npv = 0 to MaxPlayer
User(npv).Player_Name = ""
User(npv).Player_Num = Npv

'20 장의 카드를 초기화. 일단 아무것도 없게 만들어야함.
For Npx = 1 to 20
User(npv).Cards(Npx) = ""
next Npx
next Npv

'// 드로우 영역 (PicDraw)를 초기화 합니다..
PicDraw.Cls
PicDraw.AutoRedraw = True

Call Start_GameLogic

End Sub

Private sub Blt(X as Integer, Y as Integer, Path as string)
pic1.cls
Pic1.loadpicture("")

if dir(app.path & "\" & path) = "" then
'파일이 존재하지 않음
Msbox Path & "가 존재하지 않습니다" ,vbinformation,"에러!"
End
else
'파일존재
pic1.loadpicture(app.path & "\" & path)

'그려준다
call Bitblt (Picdraw.hdc, x, y, pic1.width, pic1.height, pic1.hdc,0,0,0)
end if
End Sub

Private Sub Start_GameLogic()
'이 부분의 코딩은 다음강좌에서 계속하도록 하겠습니다.
End Sub
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by JamesClifford
안녕하세요..
자... 이번 강좌는 VB로 원카드게임을 구현해보려고 하는데요!!!!
군대 사이버지식정보방(인터넷방)에서 VB를 사용할 수 없어서...
코드에 문제가 조금 있을수도 있겠네요..
문제 있으면 코멘트 부탁드립니다~~~

먼저 코딩에 들어가기 앞서... 원카드의 룰에 대해서 생각해볼 필요가 있겠지요..

그냥 생각나는데로 적어볼테니 그냥 한번 쭈욱 훑어보세요~

먼저 4개의 패가 있겠지요...
다이아,하트,클로버,스페이드
숫자카드는 2부터 9까지 문자 카드는 K,Q,J,A가 있겠군요..
그리고 조커 2장..


그렇다면 일단 '패'별로 코드를 부여해봅시다
◇ - 1101
♡ - 1102
♤ - 1103
♧ - 1104
컬러조커 - 1105
흑백조커 - 1106

그리고 숫자카드와 문자카드에 코드를 부여해봅시다
A - 1001
2 - 1002
3 - 1003
4 - 1004
5 - 1005
6 - 1006
7 - 1007
8 - 1008
9 - 1009
K - 1010
Q - 1011
J - 1012

자 그러면 게임에서는 아래와 같이 사용해봅시다
패 코드 + 카드 숫자코드
예를들어 카드가 "다이아 3" 이라면 아래와 같이 되겠지요??
1101 1003

네 좋습니다. 이제 게임에서 카드는 이런식으로 코드를 처리하게 하겠습니다...

그러면 이제 게임 진행에 관한 룰을 생각해봅시다..

게임 적정인원은 최대 4명이고...음..
K카드는 같은 패의 카드를 한장더 넣을수 있고...
Q카드는 순서를 바꾸고..
J는 한명점프하고..
아 뭐 대충 그렇군요..
A는 공격카드.. 3장이고..
스페이드 A는 5장 그리고 스페이드 A는 조커를 방어하고..
컬러조커는 15장 흑백조커는 10장..
(물론 아닐수도 있지만 여기서는 이런 룰으로 구현해봅시다..)
같은 패의 카드나 같은 숫자의 카드를 낼수 있고
낼수 있는 카드가 없으면 한장을 먹어야 되고..
같은숫자의 카드를 내면 패가 달라도 패가 바뀌고
숫자 7의 카드를 내면 원하는 패로 바꿀수 있고..

뭐 대충 이정도면 되던가요?? 다른 규칙은 별로 생각나지 않네요..

그러면 다음 강좌부터 실제로 코딩을 해보도록하죠...

- 1부 끝 -
본 강좌의 저작권은 JamesClifford (http://genedigm.com)에게 있으며 무단 복제 및 변형을 금지 합니다..
(링크는 허용)
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by JamesClifford
* Visual Basic 6.0에서 새로 생긴 Visual Basic 5.0 땐 없었던 함수들입니다.



- 대부분의 비주얼 베이직 6.0 책들이 5.0 기준으로 작성된 책들이 많아,



아래 함수들의 설명은 책에서 빠져있는 경우가 대부분입니다.



- 이번 강좌는 비주얼 베이직 6.0에서 새로 생긴 함수들. (즉 비주얼 베이직 5.0 엔 없었던 기본 내장 함수들)을



하나씩 살펴보면서 간단한 예제들을 보도록 해봅시다. 편리한 함수들이 많이 있으므로 참고하세요.



WeekdayName : 해당되는 주의 지정된 요일을 나타내는 문자열을 반환합니다.



- 예) MsgBox WeekdayName(3) ' 1- 일요일, 2- 월요일, 3- 화요일, … 이므로 '화요일' 이 출력된다.



' 주) 영문 윈도우에서는 언어 설정이 영문이므로 Tuesday가 출력된다.



StrReverse : 문자열을 거꾸로 역순으로 바꾸어 반환합니다.



- 예) MsgBox StrReverse("김개똥") ' 똥개김 이 출력된다.



StrConv : 지정된 문자열 형식대로 변환하여 변환된 문자열을 반환합니다.



- 예) StrConv(TargetStr, vbFromUnicode) ' VB에서 취급하는 문자열 형식(BSTR)은 기본적으로 유니코드 형식입니다.



' 이 함수는 그런 유니코드를 ANSI 코드로 바꿔주는 함수입니다.



Split : 문자열을 구분자로 나뉘어서 각 구분자를 사이에 둔 문자열들이 모인



일차원 배열을 만듭니다.



- 예) Split(TargetStr, ",") ' 문자열을 ',' 로 분할하여 배열을 만듭니다.



Join : Split 로 분해한 배열을 다시 구분자를 넣어서 문자열로 만들 때 사용합니다.



- 예) Join(Split(TargetStr, "AAA"), "BBB") ' Replace(TargetStr, "AAA", "BBB")와 같은 효과입니다.



Round : 지정된 소수 자리수로 반올림된 수를 반환합니다.



- 예) Round(3.5, 0) = 4



Replace(문자열, 문자열1, 문자열2) = 문자열에서 문자열1을 찾아 그 부분을 문자열2로 바꿉니다.



- 예) 오른쪽과 같이 하면 'A' 문자를 없앨 수 있습니다. TargetStr = Replace(TargetStr, "A", "")



MonthName : 달 이름을 반환합니다.



- 예) MsgBox MonthName(1) ' 1월



InstrRev : Instr 함수는 Visual Basic 5.0 때부터 있떤 함수로, 지정된 위치에서 혹은, 처음부터 끝까지 첫번째의 '지정된 문자'의



위치를 반환하는 함수입니다. InstrRev는 그것의 역순으로 검색하기 때문에, 끝에부터 찾을 수 있습니다.



- 예)



Dim FilePath As String, ExtSepPos as Long

FilePath = "C:\Work\MyPicture.JPEG"

ExtSepPos = InstrRev(FilePath, ".")

If ExtSepPos Then ' ExtSepPos가 0이 아닌 경우

     MsgBox "확장자는 ." & Mid$(FilePath, ExtSepPos+1) & " 이네요."

Else ' ExtSepPos가 0인 경우

     MsgBox "확장자가 없는 파일입니다."

End If



FormatPercent : 지정된 실수 값을 백분율(%) 값으로 변환합니다.



- 예)



MsgBox FormatPercent(0.3) ' 30.00% (기본값: 소숫점 이하 2자리 (변경 가능))



FormatNumber : 서식화된 숫자로 반환합니다.



- 예) 숫자를 소숫점 4자리까지의 정밀도로 표현해서 반환하는 예제



S = 1.3

MsgBox FormatNumber(S, 4) ' 1.3000



FormatDateTime : 서식화된 날짜 또는 시간으로 반환합니다.



- 예) 날짜(Date()) 함수의 값 (YYYY-MM-DD) 를 간단하게 YYYY년 MM월 DD일 로 고쳐보기.



MsgBox FormatDateTime(Date(), vbLongDate)



FormatCurrency : 시스템 제어판의 통화 기호를 사용하여 서식화된 통화값으로 반환합니다.



- 예) MsgBox FormatCurrency(100) ' \100 출력



Filter : 지정된 문자열 배열에서 지정된 문자열을 포함하는 요소를 모두 뽑아 일차원 배열로 반환합니다.



- 예) 문자열 배열에서 1 이 포함된 모든 요소 뽑기



Dim sArray As Variant, dArray As Variant

sArray = Array("1", "12", "123", "2", "23", "3", "13", "1a", "a1")

dArray = Filter(sArray, "1", True)

Result = ""

For i = 0 to UBound(dArray)

Result = Result & Iif(Result <> "", ",", "") & dArray(i)

Next

MsgBox Result ' 1,12,123,13,1a,a1



CallByName : 개체의 메서드를 실행하거나 개체의 속성을 동적으로 설정하거나 반환합니다.



- 예) 폼의 속성을 동적으로 제어하기



Call CallByName(Me, InputBox("어떤 속성을 제어하고 싶으십니까?"), VbLet, Val(InputBox("어떤 값으로 바꾸고 싶으십니까?")))



크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by JamesClifford

more..

원래 포스팅 하신분 감사합니다, 잘 사용하겠습니다
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by JamesClifford

친절하게 후리가나까지..^^
출처-http://kin.naver.com/detail/detail.php?d1id=13&dir_id=1314&eid=QnthFEtD/cEB39lliXTpROKc3kGdDfjc&qb=qrOqyKrQ

more..

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by JamesClifford
출처 - http://kin.naver.com/detail/detail.php?d1id=3&dir_id=30602&eid=W6Opcw7FhHGnriTnffVv5L/BuO6RiJZw&qb=qrmqw6rI

more..

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by JamesClifford

자주쓰이는 4자성어 모음?! 이라는데.. 장난함? 이걸 다 외우라고?!


more..

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by JamesClifford
히라가나로는 거의 아는것들인데 한자를 모르니... 이거 원.

more..

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by JamesClifford