2014.06.11 12:03

펌)비만에 시달리는 지구인

식품회사의 업무는 사람들을 많이 먹게 하는 것이다.

비만이 가난의 상징 같은 것이 된거는 역사상 처음일 거다.

르몽드 디쁠로마틱에서 퍼옴 


http://www.ilemonde.com/news/articleView.html?idxno=1932


비만에 시달리는 지구인
[48호] 2012년 09월 12일 (수) 16:38:38브누아 브레빌  info@ilemonde.com
  
 

식품업계가 흔히 퍼뜨리는 편견이 있다. 비만은 자신의 욕구를 통제하지 못하는 사람들이 걸리는 것이니, 자신의 상태는 자신이 책임져야 한다는 말이다. 이같은 주장은 세계화되고 있는 비만 현상의 원인을 감추는 것이다. 비만의 실오라기를 하나 잡아당기면 이른바 선진사회의 삶 방식에서 모든 실타래가 풀린다.

1985년, 포레스트 데이비스는 용접공 일을 그만두고 '대형 관(棺)' 전문회사 골리앗 카스켓(Goliath Casket)을 창설할 때만 해도, 회사가 이렇게 잘될 줄은 상상하지 못했다. 인구비만율이 채 15%도 안 되는 미국의 대형 관 시장은 걸음마 단계였다. 이후 미국인의 허리둘레는 부쩍 늘었다. 그 덕분에 1980년대 말까지만 해도 연간 대형 관(일반 관의 3배 크기)을 1개밖에 판매하지 못하던 동부 인디애나의 작은 가족 회사에서 판매량이 매월 5개로 증가했다. (중략) 황금으로 도금한 손잡이에 내부를 쿠션으로 채운 다양한 색상의 '사치스러운 관'까지 등장했다. 현재 미국 성인 인구의 3분의 1이 과체중이다. 또 다른 3분의 1은 비만에 시달리고 있어, 미국은 세계 최대의 뚱보 나라 중 하나다.(1)

시장도 이런 새로운 체형에 발 빠르게 대응하고 있다. 기업들은 이같은 현상에 적응하며 '거인'들을 겨냥한 특별 상품을 출시하고 있다. 경기장과 연극관용 대형 소파와 뼈대를 강화시킨 들것, 킹사이즈 매트리스, 그리고 뚱뚱한 독신들을 위한 만남 사이트들도 등장했다.

이를 틈타 기업들은 이른바 살 빼는 약에서부터 군대식 다이어트 캠프(비만캠프), 1만 달러짜리 외과 시술에 이르기까지 다양한 비만 퇴치 프로그램을 소개하며 수천억 달러의 수익을 챙기고 있을 것이다. 비만이나 비만현상을 분석하며 이에 대한 기적의 처방을 소개하는 책들이 봇물을 이루자, <뉴욕타임스>는 별도의 난을 만들어 이런 책들의 판매 순위를 알리고 있다. 한편 미국인들의 체중 증가 원인은, 이들 삶의 패턴이 칼로리 섭취량은 늘고 소비량은 줄어드는 쪽으로 바뀌었기 때문이다.

미국의 라이프스타일은 소비와 기술의 발전을 숭배하고 있어 육체적 비활동을 장려한다. 즉 엘리베이터, 에스컬레이터, 리모컨, 자동 스프링클러, 진공청소기, 세탁기, 세탁건조기, 전동 오프너와 나이프 등이 육체적 활동을 저해한다. 에릭 A. 핑켈슈타인과 로리 주커먼은(2) "이같은 발명품들로 인해 우리는 자신도 모르는 사이에 칼로리(kcal) 양이 줄었다. 예를 들어, 우리가 세탁기로 옷을 빠는 대신 손빨래를 하면 45kcal를 절약한다"고 했다. 기술 진보가 가져다준 해악일까? 미국인은 특정 가사 부담에서 해방되며 시간적 여유가 생겼지만 그 시간을 여가활동을 하는 데 쓰기보다는 주로 TV 시청이나 운전대를 잡는 데 썼다.

도시 삶의 형태는 자동차를 이용하도록 부추기는 면이 있다. 제2차 세계대전 이후 수십 년간, 도시 주민들은 도심의 집값이 상승하자 도시 변두리로 대거 이주했다. 이로 인해 교외 지역이 문어발식으로 개발됐다. 하지만 끝없이 펼쳐진 빌라, 미흡한 보도시설(때론 보도가 아예 없는 곳도 있다), 단조로운 거리 풍경, 잘못 표기된 횡단보도 등 보행자들에겐 교외 지역이 악몽이었다. 대도시를 제외하곤 개발에 걸맞은 대중교통 시설이 갖춰지지 않은데다 한층 멀어진 거리 때문에, 주민들은 일상적으로 자동차를 타고 다닐 수밖에 없었다. 1960년대 이후 교외에서 자동차로 출퇴근하는 인구수는 3배, 자동차 주행거리는 3~5배 증가했다.(3) 미국인은 주당 10시간 이상을 자동차 안에서 보낸다. 이런 비활동시간이 체중을 증가시킨다. 애틀랜타에서 실시한 연구에 따르면, 매일 1시간씩 운전하면 비만일 확률이 6% 높아지고, 매일 반마일씩 걸으면 그 확률이 대략 5% 감소하는 것으로 드러났다.(4) 그러므로 미국에서 가장 드문드문 건설된 25개 주택 단지(즉, 자동차로 이동하는 거리가 가장 긴)에 거주하는 주민의 체중이, 또 다른 25개 주택 단지나 최대 주택 밀집 지역에 거주하는 주민의 체중보다 6파운드(2.7kg) 더 나간다고 해서 놀랄 일도 아니다.(5)

하지만 미국인이 주당 40시간씩 스크린(텔레비전, 컴퓨터, 비디오게임 등) 앞에서 보낸다는 것을 감안하면, 운전하는 시간 때문에 운동할 시간을 내지 못한다는 것은 가당치않은 말이다.(6) 아침부터 저녁까지 켜져 있는 TV는 미국 가정의 중요한 요소가 됐다. 그래서 미국 일반 가정의 TV 보유 대수는 가족 수보다 더 많다(2.9 대 2.57). 예컨대 TV가 덜 움직이고 많이 먹게 하는 징검다리 구실을 하고 있다. 집 안에 틀어박혀 지내는 삶이 TV 애청자들을 군것질로 내몰고, 봇물을 이루는 TV 광고가 이들(특히 청소년층)의 식습관을 과식으로 유도하는 것이다.

그래서 푸드 시장은, 우리 몸이 요구하는 것보다 더 많은 양을 우리에게 먹일 수 있다는 진단을 제기했다. 물론 이들의 주장을 뒷받침해줄 만한 명확한 근거는 없다. 하지만 불필요한 유행 셔츠나 최신형 휴대전화도 구입하는데, 자신의 의지에 따라 건강을 담보로 신체기관이 필요로 하는 양보다 많은 칼로리를 섭취할 수 있는 것 아닐까? 예컨대, 사람의 신진대사는 음식을 인구성장과 연동시켜 서서히 성장하는 시장으로 만들어야 했다. 그러나 1970년 하루 권장량 2200kcal를 섭취하던 미국인이, 40년이 지난 지금 2700kcal를 섭취하고 있다.

국민 비만을 조장하는 미국의 임금정책

농산물 가공 산업은 수익을 늘리기 위해 자연적인 인구성장의 틀을 깼다. 이들은 상점에 수많은 신상품들을 채워 신상품에 대한 소비자들의 욕구를 끝없이 자극했다. 1990년~2000년대 말, 슈퍼마켓 진열장에 등장한 신상품은 11만6천 개를 웃돌았다. 이런 '공급의 다양화' 때문에 건축가의 창의력이 요구되는 곳이 미국 식료품 가게의 음료 진열대이다. 반짝반짝 빛나는 강장음료, 포도 향이나 산딸기 향이 첨가된 음료, 6개들이 세트를 얼음 팩에 담아 팔거나 '레게의 전설' 밥 말리의 이미지를 부착해 판매하는 캔음료가 진열되어 있다. 온갖 맛을 내는 탄산음료와 체리·레몬(녹색이나 노란색)·바닐라 맛을 내거나, 설탕과 카페인이 첨가되어 있지 않은 이른바 코카콜라의 변형 음료, 반투명 주스, 과즙을 첨가하거나 뺀 주스, 무공해 주스, '과일에서 추출한' 주스 등으로 진열대가 채워져 있다. 이런 전략은 대박 효과를 냈다. 1970년 미국인의 1인당 연간 탄산음료 소비량은 85ℓ였다. 그 후 1980년엔 135ℓ로, 그리고 현재는 178ℓ로 증가했다.

포장·보존·유통 방식이 고도화된 덕분에 가공식품, 특히 고칼로리 가공식품 가격이 중요한 영양소(미네랄, 비타민 등)가 함유된 신선한 농산물 가격보다 쌌다. 이를테면 1달러로 감자칩을 사 먹으면 당근을 사 먹는 것보다 더 배불리 먹을 수 있었다. 만약 모든 미국인이 정부의 '식이요법 충고'에 따라 칼륨·비타민D·칼슘의 섭취량을 늘리고, 가공식품에 설탕과 소금이 든 불포화지방의 섭취를 줄인다면, 미국인은 연간 1인당 400달러를 더 지출해야 한다.(7)

