Blackjack Game [Project #1] Multiplayer Blackjack Game 블랙잭은 21을넘지않는한도내에서딜러와겨루어숫자가높으면이기는게임 1 딜러 (House) 가자신을포함한참가자전원에게카드두장을나누어주는데, 딜러의카드한장은참가자들에게보이지않는다

Similar documents
Microsoft PowerPoint - [2009] 02.pptx

C프로-3장c03逞풚

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

설계란 무엇인가?

K&R2 Reference Manual 번역본

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

쉽게 풀어쓴 C 프로그래밍

설계란 무엇인가?

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

Microsoft PowerPoint - C++ 5 .pptx

쉽게 풀어쓴 C 프로그래밍

BMP 파일 처리

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

중간고사

C++ Programming

설계란 무엇인가?

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - 05장(함수) [호환 모드]

Microsoft PowerPoint - Java7.pptx

untitled

C++ Programming

080629_CFP °ø°³¿ë.hwp

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

歯9장.PDF

본 강의에 들어가기 전

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

윤성우의 열혈 TCP/IP 소켓 프로그래밍

C 언어 프로그래밊 과제 풀이

2002년 2학기 자료구조

제1장 Unix란 무엇인가?

Çмú´ëȸ¿Ï¼º

2012³â8¿ùÈ£˙ȸš

강의10

chap7.key

2007_2_project4

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap6 [호환 모드]

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

슬라이드 1

슬라이드 1

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

< 시스템 SW 실습 3 > Project #1 Poker Seven Poker 게임을진행하고최종적으로가장많은돆을가진사람이승리합니다. # 공통 rule - Main 함수의순서대로진행 - AI 의 class condition User 가 AI 를참조하는경우 AI 의 ta

<4D F736F F F696E74202D204C BAB8C3E6BCB3B8ED202D20C7C1B7CEB1D7B7A1B9D6C0DBBCBAB0FAC1A42C C F>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

윈도우즈프로그래밍(1)

ePapyrus PDF Document

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

슬라이드 1

Microsoft PowerPoint - 9ÀÏ°_ÂüÁ¶ÀÚ.ppt

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

슬라이드 1

Microsoft PowerPoint - additional01.ppt [호환 모드]

PowerPoint 프레젠테이션

Infinity(∞) Strategy

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제목

금오공대 컴퓨터공학전공 강의자료

untitled

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

Microsoft PowerPoint - CSharp-10-예외처리

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

설계란 무엇인가?

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx


Computer Programming (2008 Fall)

많이 이용하는 라면,햄버그,과자,탄산음료등은 무서운 병을 유발하고 비만의 원인 식품 이다. 8,등겨에 흘려 보낸 영양을 되 찾을 수 있다. 도정과정에서 등겨에 흘려 보낸 영양 많은 쌀눈과 쌀껍질의 영양을 등겨를 물에 우러나게하여 장시간 물에 담가 두어 영양을 되 찾는다

슬라이드 1

EA0015: 컴파일러

Java

Java ...

C++-¿Ïº®Çؼ³10Àå

Motor

C# Programming Guide - Types

Microsoft PowerPoint - Chapter 1-rev

02 C h a p t e r Java

hwp

Chapter_02-3_NativeApp

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

vi 사용법

untitled

PowerPoint Template

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

슬라이드 1

ch15

Programming hwp

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

PowerPoint 프레젠테이션


歯7장.PDF

Transcription:

Blackjack Game [Project #1] Multiplayer Blackjack Game 블랙잭은 21을넘지않는한도내에서딜러와겨루어숫자가높으면이기는게임 1 딜러 (House) 가자신을포함한참가자전원에게카드두장을나누어주는데, 딜러의카드한장은참가자들에게보이지않는다. 1.1 첫카드두장을나누어줄때, Player1 -> Player2 -> House 순서로한장씩나누어주고, 다시한번같은순서로한장씩나누어준다. 1.2 딜러 (House) 가받는첫번째카드는공개되지않는다. (HIDDEN) 1.3 딜러가받은두장의카드가 21이되면, 게임은즉시종료된다. 이경우모든참가자는본인점수와상관없이더이상진행하지못하고게임에서진다. (House Win, All Players Lose) 2 먼저받은카드두장의합이 21에못미치면히트 (Hit) 라고말한뒤한장씩더받을수있고, 멈추려면스탠드 (Stand) 라고말한다. 2.1 이때, 참가자번호의숫자가낮은순서부터본인의카드가버스트 (Bust) 혹은스탠드 (Stand) 될때까지진행한다. 2.2 이전참가자의순서가끝난뒤, 그다음참가자가진행한다. 3 카드의합이딜러보다먼저 21이되거나딜러보다 21에가깝게되면이기고, 카드를더받았는데 21을초과하면버스트 (Bust) 된다. 4 딜러는카드의합이 16 이하면무조건한장을더받아야하고, 17 이상의경우에는멈추어야한다. 5 딜러의카드와합이같으면비긴것이된다. 6 에이스카드는 1이나 11로취급할수있고, 10, J, Q, K는모두 10으로계산한다. 6.1 에이스카드는기본적으로 11로계산한뒤, 카드를더받아 21이초과하는경우에 1로계산한다. 7 모든참가자와딜러가스탠드 (Stand) 혹은버스트 (Bust) 되면게임결과를출력한다. 7.1 참가자와딜러사이의승패를결정하고, 다른참가자들과는독립적이다.

Game Rule Random Seed 와참가자의수를 Command Line Arguments 로받는다. [ 명령인수 ] Random_seed #of Players e. g., 100 4 카드덱의개수는 4로고정한다. (decks = 4) Player1 은사용자입력을받아플레이한다. (interactive mode) 다른 Player 들은다음의규칙을따라 Hit 와 Stand를결정한다. 카드의합이 14 미만일때, 항상 Hit (if sum < 14) 카드의합이 17 초과일때, 항상 Stand (if sum > 17) 카드의합이 14 와 17 사이일때, 1/2 확률로 Hit 혹은 Stand int is_hit = rand() % 2 is_hit == 1 -> Hit, is_hit == 0 -> Stand 초기카드상태는다음과같다. (4 decks) 각한덱은낮은수부터정렬 같은숫자카드는 Clobber(c), Heart(h), Diamond(d), Spade(s) 문양순서로정렬 Ac Ah Ad As 2c 2dh 2d 2s 10c 10h 10d 10s Jc Jh Jd Js Qc Qh Qd Qs Kc Kh Kd Ks Ac Ah Ad As 2c 2dh 2d 2s 10c 10h 10d 10s Jc Jh Jd Js Qc Qh Qd Qs Kc Kh Kd Ks Ac Ah Ad As 2c 2dh 2d 2s 10c 10h 10d 10s Jc Jh Jd Js Qc Qh Qd Qs Kc Kh Kd Ks Ac Ah Ad As 2c 2dh 2d 2s 10c 10h 10d 10s Jc Jh Jd Js Qc Qh Qd Qs Kc Kh Kd Ks Requirements and Considerations Skeleton code 수정가능, 단 rand( ) 함수가있는 statements 수정불가 No errors and warnings Submit your code named StudentID1_StudentID2.cpp or StudentID.cpp in Icampus only (no.zip file, no text field submission) Due data: 2017-09-24(Sun) 11:59 PM

Input / Output 명령인수 (Command line arguments) 로 random seed 와 Player 수를입력받아프로그램실행 ( e.g., 200 4 ) 초기화된카드를한번 shuffle_cards( ) 수행 House 와모든 Player 에게처음카드두장을배포 (draw) 후, 카드정보를출력 이때, House 의첫번째카드는 HIDDEN으로표시 Player1 의 turn 에서사용자의 std 입력으로 Hit 혹은 Stand 를입력받아수행 입력받을때마다카드를출력 (Stand 를입력하거나, Bust 되면다음플레이어 turn)

다른 Player 들은정해둔규칙에따라 Hit, Stand 가결정되고, 각단계를카드정보와함 께출력 모든 Player 들의 turn 후에 House 의첫번째카드를공개하고, Hit 혹은 Stand 수행 각 Player 들의승패여부 (Win, Lose, Draw) 와함께카드를출력 (Game Results)

Output Case Command Line Arguments [Random_seed #_of_players] [100 4] 처음카드 2 장을받았을때, House 가 21 즉시게임종료, All Players Lose

[2 4] Player Bust Bust 된 Player 는항상 Lose

[10 4] 에이스카드는 11 혹은 1 로취급 Player1

[10 2] House Bust vs. Player Bust Player1 Hit, Hit 입력시 House Bust, Player1 Bust Player 가 Bust 인경우, House 의상태와상관없이무조건 Bust

[12 2] Draw Player1 Hit, Stand 입력시 House = Player1 Bust 가아닌상황에서 House 와 Player 의점수가같은경우 Draw

Skeleton Code #include <iostream> #include <cstdlib> #include <vector> #include <string> using namespace std; vector<string> cards; int players; void swap(int i, int j) { auto n = cards[i]; cards[i] = cards[j]; cards[j] = n; string draw_card() { string str = cards.back(); cards.pop_back(); return str; void shuffle_cards() { for (int i = 0; i < 1000; i++) swap(rand() % cards.size(), rand() % cards.size()); int main(int argc, char **argv) { if (argc!= 3) { cout << "Command Line Error!" << endl; exit(0); int decks = 4; int seed = stoi(argv[1]); players = stoi(argv[2]); srand(seed); for (int j = 0; j < decks; j++) { for (int i = 1; i <= 13; i++) { string cardnum; if (i == 1) cardnum = "A"; else if (i == 11) cardnum = "J"; else if (i == 12) cardnum = "Q"; else if (i == 13) cardnum = "K"; else cardnum = to_string(i); cards.push_back(cardnum + "c"); cards.push_back(cardnum + "h"); cards.push_back(cardnum + "d"); cards.push_back(cardnum + "s"); shuffle_cards(); /* Your Code */