2016-07-11 3 views
-1

Ruby on Rails를 사용하여 온라인 축구 (축구) 관리 게임을 만들려고 노력하고 있으며, 상당히 야심 찬 부분이기 때문에 상당히 어려운 부분을 발견하고 있습니다. 나는 기본적인 매치 엔진을 코딩했지만, 전술, 라인업, 포메이션 등에 관해서는 ActiveRecord에서 다양한 데이터를 구성하고 관계를 생성하는 것이 더 어렵다. 리그 및 컵 시스템에도 동일하게 적용됩니다.축구 (축구) 관리 시뮬레이션을위한 데이터 구성

내가 여기에 대한 간략한 개요를 제공하려고합니다 :

  • 국가/클럽이 첫 팀 및 청소년/U21 팀
  • 국가/클럽/팀이 선수
  • A가 들어를 (피라미드 시스템 : 1, 승격, 3 강등)
  • 컵 시스템은 녹아웃 일치 (그리고 때로는 미니 - 클럽/팀이 리그와 컵 시스템에서 다른 사람과 일치합니다.)
  • 리그 시스템은 각 부문에서 3 개의 리그 리그 여분의 시간과 승부 차기를 비롯한 일부 그룹 단계)
  • 리그/컵
  • 라운드/경기 일이있는 각 시즌 라운드/경기 일 경기가 세부 사항을 예를 들어,이
  • 일치가 점수/평점
  • 일치하는 동작이 있습니다. 목표/지원
  • 일치하는 팀마다 전술/라인업이 있습니다. 형성/선수

아이디어를 모델로 구성하는 가장 좋은 방법은 무엇입니까?

편집 : 내가 주로 문제를 겪고있는 것은 선수를 경기 (라인업을 통해)에 연결하는 것입니다. 양팀 모두 11 명의 선수가 있어야한다. 목표는 1 명이며, 외야수/외야수/공격 외야수 위치에 퍼진 나머지 10 명의 외야 선수. 4-4-2 등. 그래서 선수 11은 미드 필드에서, 선수 9는 공격에서, 선수 1은 골짜기에서 등으로 선택 될 수 있습니다. 가능한 포메이션은 3-5-2, 3-4-3, 4-4-4, 2, 4-5-1, 4-3-3 등

여기 내가 사용하려고 해요 스키마의 샘플입니다 :이 작품 같은

create_table "teams", force: :cascade do |t| 
    t.integer "nation_id" 
    ... 
end 

create_table "players", force: :cascade do |t| 
    t.integer "nation_id" 
    t.integer "team_id" 
    ... 
end 

create_table "matches", force: :cascade do |t| 
    t.integer "home_team_id" 
    t.integer "away_team_id" 
    ... 
end 

create_table "lineups", force: :cascade do |t| 
    t.integer "match_id" 
    t.integer "team_id" 
    ... 
end 

create_table "formations", force: :cascade do |t| 
    t.string "name" 
    ... 
end 

create_table "positions", force: :cascade do |t| 
    t.integer "formation_id" 
    t.string "name" 
    ... 
end 

겠습니까 뭔가? 포메이션이나 포지션 테이블이 필요한지, 아니면 심지어 작동하는지 확실하지 않습니다.

+0

이 형식은 너무 광범위하게 보입니다. 저는 SO가 누군가 당신을 위해 데이터 모델을 디자인 할 수있는 곳이라고 생각하지 않습니다. 더 구체적인 질문이 있으십니까? –

+1

죄송합니다. 저는 새롭고 내가 얼마나 구체적 일 수 있는지 알지 못했습니다. 나는 다른 누군가가 나를 위해 모든 일을하기를 원하지 않았다. 괜찮 으면 내 코드를 추가했다. – wildredberry

답변

2

이것은 레일스 질문 그 자체가 아닙니다. 일반적인 모델링 질문입니다. 객체 지향 모델링에 대한 많은 책, 기사 및 자습서가 있어야합니다. 여기에 많은 세부 사항으로가는없이

:

  • 기본적으로, 당신은 또한 당신의 목록을 작성하여 대부분의 작업을했다.
  • 설명에 실재하는 모든 단어는 (후보자) 모델로 연결됩니다. 예 : 국가, 클럽, 팀, 플레이어, 경기, 리그 시스템, 컵, 리그, 디비전, 경기 일 등
  • 상자에 그려 넣으십시오 (멋진 일을하려면 google "UML 클래스 다이어그램"). 이 상자는 app/models/*.rb 파일에 해당합니다.
  • 어떤 종류의 관계 (a.k.a., 연관)가있는 각 상자 사이에 선을 그립니다.
  • '각 플레이어는 0 명 또는 1 명 팀을 보유 할 수 있습니다.', '각 팀은 많은 플레이어를 보유 할 수 있습니다'등의 항목을 몇 개 표시할지 선택합니다. 그러면 has_many, has_onebelongs_to 연관이 있습니다.

결국 실제 Rails 클래스를 갖기엔 너무 사소한 모델을 찾습니다. 예를 들어, "하루"는 클래스에 합당하거나 그렇지 않을 수도 있습니다 (즉, 단순히 일치하는 날짜 속성 일 수 있지만, 그 자체로 더 많은 정보를 연관 시키거나 일치를 계획하려는 경우 이는 계획 단계에서 아직 실제 날짜가없는 당일에 발생하며 그 다음에 진행됩니다. 이 중 많은 부분이 스타일, 의견 및 경험의 문제이므로 여기에 어렵고 빠른 규칙이 없습니다.

에 대한 모델링에 대한 소개는 인 고전 작품 "디자인 패턴"을 확인하십시오.

+0

감사합니다. 예, 목록이 도움이되기를 바랍니다. 내 주요 문제는 형성 및 정렬을 계획하는 방법을 연구하고 있다고 생각합니다. 4-4-2에는 각 포지션에서 수비수/미드 필더/공격자가 있기 때문에 데이터를 모델에 저장하는 좋은 방법을 찾아야합니다. – wildredberry

+0

글쎄, 이런 것들은 "스타일, 의견 및 경험"부분이 들어왔다. 내가 확실하지 않다면, 나는 모든 실질적인 것이 수업 인 것처럼 시작한다. 그래서 당신은'Formation' (기본적으로 이름과 3 개의 숫자 속성 "defender_count", "midfielder_count", "attacker_count")을 저장하는 클래스 Formation을 가지고 있습니다. 관계 클래스'Lineup'은'Formation'과' (이 팀은이 경기에서이 포메이션을 사용합니다). 그런 다음 모델을 잘못 작성했다면 클래스를 제거하고 다른 클래스로 속성을 대체합니다. – AnoE

+0

어떻게 플레이어를 게임에 연결할 수 있는지 궁금합니다. 플레이어 3은 수비를, 선수 7은 미드 필더 등입니다. 이것은 주로 제가 머리를 쓰려고하는 성향입니다 (어떤 모델에서 이름을 짓고 관련 지을 수 있습니다). – wildredberry

관련 문제