미국의 임금정책이 빈곤층을 비만으로 내몰고 있다. 빈곤층의 가계 지출 내역을 살펴보면, 이들은 주로 칼로리는 높고 영양소는 적은 식품을 소비하고 있어 가장 먼저 비만의 희생자가 될 수밖에 없었다. 2011년 7월 7일자 <월스트리트 저널>에 따르면, 연간 소득이 1만5천 달러 미만인 성인 중 3분의 1이 비만에 시달리는 데 반해, 연간 소득이 5만 달러 이상인 성인의 비만율은 24.6%에 그쳤다. 따라서 라틴계나 아프리카계 등의 소수민족 비중이 큰 미국의 최대 취약 주- 앨라배마, 테네시, 텍사스, 켄터키, 루이지애나 등- 에서 과체중과 비만에 시달리는 사람들이 많이 발견된다.

상품 가격의 하락은 단지 빈곤층과 식품 간의 관계만 역전(결핍에서 과다섭취로)시킨 것이 아니라, 시장경제의 상황까지 뒤흔들어놨다. 이제 가격에서 식품 자체가 차지하는 부분은 미비한 반면, 포장 및 홍보 그리고 콘셉트 비용이 가격의 대부분을 차지한다. 그러다 보니 같은 크기의 용기에 대용량을 담아 판매할 때 이득이 컸다. 예를 들어 월마트는 321g들이 땅콩과 캐러멜 초콜릿바 1봉지를 3.58달러에 판매하는 데 반해, 1100g들이는 8.98달러에 판매한다. 3배 밑도는 가격에 4배 가까운 용량을 담아 파는 것이다. 대부분의 고객, 특히 극빈층은 가격 혜택을 누리기 위해 후자를 선택한다. 거의 모든 상품에 이런 마케팅이 사용되어 우유는 리터보다는 갤런으로, 감자칩은 패밀리용으로 포장된 상품을, 체다 치즈는 진공 포장된 500g짜리를 구입하는 것이 항상 유리하다.

패스트푸드의 '슈퍼 사이즈' 전략

사람들이 경제 논리가 생태적 정언 명령(환경보호)과 공조하는 것이니 희소식이 아니냐는 반응을 보일 수도 있다. 물론 그럴 수 있으나, 영양학자 매리언 네슬은 "우리 머릿속에 있는 뭔가는, 우리 앞에 음식이 많이 놓여 있을수록 우리로 하여금 더 많이 먹게 만든다"며 반박했다.(8) 바바라 롤스 펜실베이니아대학 교수도 실험을 통해 이 사실을 입증했다. 그는 평소 자신의 몸매에 관심이 많은 날씬한 젊은이들을 상대로 실험을 했다. 그들에게 매일 서로 다른 용량의 치즈 마카로니를 제공한 후, 하루 섭취량을 쟀다. 그들은 치즈 마카로니 450g을 제공하면 280g을, 700g을 제공하면 425g을 먹어치움으로써 전날 저녁 자신들이 먹고 흡족해했던 용량의 절반 이상(143g)을 더 먹어치웠다. 또한 대·소형 팝콘을 가지고 영화관에서 진행한 실험, 직원들의 눈에 띄는 곳에 케이크를 놓고 직원들의 먹성을 실험한 사무실에서도 결과는 마찬가지였다.

  
 

이런 인간 심리에 정통한 패스트푸드 체인점들은 '슈퍼 사이즈' 전략을 세웠다. 고객은 몇 달러(하지만 효과 만점인)만 더 내면 '사이즈 업'한 메뉴와 음료, 고기 한 점이 더 들어간 햄버거, 감자튀김을 더블 사이즈로 먹을 수 있다. 모든 식당이 소비자들의 새로운 기대 심리를 충족시키기 위해 패스트푸드점이 제공하는 음식량을 따라가며, 식당의 '표준' 사이즈도 덩달아 커졌다. 40년 전만 해도, 맥도널드는 오직 0.2ℓ들이 단일 사이즈 음료만 팔았다. 하지만 현재는 가장 작은 사이즈가 0.35ℓ, 가장 큰 사이즈는 1ℓ에 달한다. 당시 판매되던 성인용 햄버거는 이제 어린이용으로 제공되고 있고, 성인들은 그것을 간식으로 먹는다. 슈퍼마켓보다 패스트푸드가 5배 더 많은 나라에서, 이런 변화는 응당 비만 확산에 영향을 미치고 있다.

더구나 광고를 통해 소비자들, 특히 어린이들에게 고칼로리 음식을 먹는 즐거움을 계속해서 상기시킨다. 미국의 가난한 사람들과 청소년들이 광고 시장의 표적이 되고 있다. 오랜 기간 음식 소비는 절대적으로 부모들의 소관이었다. 대부분 부모의 구매력 증가와, 자녀의 욕망에 대한 부모의 시각 변화는 어린이들을 완전한 소비자로 만들었다. 전 텍사스 농업기술대학의 교수이자 '어린이 마케팅의 교황'으로 불리는 제임스 맥닐은 <뉴욕타임스>(2011년 4월 20일)에서 "어린이들이, 그 주변인들이 한 해 구입하는 식품과 음료의 8% 이상을 좌지우지하며, 이를 액수로 환산하면 1천만 달러에 해당한다"고 했다.

그래서 광고는 어린이들의 비위에 맞추기 위해 애쓴다. 미국 어린이는 한 해 평균 2만5천 건의 광고에 노출되고, 이 중 5천 건이 식품 광고다.(9) 청소년의 관심을 끌기 위해 특별히 제작된 광고들은 제품과 청소년 간에 끈끈한 관계를 형성할 목적으로 주로 청소년에게 친숙한 인물을 광고에 기용한다.(10) 따라서 미국 애니메이션 <스펀지 밥>은 크래프트 치즈 마카로니를 비롯해 브라이어즈 아이스크림, 허시 초콜릿바 등의 광고를 하고 있다. 그래도 '광고의 천재'들은, 3살 미만 어린이 프로그램에는 다양한 피부색의 스타 정령들이 출연하는 '텔레토비'까지 이용하지 않았다.

그러나 몇 년 전부터 소비자 단체들이 이 광고 기법을 비난하자, 다국적 농수산물 기업들은 새로운 미디어를 공략하고 있다. 이 기업들은 온라인상에서 스마트폰용 애플리케이션으로 전자 퀴즈를 제공한다. 이들은 인터넷과 휴대전화로 여태껏 한 번도 경험하지 못한 신대륙을 발견한 것이다. 게다가 이런 광고는 규제도 힘들다. 그 어떤 법도 어린이가 페이스북에서 로널드 맥도널드와 '친구'가 되거나, 어린이를 대상으로 한 귀여운 꿀벌 캐릭터 게임 사이트(honeydefender.com)에서 수시간씩 머물며 꿀을 딴다고 해서 막을 수는 없다. 또 맥도널드가 운영하는 맥월드 닷컴(McWorld.com)에서 어린이들이 '스펀지 밥'과 그림 그리는 것을 막을 수 없다.

식품업계의 공격적 관행 앞에서 정부는 오랫동안 뒷짐만 지고 있었다. 그러는 사이 2011년, 정크푸드 시장은 거대 공룡이 됐다. <파이낸셜 타임스>(2012년 6월 9~10일)가 발표한 수치에 따르면 피자와 패스트푸드의 세계 총매출액이 7060억 달러에 달하며, 유명 브랜드들은 자사 이익을 위해 광고에 막대한 자금을 쏟아붓는다고 한다. 그러나 이 관행에 서서히 고삐가 조이고 있다. 비만율이 높아지고, 이로 인해 발생되는 문제들(우울증, 차별, 건강 위험, 생산성 손실 등)이 사회 전체를 불안하게 만들고 있다. 한 해 비만으로 사망하는 인구가 20만 명에 달해- 흡연으로 사망하는 인구(40만 명 이상)보다는 적지만, 알코올이나 교통사고로 사망하는 인구보단 훨씬 많아- 비만은 '피할 수 있는 사망' 원인 중 2위에 올라 있다. 비만 관련 질병들(제2형 당뇨병, 심혈관 질환, 고혈압, 동맥경화, 폐색전증, 콜레스테롤, 암 등)로 인해 매년 발생하는 추가 의료비가 1470억 달러(대략 총의료비의 10%에 달한다)에 이른다. 이 중 618억 달러를 미국 의료 협회, 메디케어&메디케이드가 직접 부담하고 있다.(11)

"적당히 살찐 모습은 성공의 표시"

최근 연방정부는 청소년 체육활동 활성화, 제품의 영양가를 보장하는 라벨 제작, 학교 안에 탄산음료 반입 금지 등 비만 예방 프로그램을 늘리고 있다. 지역, 주, 시로 갈수록 엄격한 법률을 도입하고 있다. 예를 들어, 2010년부터 캘리포니아를 비롯한 메인·오리건·뉴저지 주(州) 등은 패스트푸드점에 제품의 칼로리 표기를 의무화했다. 지난 5월 뉴욕시는 식당, 영화관, 경기장 내에서 설탕 든 슈퍼사이즈 청량음료는 판매를 금지시켰다.

2010년 연례 보고서에 따르면, 기업의 미래 수익과 물 부족, 세계경제 위기, 그리고 기후변화 등에 영향을 미칠 수 있는 30가지 조항이 담긴 미국 법률을 가장 잘 지키지 않는 기업은 코카콜라사로 밝혀졌다. 그래서 다국적기업은 자신들의 장래를 위해 미국보다 (음료 시장의) 포화상태가 덜하고, 특히 통제가 덜한 새로운 시장 쪽으로 눈길을 돌리고 있다.

한때 비만은 서양과 페르시아만 국가의 전유물이었다. 그런데 이젠 모든 신흥국가를 덮치고 있다. 개인의 체중이 마치 국내총생산(GDP)의 성장과 연동해 움직이는 것처럼 보인다. 성인비만율이 30%에 달하는 멕시코는 남아프리카공화국(18.1%)과 브라질(13.9%)의 성인비만율을 앞지르며 불량학생의 표본이 되고 있다. 물론 인도와 중국도 예외는 아니다. 경제발전은 도시화, 기계화, 식품의 산업화, 대형 유통기업을 등장시켰다. 경제발전이 미국인의 라이프스타일을 바꿔놓았는데, 인도·중국인들도 점차 미국 체제에 적응했다. 예를 들어 인도 전체 인구 중 도시민이 채 30년도 안 돼 23%에서 31%로 증가했다. 예전엔 농촌에 거주하던 수천만 명의 인도 육체노동자들이 그 지역에서 나는 식품으로 그럭저럭 끼니를 때웠지만, 이젠 이들이 점차 대량 소비에 맛들이고 있다. 자동차, TV, 세탁기가 집 안에만 틀어박혀 지내는 생활을 확산시키고 있다. 냉장고, 슈퍼마켓, 가공식품, 포장식품, 냉동식품 등 주로 수입품이 대도시를 점령하고 있다. 대형 유통업계의 매출이 매년 270만 달러 이상 증가하는 것으로 추정한다. 15년 전 라틴아메리카에서 그랬듯, 인도의 모든 식품 구매가 대형 할인마켓에서 이뤄지고 있다. 이들의 시장점유율이 1990년 15%에서 2000년 60%까지 치솟았다.(12)

패스트푸드 체인점은 신흥국에서 미국과 유럽의 전략과 제조법을 지속적으로 썼다. 이들은 단지 소스만 현지 취향에 맞췄다. 예를 들어, 인도 시장을 공략할 땐 광고 등장인물을 할리우드나 농구 스타에서 볼리우드(인도의 뭄바이를 중심으로 하는 힌디어 영화 산업을 일컫는 말) 스타나 크리켓 선수들로 교체했다. 힌두교도가 80%를 웃도는 국가라 맥도널드의 유명 햄버거 '빅맥'에 대한 반응이 시큰둥하자, 맥도널드는 인도인의 입맛에 맞춘 마하라자 치킨버거를 출시했다. 도미노피자는 페페로니와 스테이크 피자를 없애고, 대신 파프리카와 양고기 피자를 출시했다. 현지 패스트푸드 체인점들(Moti Mahal, Nahus Sweets, Sagar Ratna 등)은 연간 25~30%(13)의 신장세를 보이는 패스트푸드 시장에서 거대 미국 기업들을 상대로 매출 경쟁을 벌이고 있다. 2011년 켄터키프라이드치킨, 타코벨, 피자헛을 보유한 미국의 세계적 패스트푸드 외식업체 얌브랜드(Yum Brands)는, 2015년 전까지 인도에 지점을 1천 개 더 오픈하겠다고 발표했다. 하지만 이 정도는 중국에 대한 투자에 비하면 하찮다. 향후 중국에 2만 개 지점을 열 계획이기 때문이다.

인도와 중국의 비만 인구는 아직은 제한적이긴 하지만, 지속적으로 과체중 인구가 증가해 비만율이 벌써 상당한 수준에 도달했다. 인도 성인의 15%가 비만이며, 특히 여성 비만율이 더 높다. 일부 대도시(첸나이, 자이푸르, 델리, 뭄바이, 콜카타)에선 비만율이 30%, 심지어 40%에 달한다.(14) 중국에선 개인 병원들이 미국 다이어트 캠프를 본뜬 다이어트 프로그램을 고가로 운영하고 있다. 이 병원들을 찾는 성인 고객 중 30%가 과체중이며, 이 중 12%는 비만 판정을 받고 있다.(15) 중국에선 한 해 600만~1천만 명이 비만에 걸리고 있지만, 정부 차원에서 운영하는 비만 예방 프로그램은 아직 없다. 복지부에 근무하는 전문 영양학자 첸 추밍은 "사람들에게 햄버거나 고칼로리 음식을 먹지 말라고 당부하면, 그들은 '이젠 나도 돈이 있으니 내가 원하는 것은 뭐든 먹겠다'고 한다"며 자신도 어쩔 수 없다고 했다.(16)

일부 국가의 서민들은 빈부 차이와 농촌과 도시 간 간극 때문에 영양 섭취하는 데 이중고를 겪고 있다. 시골에선 음식이 귀하고 비싸서 농민들이 영양실조에 걸리는 데 반해, 식품산업이 넘치는 도시에선 중산층들이 외출·오락·소비를 즐기며 고칼로리 음식을 섭취하는 것이다. 니제르에선 도시 주민의 30%가 과체중인 데 반해, 시골 주민의 20%는 영향 결핍에 시달리고 있다. 나미비아공화국 대 인도는 각각 40% 대 18%, 25% 대 50%로 나타났다. 서방국가 대부분에서 실패했던 논리가 신흥국가에선 통한 것이다. 그래서 부자들은 뚱보가 되고 가난한 자들은 메말라갔다. 첸나이에서는 과체중이 거의 성공의 상징이 돼버렸다. 이 도시의 패스트푸드점은 한때 자사 상품 광고에, '당신은 비만이십니까? 축하합니다!'란 광고문구를 썼다. 거의 2명당 1명꼴로 에이즈, '피골이 상접하는 질병'에 감염되고 있는 일부 아프리카 마을에서 과체중은 심지어 개인의 양호한 건강 상태를 증명해주는 평가 기준이 되고 있다.

하지만 비만과 영양실조는 도시와 농촌 사이를 갈라놓을 수도 없고, 부자와 빈곤층 사이도 갈라놓을 수 없다. 비만과 영양실조가 같은 사회집단, 같은 지역, 같은 집안 내에 공존하기 때문이다. 레바논의 팔레스타인 난민이나 페루의 농민, 브라질 빈민가나 말리와 세네갈의 일부 대도시 주민들의 경우가 좋은 예다.

이런 공존은 세대 간 식이요법의 차이와 단절에서 비롯된다. 유년 시절 영양실조에 시달리던 사람은 신진대사가 바뀌어 지방을 축척하는 경향이 있다. 만약 이런 사람이 성인이 되어서 고칼로리 음식을 섭취한다면, 여전히 철분이나 비타민이 결핍되어 급히 살이 찌게 된다. 또 이들의 자녀는 영양실조에 시달리며, 키도 작고 빈혈에 걸릴 수 있다. 그래서 이집트는 구루병 걸린 아이들의 12%가 비만인 어머니를 두고 있다.(17)

세계적 차원에서 볼 때, 과체중 인구(대략 15억 명에 달하며, 이 중 5억 명은 비만이다)는 영양실조에 시달리는 인구(대략 10억 명)를 웃돌고 있다.(18) 유럽과 미국이 비만 퇴치에 나선 가운데, 많은 국가들이 아직 행동을 취하지 않고 있다. 한편 미국 정부가 '30가지 재앙 목록'을 담은 법안을 발표하자, 코카콜라사는 벌써 "비만과 여타 의학적인 문제들이 일부 자사 제품의 수요를 감소시킬 것"이라며 볼멘소리를 내고 있다.

글/브누와 브레빌 Benoît Bréville 작가.

번역/조은섭 chosub@ilemonde.com

(1) 세계보건기구(WHO)의 진단 기준에 따르면 체질량지수가 25kg/㎡ 미만이면 과체중으로, 30kg/㎡ 이상이면 비만으로 진단한다.
(2) Eric A. Finkelstein, Laurie Zuckerman, <The Fattening of America. How the Economy Makes Us Fat, If It Matters, and What to Do About It>, John Wiley & Sons, Hoboken (New Jersey), 2008.
(3) Amanda Spake, <Building Illness>, U.S. News & World Report, 2005년 6월 20일.
(4) Lawrence D. Frank, Martin A. Andersen, Thomas L. Schmid, <Obesity relationships with community design, physical activity and time spent in car>, American Journal of Preventive Medicine, 2004.
(5) Reid Ewing et al., <Relationship between urban sprawl and physical activity, obesity and morbity>, American Journal of Health Promotion, 2003년 9월.
(6) State of the Media, <Consumer Usage Report 2011>, Nielsen Media Research, 2012.
(7) Marion Nestle, <Does it really cost more to buy healthy food?>, www.foodpolitics.com, 2011년 8월 5일. 
(8) Amanda Spake, <A fat nation>, U.S. News & World Report, 2002년 8월 19일. 
(9) <Children’s Exposure to TV Advertising in 1977 and 2004>, Federal Trade Commission, 2007년 6월 1일. 
(10) 폴 모레라, ‘광고 때문에 병드는 아이들’, <르몽드 디플로마티크>, 1995년 9월호.
(11) <Fas in Fat, How obesity Threatens America’s Future 2010>, Trust for America’s Health/Robert Wood Johnson Foundation, 2010년 6월. 
(12) Barry Popkind, <The World is Fat: The Fads, Trends, Policies and Products That are Fattening the Human Race>, Avery, New York, 2009.
(13) Jason Overdorf, <India, the next Fast Food Nation?>, Global Public Square, CNN.com Blogs, 2011년 10월 25일. 
(14) Sanjay Kalra, AG Unnikrishnan, <Obesity in India, The weight of the nation>, Journal of Medical Nutrition & Nutraceuticals, vol.1, n°1, 2012. 
(15) <30 percent of Chinese adults overweighted>, People’s Daily Online, 2012년 3월 22일. 
(16) Calum McLeod, ‘China wrestles with growing obesity’, <USA Today>, 2008년 12월 20일. 
(17) ‘Arab diets, feast and famine’, <The Economist>, 2012년 3월 3일. 
(18) Boyd A. Swinburn et al., ‘The global obesity pandemic, shaped global drivers and local environments’, <The Lancet>, vol.378, n°9793, 2011년 8월 27일.


저작자 표시
신고
Trackback 2 Comment 0
2014.05.22 17:50

10대들을 위한 파이선 게임 프로그램 시작하기

파이선으로 놀기 .. 1편


0.1 로 진입하다. 토끼의 회전까지..(2013.8.17)

이 글은 버전 0.0 이다. 당분간 계속 덧붙여 나갈 것이다. 오늘은 시작만

0.2로 진입하기 (해가 바뀌어 2014.5.21) 9개월 정도 방치

0.3 으로 진입 8 9장만 남음  (5.23)

밑의 글에도 잠시 적기는 했지만 파이선으로 만든 프로그램이 인터랙티브하게 돌아야 할 이유는 많다,

파이선은 빠른 프로토타입이나 리버스 엔지니어링에 좋다고 한다. 쉽게 말하면 나같이 게으른 사람을 위해 만든 언어라고 보아도 좋다. 

문제는 이제 이걸로 무엇인가를 해야 하는데 몇가지의 장벽이 있다. 

0.5 로 진입 (5.23 저녁)  초벌 번역 끝

예제분석을  준비중이다. 


하나는 기계와 다이렉트 io 하는 부분이 약하다는 것이다. c 나 다른 언어로 무엇인가를 해주어야 한다.

펑셔널 어프로치가 아쉽다는 점... 이부분은 람다로 어느 정도 극복 가능하고 정 안되면 리스프나 스킴 인터프리터를 내재해도 된다.

그래픽이나 사운드같은 것이 잘 안된다는 점 .. 이부분을 pygame 같은 것으로 만들어서 놀면 된다는..


오늘은 그래서 파이선 게임을 만드는 예제를 한번 차분하게 번역을 해보기로 했다.

Beginning Game Programming for Teens with Python



글의 제목은 10대들을 위한 파이선 게임 프로그램 시작하기 정도로 번역할 수 있겠다. 더 좋은 이름이 있으면 제게 알려주면 이름을 고치겠다. 


에서 볼수 있다.

그럼 조금씩 시작해 보자.

---------------------------------------

이 글은 튜토리얼 팀 멤버인  줄리안 메이어 , 13 세 파이썬 개발자가 적었다.    와 Twitter 에서 찾을수 있다.

비디오 게임을 만드는 방법이 대다한 것이라고 생각할지도 모르지만 그다지  복잡하지 않다!

이 튜토리얼에서  토끼와 오소리라는 간단한 게임을 만들 것이다. 여기서 히어로인 토끼는 오소리떼의 공격에서 성을 방어할 것이다.


이 게임을 작성하려면, 당신은 파이썬을 사용하게 된다.  큰 뱀 얘기가 아니다! :]

파이썬은 컴퓨터 프로그래밍 언어다. 파이선을 사용하는 이유는  시작하기 간단한 언어이고, 재미 있고 쉽게 배울 수 있기 때문이다.


파이썬을 잘 모르는 경우,  시작하기 전에  파이썬 생각하기 : 컴퓨터 과학자처럼 생각하 를 일어보자. 속도가 올라갈 것이다

이제 토​​끼와 오소리 사이의 전쟁으로 뛰어들어가자.


시작하기 : 파이썬 설치하기

Windows PC에서이 자습서를 시도하려는 경우 파이썬 을 설치해야 한다. 3.3 버전이 아니리 2.7.3 버전을 설치한다.  설치프로그램 실행  후 IDLE 는 프로그램 폴더의 시작 메뉴에 나와야 한다.  IDLE를  시작한다.


올바르게 되었다면, 다음과 같이 나타난다 :


Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>


파이썬이 잘 작동하는지 테스트하려면 파이썬 프롬프트에  print 1 +1 을 치고 Enter 키를 누른다.  2를 인쇄한다. 첫 번째 파이썬 프로그램을 작성한것이다!


파이썬이 제대로 작동하고 이제  파이썬을 사용하여 게임을 작성하기 위해 파이게임(pygame)을 설치해야 한다.

파이 게임은 아주  쉽게 게임을 작성하게 파이썬 라이브러리다!  이미지 처리 와  쉽게 게임에 통합 할 수있는 사운드 재생 같은 기능을 제공한다.


여기에  시스템에 적합한 파이게임 설치 프로그램을 다운로드 한다. 파이썬 2.7 버전을 다운로드해야한다.


파이 게임이 제대로 설치되어 있는지 확인하려면  파이썬 IDLE 실행하거나 파이썬 프롬프트에서 다음과 같이 타이핑하여 아무것도 출력하지 않으면 일이 잘 된 것이다. 

반면에 아래 오류같은 것을 출력하면 파이 게임이 제대로 설치되어 있지 않은 것이다.


Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named pygame
>>>


이 같은 오류가 발생하는 경우, 포럼에 게시하면 도움을 얻을 수 있을 수 있을 것이다.


파일에서 파이썬 코드를 실행

파이썬 프롬프트에서 매번 짧은 파이썬 코드를 실행해도 되지만  파일에 코드를 저장하면 큰 프로그램 (게임 등)을 돌리는 경우  매번 입력 할 필요가 없다.

파일로 파이썬 프로그램을 실행하는 방법은 여러 가지가 있다. 한 가지 방법은 노트패드 (윈도우) 같은  텍스트 편집기를 사용하는 것이다.새 텍스트 파일에   파이썬 코드를  입력하고 (print 1 +1 같은). 다른 이름으로 저장 XXX.py (XXX은  파일 이름) 한다.

그런 다음 Windows에서  실행하려는 파일을 더블 클릭한다. 

다른 방법은이 튜토리얼에서 하려는 것처럼 IDLE 편집기를 사용하여 코드를 입력하는 것이다. 이렇게 하려면  IDLE 메뉴에서 NewWindow를 선택하고 파이썬 코드를 입력 할 수있는 텍스트 편집기 창을 연다. 파일의 코드의 변경 사항을 Save로 통해 코드를 저장하고  Run Module (F5)로  실행란다.

편집기 창에 열려있는 파일이 있을때만 Run메뉴를 사용할 수 있다.


게임 리소스 추가




화일을 다운로드했으면  게임의 폴더를 만들고 리소스 폴더를 그 언애 만들고 이름을 resources 로 하자. 그  안에 다양한 자료들이 몇개의 폴더를 만들면서 들어간다:


이제 게임을 만들 준비가 거의 다 된 것이다. 하지만  멋진 그래픽과 음향 효과가없는 게임이라면?  ZIP 아카이브로 게임에 필요한 모든 그래픽과 사운드 효과를 함께 넣었다.  그것을  여기에  다운로드 할 수 있다.

일단 파일을 다운로드 하고 하드 디스크에 게임 폴더를 만들고 게임 폴더가 Resource라는 하위 폴더를 갖도록 만든다 :

자원


이제 토끼와 오소리 만들기를 시작할 준비가 된 것이다. :]


Step 1: Hello Bunny

IDLE 를 실행하고 새로운 텍스트 에디터 윈도우를 열어 다음 코드를 에디터 창에 입력한다:


# 1 - Import library
import pygame
from pygame.locals import *
 
# 2 - Initialize the game
pygame.init()
width, height = 640, 480
screen=pygame.display.set_mode((width, height))
 
# 3 - Load images
player = pygame.image.load("resources/images/dude.png")
 
# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill(0)
    # 6 - draw the screen elements
    screen.blit(player, (100,100))
    # 7 - update the screen
    pygame.display.flip()
    # 8 - loop through the events
    for event in pygame.event.get():
        # check if the event is the X button 
        if event.type==pygame.QUIT:
            # if it is quit the game
            pygame.quit() 
            exit(0)


이제 이 화일을 게임폴더에 저장하고 이름을 game.py 라고 하자.

이제 코드를 섹션별로 진행하자.


  1.  PyGame library를 가져온다. 라이브러리의 기능을 프로그램에서 사용할수 있게한다.
  2. PyGame 을 초기화하고 디스플레이 창을 설정한다. 
  3. 토끼에 사용할 이미지를 로드한다.
  4. 이제 다음과 같은 코드들을 루프로 돌린다
  5. Note: Where other languages like Objective-C, Java or PHP use curly braces to show a block of code to be executed within a while loop or an if statement, Python uses indenting to identify code blocks. So proper indentation is very important in Python – keep that in mind. :]

  6. 무엇을 그리기 전에 화면을 검은색으로 칠한다.
  7. 토끼의 이미지를 화면위치 x=100 and y=100 에 놓는다.
  8. 화면 업데이트.
  9. 만약 빠져나가는 명령에 해당하는 이벤트가 있으면 프로그램에서 빠져 나온다
  10. Note: According to the PyGame documentation, you shouldn’t need to call pygame.quit() since the interpreter will automatically call it when the interpreter shuts down. However, at least on Mac OS, the game would hang on exit unless pygame.quit() was called.


이코드를 돌리면  (via Run\Run Module in the Idle menu) 아래에 보이는 것과 같은 스크린을 볼 수 있어야 한다.


화면에 토끼가 나오고 이제 무언가 돌아갈 준비가 된거다!

하지만 게임은 검은 화면에 토끼만 덜렁 남아 무섭기도 하니 화면에 조금 예쁜 것들을 그려넣을 때이다:]


2 단계 : 풍경 추가

게임 장면에 배경을 추가하여 시작하자.  몇 번의 screen.blit () 호출로 가능하다.


game.py (화면 높이와 너비를 설정 한 후) 섹션 # 2의 끝에 다음 코드를 추가하자   :


grass = pygame.image.load("resources/images/grass.png")
castle = pygame.image.load("resources/images/castle.png")


이제 이미지를로드하고 특정 변수에 저장한다. 이들은 화면에 그릴 수 있다. 당신은 잔디(grass) 이미지를 체크한다면, 잔디 이미지가  640 X 480인  화면 전체 영역을 커버하지 않는다는 것을 알 수 있다. 이것은 당신이  잔디를  화면영역을 완전히 커버하는 타일처리해야 한다는 것을 의미한다.

다음 코드를 game.py (플레이어가 화면에 그려지기 전) 섹션 # 6의 시작 부분에  추가한다:


    for x in range(width/grass.get_width()+1):
        for y in range(height/grass.get_height()+1):
            screen.blit(grass,(x*100,y*100))
    screen.blit(castle,(0,30))
    screen.blit(castle,(0,135))
    screen.blit(castle,(0,240))
    screen.blit(castle,(0,345 ))


보이는 것처럼 for 문은 x 축으로 루프를 돌고 그 for 루프안에서 y 축으로 루프를 돌아 결국 잔디는 x y  값으로 만들어진 for 루프에서 그려지는 것이다. 

그 다음 몇줄은 성을 그리는것이다.


프로그램을 지금 돌려보면 다음과 비슷하게 보여야 한다:


훨씬 낫다! 이제 좋아보이기 시작한다:]


Step 3: Make the Bunny Move

다음 작업은 토끼가 키 입력에 반응하는 것처럼 몇 가지 실제 게임 플레이 요소를 추가하는 것이다.

어떤 키가 특정 순간에 눌리고 있는가를  추적하는 좋은 방법을 구현한다.   간단히  게임에 사용할 각 키의 상태를 유지하는 키 상태의 어레이를  만들면 된다.

game.py 섹션 # 2의 끝에 (화면 높이와 너비를 설정 한 후)  다음 코드를 더한다 :


keys = [False, False, False, False]
playerpos=[100,100]


코드는 그 자체가 설명이다.  키들의 어레이는 키들이 눌려진 상태를 따라간다. WASD다. 어레이의 아이템들은 키와 연관되어 있다. 첫번째가 w 그 다음이 a 인 식이다. 


 playerpos 변수는 프로그램이 플레이어를 그릴 위치에 대한 변수이다. 게임이 플레이어를 다은 위치로 움직이기 때문에 플레이어의 위치를 기억하는 변수에 맞추어 플레이어를 그리는 편이 쉽다.

 

이제  playerpos 변수를 사용하여 플레이어를 그리도록 기존의 코드를 고쳐보자. 섹션 #6의  라인 :

    screen.blit(player, (100,100))

을 다음과 같이 바꾼다 :

    screen.blit(player, playerpos)

그 다음은 키들의 어레이 값을 어떤 키가 눌려지느냐에 따라 변경한다. Pygame은 event.key 함수를 사용하여 이 작업을 쉽게 해준다. 


섹션 #8의 끝에  event.type==pygame.QUIT 의 바로 뒤에 다음의 코드를 집어넣는다,(at the same indentation level as the pygame.QUIT if block):

   

        if event.type == pygame.KEYDOWN:
            if event.key==K_w:
                keys[0]=True
            elif event.key==K_a:
                keys[1]=True
            elif event.key==K_s:
                keys[2]=True
            elif event.key==K_d:
                keys[3]=True
        if event.type == pygame.KEYUP:
            if event.key==pygame.K_w:
                keys[0]=False
            elif event.key==pygame.K_a:
                keys[1]=False
            elif event.key==pygame.K_s:
                keys[2]=False
            elif event.key==pygame.K_d:
                keys[3]=False


와 이제 코드는 제법 길어졌더,  if문을 차근히 읽어보면 그다지 복잡하지 않다.

처음에 체크하는 것은 키를 누르거나 떼는 것이다. 그 다음은 어떤 키가 눌리거나 풀리거나를 체크한다. 만약 이 키가 사용하는 키라면 해당하는 키의 변수값을 업데이트한다. 


끝으로 키를 누르는 일에 반응하여 playerpos 변수를 변경하는 것이다. 이일은 아주 간단하다. 다음의 코드를 gmae.py에 더한다 (with one indentation level, putting it at the same level as the for loop):


    # 9 - Move player
    if keys[0]:
        playerpos[1]-=5
    elif keys[2]:
        playerpos[1]+=5
    if keys[1]:
        playerpos[0]-=5
    elif keys[3]:
        playerpos[0]+=5


이 코드는 단순히 어떤 키가 눌리거나 떨어지는 가를 체크하여 플레이어의 x y 값을 더하고 빼서 이동시키는 일을 한다. 


게임을 돌리면 풀레이어는 이전의 그림과 같다. WASD 키를 눌러보면 .. 그렇다! 동작한다. 




Step 4: Turning the Bunny


그렇다. 토끼는 이제 키를 누르면 이동하지만 마우스로 토끼를 돌려서 방향을 바꿀 수 있게 하면 더 쿨할 것이다. 맨날 같은 방향만 향하는 것보다.  삼각법을 이용하면 간단한 일이다.


다음 그림을 보자:



위의 그림에서 (5,3) 이 토끼의 위치이고 (2,4) 가 마우스의 현재 위치라면 회전각 z 는 두점간의 거리차를 이용하여 삼각함수 atan2를 적용하여 알아낼 수 있다. 물론 회전각을 알면 토끼를 간단히 회전시킬 수 있다. :]


이부분에서 조금 혼란이 와도 걱정할 것은 없다- 어쨌든 진행핳 수 있으니까.  하지만 수학시간을 잘 들어두어야 하는이유이기도 하다 :]  이 부분은 게임프로그래밍에서 계속 사용하게 될 것이다.

이제 이 개념을 게임에 적용해보자.  그러려면 pygame의 Surface.rotate(degrees) 함수를 사용할 수 있다. Z 값이 라디안으로 나타난다는 것에 주의하자 :[

 

atan2함수는 파이선의 math 라이브러리에 있으니 먼저 섹션 #1의 끝에 다음과 같이 추가하자:

import math


그다음 섹션 #6의 마지막 줄 (the player.blit line)을 다음과 같은 코드로 바꾼다:


    # 6.1 - Set player position and rotation
    position = pygame.mouse.get_pos()
    angle = math.atan2(position[1]-(playerpos[1]+32),position[0]-(playerpos[0]+26))
    playerrot = pygame.transform.rotate(player, 360-angle*57.29)
    playerpos1 = (playerpos[0]-playerrot.get_rect().width/2, playerpos[1]-playerrot.get_rect().height/2)
    screen.blit(playerrot, playerpos1)


이제 코드의 기본적 구조를 보자. 첫번째로 마우스와 플레이어으ㅏ 위치를 얻고 그 다음에 이 값들을 atan2 함수에 준다.


그 다음  atan2 함수로부터의 값을 각도로 바꾼다.(라디안에  57.29 나 360/2π를 곱한다).


토끼가 회전하면 위치가 바뀌게 된다. 이제 새로운 토끼의 위치를 계산하여 회면에 그린다. 


게임을 다시 돌려보자. wasd를 사용하면 앞의 경우와 같지만 마우스를 움직이면 토끼는 회전한다. 쿨!

Step 5: Shoot, Bunny, Shoot!


이제 토끼가 회전할수 있으니 동작 몇개를 더해 보자 :] 토끼가 화살을 쏘게하면 어떨까. 얌전하기만 한 토끼가 아닌 것이다!


이 단계는 화살을 따라다니고 , 위치를 갱신하고 , 회전하고 화면을 벗어나면 지워야 하는 이유로 간단하지 않다.

우선 섹션 #2의 초기화 부분의 끝에 필요한 변수들을 추가하자:


acc=[0,0]
arrows=[]


처음 변수는 플레이어의 명중률을 두번째 변수는 모든 화살들의 추적하기 위한 것이다. accuracy 변수는 쏜 숫자로 맞은 너구리의 수를 나눈 것이다. 나중에 이 정보는 명중륳을 계산하는데 사용한다. 


다음에 섹션 #3의 끝에서 화살의 그림자를 로드하자:


arrow = pygame.image.load("resources/images/bullet.png")


이제 사용자가 마우스를 클릭하면 화살이 발사 되어야 한다. 섹션 #8의 끝에 다음과 같은 새로운 이벤트 핸들러를 추가한다.


        if event.type==pygame.MOUSEBUTTONDOWN:
            position=pygame.mouse.get_pos()
            acc[1]+=1
            arrows.append([math.atan2(position[1]-(playerpos1[1]+32),position[0]-(playerpos1[0]+26)),playerpos1[0]+32,playerpos1[1]+32])

이 코드는 마우스가 클릭되었나를 체크하고 그렇다면 마우스의 위치를 가져와 화살의 회전방향을 커서의 위치와 플레이어의 회전방향을 바탕으로 계산한다. 이  회전값은 arrows에 저장된다.


다음으로 화살을 화면에 실제로 그려야 한다. 다음 코드를 섹션 #6.1 다음에 추가한다:


    # 6.2 - Draw arrows
    for bullet in arrows:
        index=0
        velx=math.cos(bullet[0])*10
        vely=math.sin(bullet[0])*10
        bullet[1]+=velx
        bullet[2]+=vely
        if bullet[1]<-64 or bullet[1]>640 or bullet[2]<-64 or bullet[2]>480:
            arrows.pop(index)
        index+=1
        for projectile in arrows:
            arrow1 = pygame.transform.rotate(arrow, 360-projectile[0]*57.29)
            screen.blit(arrow1, (projectile[1], projectile[2]))


vely 와 velx 값은 기본적이 삼각법으로 계산한다. 10은 화살의 속도이고 if뭉능 화살이 화면 경계를 지나갔는가를 계산하는 것이고 그렇다면 지운다. 두번째의 for  문은 arrows 변수로 루프를 돌려 화면에 정확히 회전된 그림을 그려낸다. 


프로그램을 고치고 돌려보면  마우스를 클릭할때 화살을 쏘는 토끼를 보게된다! :D




Step 6: Take Up Arms! Badgers!

 이제 성과 움직이면서 화살을 쏠 수 있는 영웅도 있다. 빠진 것은? 우리의 영웅이 쏘아 맞출 수 있는 성을 공격하는 적이다!

이 단계에서 무작위로 나타나서 성으로 달려오는 오소리를 만들어야 한다.  게임이 진행될 수록 점점 더 많은 오소리가 필요해진다.  그러면 여기 필요한 리스트를 만들어보자.


1.  나쁜넘들을 리스트에 넣은 어레이에 넣는다.

2.  나쁜넘들의 어레이를 각 프레임마다 업데이트하고 화면을 벗어나는지 체크한다.

3. 나쁜 넘들을 표시한다.

쉽다. 안그런가? :]


우선 다음 코드를 섹션#2의 끝에 첨가한다:

badtimer=100
badtimer1=0
badguys=[[640,100]]
healthvalue=194

위에 나온 코드는 타이머(다른 값들도)를 설정하여  게임에서 어떤 시간이 경과하면 새로운 너무리를 추가한다.  badtimer를  매 프레임마다 0이 될때까지 줄이면 새로운 너구리가 나타난다.

 

이제 다음 코드를 섹션 #3 끝에 추가한다:

badguyimg1 = pygame.image.load("resources/images/badguy.png")
badguyimg=badguyimg1


첫번째줄은 예전의 이미지 로딩코드와 비슷하다. 두번째줄은 이미지의 복사본을 만들어 나쁜넘들을 애니메이트 하기 쉽게 만들수 있게 한다.

다음에 악당들을 보이고 움직이게 만들기 위해 다음 코드를 섹션 #6.2에 추가한다:

    # 6.3 - Draw badgers
    if badtimer==0:
        badguys.append([640, random.randint(50,430)])
        badtimer=100-(badtimer1*2)
        if badtimer1>=35:
            badtimer1=35
        else:
            badtimer1+=5
    index=0
    for badguy in badguys:
        if badguy[0]<-64:
            badguys.pop(index)
        badguy[0]-=7
        index+=1
    for badguy in badguys:
        screen.blit(badguyimg, badguy)


코드들이 많다. :] 첫본째 라인은  badtimer가  0 인지 체크하고 만약 그렇다면 너구리를 만들고 지금까지 얼마나  badtimer가 수행되었는가에 따라  badtimer를 다시 설정한다. 첫번쨰 루프는 너구리의 x 위치를 갱신하고 너구리가 스크린을 벗어났으면 없애버린다. 두번째 루프는 너구리의 모든 것을 그리는 것이다.

랜덤함수를 사용하려면 rnadom 라이브러리르를 import해야 한다. 그래서 다음과 같은 코드를 섹션 #1의 끝에 추가한다:


import random


그리고 while문(섹션 #4)의 마지막에  각 프레임마다  badtimer를 줄이는 코드를 한줄 더하자:


badtimer-=1


게임을 실행시켜서 이 코드들을 모두 시도해보자. 이제  정말 게임플레이 화면을 볼수 있을 것이다. 쏘고 움직이며 돌고 너구리가 달려온다.


그러나 너구리는 왜 성에서 폭발하지 않는가? 재빨리 코드를 더해보자.

이 코드를  섹션 #6.3  첫번째 루프의첫부분의 index+=1 바로 앞에 에더하자:


        # 6.3.1 - Attack castle
        badrect=pygame.Rect(badguyimg.get_rect())
        badrect.top=badguy[1]
        badrect.left=badguy[0]
        if badrect.left<64:
            healthvalue -= random.randint(5,20)
            badguys.pop(index)
        # 6.3.3 - Next bad guy


코드는 상당히 단순하다. 만약 너구리의 x값이 64보다 적으면 악당을 지우고 게임의 헬스값을  5-20 사이의 무작위 값으로 감소시킨다. (나중에 헬스값을 스크린에서 보게 될 것이다,)

이제 프로그램을 빌드하고 실행시키면 이제 한무더기의 공격하는 너구리가 성에 부딪히면서 없어지는 것을 볼 수 있을 것이다.  그리고 보이지는 않지만 부딪힌 너구리들이 헬스값을 실제로 감소시킬 것이다.




Step 7: Collisions with Badgers and Arrows

너구리들이 성을  공격하지만 화살이 아무 효과가 없다! 바니가 어떻게 집을 지킬 수 있을까?


너구리를 잡고 성을 지키고  게임에서 승리하기 위해 화살을 세팅할 시간이다! 기본적으로 악당들을 모두 루프에서 처리해야 하고  각 루프 안에서 처리해야 한다. 그리고 모든 화살도 루프에서 체크해서 충돌하는 가도 검사해야 한다. 만약 충돌하면 너구리를 지우고 화살도 지우고 정화도를 가산한다.




섹션  #6.3.1의 뒤에 다음 코드를 더한다.

        #6.3.2 - Check for collisions
        index1=0
        for bullet in arrows:
            bullrect=pygame.Rect(arrow.get_rect())
            bullrect.left=bullet[1]
            bullrect.top=bullet[2]
            if badrect.colliderect(bullrect):
                acc[0]+=1
                badguys.pop(index)
                arrows.pop(index1)
            index1+=1


이 코드에서 중요한 내용이 있다. if 문의 Pygame 내장함수로 두 사각형이 겹치는 가를 조사한다. 나머지 줄들은 설명한 내용과 같다.


이제 프로그램을 돌리면 화살을 쏘아 너구리를 잡을 수 있게 된다.



Step 8: Add a HUD with Health Meter and Clock


게임의 진도는 아주 잘나간다. 공격자와 방어자가 있다, 이제 스코어와 바니가 하는 일을 보여주는 방법이 필요하다.  

가장 간단한 방법은 성의 현재 헬스레벨을 보여주는 HUD (Heads Up Display) 를 더하는 것이다.  시계를 더하면 성이 얼마나 오래 살아 남는가를 보여줄 수 있다.

처음에는 시계를 더하자. 다름 코드를 섹션 #7 바로 앞에 붙인다:


    # 6.4 - Draw clock
    font = pygame.font.Font(None, 24)
    survivedtext = font.render(str((90000-pygame.time.get_ticks())/60000)+":"+str((90000-pygame.time.get_ticks())/1000%60).zfill(2), True, (0,0,0))
    textRect = survivedtext.get_rect()
    textRect.topright=[635,5]
    screen.blit(survivedtext, textRect)


위의 코드는  PyGame 기본 폰트 사이즈 24의 폰트를 만들어낸다, 이 폰트로 판위의 시간을 그리는데  사용한다. 그 다음에 텍스타가 위치를 잡고 화면에 그려진다.

그 다음에 헬스바를 더 한다. 헬스바를 그리기 전에 막대를 위한 이미지를 로드할 필요가 있다. 다음 코드를 섹션 #3 끝에 붙인다. 


healthbar = pygame.image.load("resources/images/healthbar.png")
health = pygame.image.load("resources/images/health.png")


첫번째 붉은 이미지는 전체 헬스 막대를 표시하기 위한 것이고 두번째 녹색 이미지는 현재의 헬스 레벨을 표시하기 위한 것이다.  

이제 다음 코드를 섹션 #6.4 (방금전 덧붙인) 의 바로 뒤에 더하여 스크린에 헬스바를 그린다:


    # 6.5 - Draw health bar
    screen.blit(healthbar, (5,5))
    for health1 in range(healthvalue):
        screen.blit(health, (health1+8,8))

코드는 처음에 모두 붉은색 헬스바를 그린다,  그리고는 성이 얼마나 남아있는가를 반영하는 녹색막대를 그린다.,

만약 프로그램을 빌드하고 돌리면  타이머와 헬스바를 갖게된다.


Step 9: Win or Lose

만약에 게임이 오래 진행되어 헬스레벨이 0 이되어도 진행되다면 !  그뿐만이 아니라 너구리를 계속 쏠 수 있다면 .. 이것은 아니다.  게임이 놀 가치가 있으려면 승과 패의 시나리오가 필요하다.

그러면 이제 승패의 시나리오와 스크린을 더해보자 :]  이는 메인 루프에서 벗어나서 승/패의 루프로 들어가면 된다. 승/패의 루프에서는 유저가 진건지 이긴건지 판단하여 스크린에 표시해야 한다.


다음에 승/패의 기본적인 요약이 있다:

게임이 90초를 넘어 시간이 되면:


  • 게임을 중지하고
  • 게임의 결과값을 1로 만들거나 승리로

만약 성이 부서지면

  • 게임을 중지하고
  • 게임의 결과값을 0로 만들거나 패배로


정확도를 다음과 같은 방법으로 계산한다.  (acc[0]을 float 로 만드는 거다.)

Note: The acc[0]*1.0 is just converting acc[0] to a float. If you do not do this, the division operand will return an integer like 1 or 2 instead of a float like 1.5

다음 줄을  game.py 끝에 첨가한다:

    #10 - Win/Lose check
    if pygame.time.get_ticks()>=90000:
        running=0
        exitcode=1
    if healthvalue<=0:
        running=0
        exitcode=0
    if acc[1]!=0:
        accuracy=acc[0]*1.0/acc[1]*100
    else:
        accuracy=0
# 11 - Win/lose display        
if exitcode==0:
    pygame.font.init()
    font = pygame.font.Font(None, 24)
    text = font.render("Accuracy: "+str(accuracy)+"%", True, (255,0,0))
    textRect = text.get_rect()
    textRect.centerx = screen.get_rect().centerx
    textRect.centery = screen.get_rect().centery+24
    screen.blit(gameover, (0,0))
    screen.blit(text, textRect)
else:
    pygame.font.init()
    font = pygame.font.Font(None, 24)
    text = font.render("Accuracy: "+str(accuracy)+"%", True, (0,255,0))
    textRect = text.get_rect()
    textRect.centerx = screen.get_rect().centerx
    textRect.centery = screen.get_rect().centery+24
    screen.blit(youwin, (0,0))
    screen.blit(text, textRect)
while 1:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit(0)
    pygame.display.flip()


지금까지 나온 것중에 가장 길지만 복잡한 것은 아니다.

첫번째 if 문은 시간이 다되었는 가를 체크한다.

두번째는 성이 부숴졌나를 체크한다. 

세번째는 정확도 비를 계산한다.

그 다음에 if 문은 이겼는지 졌는지를 판단하고 적절한 이미지를 표시한다.


물론 승리나 패배의 이미지를 표시하려면 이미지가 미리 로드되어야 한다. 그래서 다음코드를 섹션#3 끝에 첨가한다: 


gameover = pygame.image.load("resources/images/gameover.png")
youwin = pygame.image.load("resources/images/youwin.png")

그리고 섹션#4 를 다음 코드에서:

# 4 - keep looping through
while 1:
    badtimer-=1

아래와 같은 코드로 고친다:

# 4 - keep looping through
running = 1
exitcode = 0
while running:
    badtimer-=1


실행 변수는 게임이 끝났는지 체크하고 탕충코드 변수는 게이머가 이겼는지 졌는가를 알려준다.


게임을 다시 돌리면 승리할 수도 있고 죽을 수도 있다. 한번 해보시도록  ! Cool. :]

Step 10: Gratuitous Music and Sound Effects!


게임은 모양이 좋지만 소리는? 아마 너무 조용하지 않은가? 약간의 소리효과를 더하면 게임의 전체적 느낌을 바꿀 수 있다.

PyGame 은 소리를 너무나 간단하게 로드하여 들려줄 수 있다. 첫째로 믹서를 초기화하는 것이고 다음 코드를 섹션 #2에 더한다.


pygame.mixer.init()

그 다음 소리를 로드하고 볼륨레벨을 정한다. 코드는 섹션3 뒤에.


# 3.1 - Load audio
hit = pygame.mixer.Sound("resources/audio/explode.wav")
enemy = pygame.mixer.Sound("resources/audio/enemy.wav")
shoot = pygame.mixer.Sound("resources/audio/shoot.wav")
hit.set_volume(0.05)
enemy.set_volume(0.05)
shoot.set_volume(0.05)
pygame.mixer.music.load('resources/audio/moonlight.wav')
pygame.mixer.music.play(-1, 0.0)
pygame.mixer.music.set_volume(0.25)


위의 코드 대부분은 단순리 오디오 파일을 로드하고 볼륨레벨은 설정하는 것이다. 그러나  pygame.mixer.music.load줄에 주의하자. 이 줄은 게임의 백그라운드 음악을 로드하고 다음 줄은 음악을 언제까지나 반복시킨다.


오디오의 설정에는 주의 해야 한다 ;] 이제 필요한 모든 것은 다양한 소리 효과를 필요할 때마다 플레이 하는것이다, 다름의 코드에 나오는 주석처럼 코드를  변경하자:


# section 6.3.1 after if badrect.left<64:
hit.play()
# section 6.3.2 after if badrect.colliderect(bullrect):
enemy.play()
# section 8, after if event.type==pygame.MOUSEBUTTONDOWN:
shoot.play()


이제 게임을 다시 한번 돌려보면 이제 배경음악과 충돌이나 활쏘는 소리가 나올 것이다. 게임은 더 생생한 느낌이 들 것이다 :]


Where To Go From Here?

자랑스러울 것이다:  이제 음악 , 소리효과 , 킬러 토끼 , 가미가제 너구리같은 것으로 만들어진 펀게임을 완성한 것이다. 아까 만들 수 있을 거라고 말했었다!


최종적인 소스 코드는여기서( here) 다운 로드 받을 수 있다.


이 시점에서 게임을 자신의 창작으로 확장해도 좋다.  아니면 자신의 그림으로 창작을 시도할 수도 있고 , 다른 무기나 괴물을 이 게임에 첨가할 수 있다!


만약에 이 설명서에 대한 질문이나  의견이 있다면?  포럼의 토론란에 참가하면 된다.  나는 듣는 것으 좋아한다,



이 글은  Tutorial Team Member인  Julian Meyer가 올린 것이다. 13세의 파이선 개발자다.


저작자 표시
신고
Trackback 4 Comment 1
2014.01.23 16:44

펌)값싼 고기는 어떻게 식탁에 오르나

르몽드디플로마띠끄에 실린 글이다.원문은 http://www.ilemonde.com/news/articleView.html?idxno=2180


값싼 고기는 어떻게 식탁에 오르나
[55호] 2013년 04월 10일 (수) 15:52:22아녜 스티엔  info@ilemonde.com

최근 일부 유명 브랜드의 식품에서 소고기 대신 말고기를 사용해 파문이 일었다. 이 사건으로 인해 세계 농식품 산업의 복잡다단한 층위가 세상에 드러났다. 신흥국의 급격한 수요 상승에 따라 고기 생산 체계는 점차 제조업의 세계적 공급망이 움직이는 방식을 닮아간다.

식품 스캔들에는 매번 같은 시나리오가 반복된다. 정치권은 꾸짖고 업계와 대형 유통업계는 우는 소리를 한다. 그리고 일치단결해 다시 나오는 투명성, 이력추적제, 인증제. 소리 높여 발표되고 수없이 듣던 조처들이다. 그러나 결국 이전과 같은 양상을 더욱 잘 지속시키기 위함이다. 그 이유를 알려면 사안을 보는 초점을 넓혀야 한다. '소고기'로 속을 채운 라자냐의 라벨에서 한창 새판짜기에 돌입한 세계 농업 구조의 추이와 맥락으로 시선을 옮겨야 한다. 새로운 농업 구조는 오직 한 가지 목적을 위한 것이다. 대규모 수출을 위해 특화 거점을 만들어 대량생산을 하는 것이다. 서유럽 국가는 국내 소비를 위해 소고기와 돼지고기를 수입하거나 기타 유럽 국가에 수출한다. 신흥국가의 경제성장과 함께 고기 수요는 증가했고, 따라서 축산업을 위한 농지 필요도 증가했다.

  
대량 축산업의 폐해: 축산업이 숲을 이용하게 되면 수질 오염, 초지 파괴, 약초재배업의 종말 등 아마존에 치명적이고 파괴적인 결과를 야기한다.

소고기 1㎏을 위해 곡물 7㎏ 필요

예를 들어 중국은 연간 1인 육류 소비량이 지난 10년간 55% 증가했다.(1) 최우선적으로 양계 공장의 닭들을 먹이기 위해 남미에서 재배된 콩을 어마어마한 양으로 수입하고, 사람과 가축을 먹이기 위해 아프리카에서 땅을 사들이고 있다(농지 수탈). 한 대륙에서 구매한 원자재는 제2자 대륙에 팔리고, 이어서 제3자 대륙에 다시 수출된다. 농산업은 제조업의 세계적 공급 사슬과 별반 다를 바 없다.

수십 년 전부터 농기업(Agribusiness)은 농촌, 생물 다양성, 토지, 물, 농민뿐 아니라 소비자의 건강을 망치는 방식을 끝없이 고수하고 있다. 지구촌을 제대로 먹여살리지도 못하면서 말이다. 2011년 충분히 먹지 못해 기아에 허덕이는 사람이 10억 명에 달한다. 몇 주 전부터 신랄하게 비판받고 있는 육류 산업은 이 모든 문제를 압축한 결정체이다. 전세계 총생산의 2%에 불과하면서도 전체 온실가스 배출량의 18%를 차지하는 육류 산업은 특히 천연자원과 토지, 농산물을 집어삼키는 주범이다. 사람이 먹기 위해 곡물을 생산하는 것인가, 아니면 소를 살찌우기 위해 생산하는 것인가. 곡물에 비해 육류 생산의 효율이 불균형인 만큼 이런 질문을 던질 수밖에 없다. 소고기 1kg을 살찌우려면 곡물이 최소 7kg 필요하다. 돼지고기 1kg에는 곡물 4kg, 닭고기 1kg에는 곡물 2kg이 필요하다.

목축지는 농지의 68%를 차지하고(그중 25%는 경작이 불가한 황무지), 사료 재배를 위한 면적은 경작 가능한 땅의 35%를 점유한다. 결국 전체적으로 78%의 농지가 축산을 위한 것이다. 별 가치도 없는 육류 생산을 위해 계속되는 농지 수탈은 극빈층 삶에 직접적인 타격을 가한다. 2006년 유엔 식량농업기구가 발간한 연차 보고서는 다음과 같이 경고했다. "축산업을 위한 식량 생산과 수입이 증가 추세다. 가축용 사료의 전체 수입이 빠르게 증가해, 중국의 축산업 성장이 가져올 전세계 곡물 가격의 상승과 식량난이 우려된다." 그 뒤 일어난 일을 우리는 알고 있다. 2008년은 국제 시장에서 원재료 가격이 전례 없이 폭등해 굶주림에 지친 사람들의 폭동이 잦던 해이다.

아마존을 파괴하는 브라질 축산업

당시는 지구촌이 금융위기의 발단으로 힘들 때였다. 이런 비극으로 정치 지도자들은 1차 생필품에 대한 투기를 금지했어야 한다. 그러나 아무 일도 없었다. 곡물 생산 비용은 실제 감소했지만 판매 가격은 계속해서 오르고 있다.(2) 세계은행은 2011년 2월 다음과 같이 경고했다. "세계 식량 가격이 위험한 수준에 도달하고 있어, 전세계 수억 명의 빈곤층에 위협을 가한다. 가격 상승으로 이미 수백만 명이 빈곤층으로 전락하고 있고, 수입의 반 이상을 식량 사는 데 써야 하는 최취약층을 압박하고 있다."(3)

  
농지의 불균형 이용: 목초와 사료 때문에 농지의 78%가 가축을 먹이기 위한 용도로 쓰인다. 일부 통지는 과다 남획 때문에 불모지가 된다.

목축은 흔히 생각하는 소 키우는 형태와 거리가 멀다. 브르타뉴 농촌 길을 지날 때 보듯 사과나무 그늘 아래 한 무리의 소들이 풀을 뜯는 평화로운 광경은 아무 문제가 없다. 그러나 목축 밀도가 높아질수록 생태계에 가하는 피해도 커진다. 지난 몇 년간 극심한 변화를 겪은 것은 남미다. 과밀 방목이 주를 이루면서 남겨진 것은 가축 배변으로 가득 찬 불모지다. 새로운 축우지를 위해 축우업자들은 주저 없이 불법 벌채에 매달린다. 특히 브라질은 불법 벌채가 심각하다. 최고의 소고기·소가죽 생산국이자 수출국인 브라질은 전세계 관련 시장의 30%를 점유하고 있다. 연간 수출되는 소고기 양은 2200만t이다. 주로 러시아와 유럽연합으로 수출된다. 2009년 그린피스가 조사하고 발표한 보고서는, 2억 마리는 족히 넘는 브라질의 축우업이 아마존 숲 파괴의 80%를 차지하는 주요 원인임을 보여준다.(4) 10년 동안 불에 타 사라진 아마존 숲은 1천만ha에 달한다. 이로 인해 가장 큰 피해를 본 것은 소농민과 원주민들이다. 거대한 '축우업 기계'의 확산으로 이들의 고통은 지금까지 계속되고 있다. 비정부기구 '서바이벌'(Survival)은 40여 년 전부터 축우업자들이 브라질 숲에 사는 인디언들을 학살하는 것을 알리고 있다.(5) 아마존 숲을 파괴하는 데는 두 가지 주요 목적이 있다. 하나는 농산 연료(바이오 연료)의 생산이며, 다른 하나는 축산을 위한 사료 생산이다. 농민운동 단체 '비아 캄펜시나' (Via Campesina)에 따르면 "콩 단작(단일 작물만 재배)이 파라과이 전체 농지의 4분의 1을 차지하고 있다. 브라질은 1995년 이후 콩 재배지가 연간 32만ha가량 늘어나고 있다. 아르헨티나는 이미 농지의 절반이 콩 재배지가 되었고, 농지가 아닌 땅 중 5600만ha가 1996~2006년에 콩을 재배하기 위한 땅으로 경작되었다. 이런 착취가 남미 사람들과 환경에 미치는 파괴적 결과는 여러 단체에 의해 잘 알려져 있다."

동물이라는 개념은 더 이상 없다

화학 기술에 의존한 방식으로 경작되고 수확된 곡물과 기름은 대서양을 건너 대기업의 보관창고로 옮겨진다. 농축 사료로 만들기 위해서다. 이렇게 만들어진 사료는 시멘트로 만든 어두컴컴하고 악취가 진동하는 공장에 갇힌 수백만 마리의 돼지와 닭이 2005년 한 해 12억5천만t을 먹어치웠다.

이 '고기 공장'은 전세계의 가공공장과 슈퍼마켓에 고기를 공급한다. 업자들은 생산부터 유통, 도축, 가공 등 모든 단계를 '합리화'해 비용을 최소화하려 한다. 노동인력을 줄이고 작업을 자동화 및 프로그램화하고 생산품을 표준화하며, 남은 잡고기는 저렴한 밥상을 위한 제품으로 재활용한다. 이 모두가 농기업과 대형 유통이 원하는 요건에 부응하기 위해 만들어진 수작이다.

이제는 더 이상 '동물'이라는 개념조차 없다. 자동차를 조립하듯 원재료에서 소시지를 제조한다. 단, 살아 있고 때때로 고통을 느끼는 '원재료'이다. 하지만 농학 연구의 산물인 이 가축들은 전혀 정상이 아니다. 선별하고 선별해 '제작'된 것이다. 근육 양의 성장 속도는 더욱 빠르고 번식력은 향상되어 있다. 반대로 생존에 중요한 장기는 최소한으로 줄여 더 이상 제 기능을 수행할 수 없을 정도다. 너무 허약해서 질병에 취약하다. 이들을 치료하기 위해 사육하는 건물에는 난방을 하지만 전염병을 피하는 데는 충분치 않다. 그래서 항생제를 자주 사용할 수밖에 없다.

이 축산 방식은 가축 분뇨 및 제거 과정에서 환경문제도 야기한다. 질소와 인이 혼합된 황은 더 이상 흡수할 수 없을 정도로 포화상태인 땅에 살포된다. 오늘날 프랑스의 브르타뉴는 양돈산업으로 인해 수원지의 바닷말류 오염과 연안 녹조류의 확산에 만성적으로 시달리고 있다.

  
경제성장과 고기 수요: 고기 소비 증가는 경제성장과 생활 수준 향상에 동반된다. 따라서 지난 수년간 목축업자들은 신흥국의 새로운 수요에 맞춰야만 했다. 출처: FAO, ‘세계식량농업현황’ (2009년)

파괴하지 않고 지구를 먹여살리기란

전통적으로는 현지에서 생산되는 먹을거리에 따라 가축을 키웠다. 목축은 특히 관심이 필요한 분야다. 가축들이 밟는 것에서 목초가 다시 자랄 수 있도록 보호해야 하고, 토양과 물의 질에 영향을 미치기 때문에 가축 분뇨도 한 군데 집중되지 않도록 막아야 한다. 농장 목축은 곡물 및 채소 재배와 공존하는 방식으로 이루어진다. 콩과 채소 등을 수확하고 남은 풍성한 자투리는 건강하고 균형 잡힌 사료가 된다. 밀짚은 가축 분뇨를 처리한다. 그렇게 얻어진 퇴비는 토양을 기름지게 한다. 완전한 순환 고리를 이룬다.

지구에 부담을 주지 않으면서 지역적으로 건전한 식량을 생산하는 데 관심이 많은 새로운 세대의 농업인들은 이런 옛날 기술에 영감을 받았다. 이들은 연구하고 실험하고 개선하며 이를 현대적으로 변화시켰다. 그중 일부는 산림농업(숲 가꾸기와 농사를 복합적으로 수행하는 농업)에 뛰어들었다. 심은 나무가 바람과 해로부터 밭을 보호한다. 또 나무들은 토양을 비옥하게 하며, 그 뿌리는 물을 담아두어 식물 재배가 잘 이뤄지도록 한다. 이 모두 유엔 식량농업기구(FAO)가 제안하는 방법이다.

*

 / 아녜 스티엔 Agnés Stienne 그래픽 디자이너. 환경문제에 관심이 많으며, 저널리스트로 활동 중이다.

번역 / 박지현 <르몽드 디플로마티크> 한국판 편집위원, 그린피스 해양 캠페이너.

(1) 로마 FAO ‘세계 식량농업현황’ 보고서, 2009. 
(2) 장 지글러, ‘식량, 마지막 투기 은신처’(Quand le riz devient un produit financier), <르몽드 디플로마티크> 2012년 2월호 참고.
(3) ‘식량 가격 상승으로 4400만 명의 인구가 가난의 구렁텅이로 떨어졌다’, 세계은행, 워싱턴, 2011년 2월 15일.
(4) 그린피스 2009년 7월 보고서, ‘아마존 학살: 축우, 아마존 삼림 파괴 확산의 첫 범인’(Slaughtering the Amazone), http://www.greenpeace.org/international/en/publications/reports/slaughtering-the-amazon/).
(5) Survival France, ‘햄버거에서 브라질 인디언까지’, 2010년 1월.
(6) ‘세계은행이 남미 토지의 독점을 부추긴다’, 2011년 7월 7일.


저작자 표시
신고
Trackback 3 Comment 0


티스토리 툴바