1. 程式人生 > >Python 小甲魚教程 烏龜吃魚遊戲

Python 小甲魚教程 烏龜吃魚遊戲

整個程式按照答案來敲的,我覺得按照自己的水平完全沒思路寫得出來框架,就當熟悉程式碼風格來處理吧。

import random as r

legal_x = [0,10]           #先定義範圍,這裡很巧妙,用一個列表2個數字來表示,而不是一個range
legal_y = [0,10]

class Turtle:
 def __init__(self):
  self.power = 100
  self.x=r.randint(legal_x[0],legal_x[1])   #正是因為上面的設定,下面生成初始位置就可以用randint函式來處理,這裡是生成self的初始位置x
  self.y=r.randint(legal_y[0],legal_y[1])   #生成初始位置y
  
 def move(self):
  new_x=self.x+r.choice([1,2,-1,-2])          #移動一步後,新位置是原始位置加上移動距離,距離只有4種可能
  new_y=self.y+r.choice([1,2,-1,-2])
  
  if new_x <legal_x[0]:                               #如果X越出了負界限,則自動反向
   self.x=legal_x[0]-(new_x - legal_x[0])    
   
  elif new_x>legal_x[1]:                              #如果X越出了正界限,則自動反向
   self.x=legal_x[1]-(new_x - legal_x[1])
  else: 
   self.x=new_x                                          #不越界的情況下,重新整理位置,就等於移動後位置
   
  if new_y<legal_y[0]:                                       
   self.y=legal_y[0]-(new_y - legal_y[0])
  
  elif new_y>legal_y[1]:
   self.y=legal_y[1]-(new_y - legal_y[1])
   
  else:
   self.y=new_y
   
  self.power -= 1
  return (self.x,self.y)
  
 def eat(self):                                              #定義動作吃,吃了以後體力加20
  self.power+=20
  if self.power>100:                                    #超過體力上限100了就不變
   self.power = 100
   
class Fish:
 def __init__(self):
  self.x = r.randint(legal_x[0],legal_y[1])     #這裡定義魚類,初始化位置
  self.y = r.randint(legal_y[0],legal_y[1])
  
 def move(self):                                          #和烏龜的屬性一樣,移動功能
  new_x = self.x + r.choice([1,2,-1,-2])
  new_y = self.y + r.choice([1,2,-1,-2])
  
  if new_x < legal_x[0]:
   self.x = legal_x[0] - (new_x-legal_x[0])
  
  elif new_x > legal_x[1]:
   self.x = legal_x[1]-(new_x-legal_x[1])
  
  else:
   self.x = new_x
  
  if new_y < legal_y[0]:
   self.y = legal_y[0]-(new_y - legal_y[0])
   
  elif new_y > legal_y[1]:
   self.y = legal_y[1]-(new_y - legal_y[1])
   
  else:
   self.y = new_y
   
  return (self.x,self.y)
  
  
turtle = Turtle()                           #例項化烏龜
fish=[]                                         #將所有的魚放進一個list
for i in range(10):                       
 new_fish = Fish()                      #在新建例項的同時,在下一行程式碼,將例項魚放進列表
 fish.append(new_fish)
 
while True:
 if not len(fish):                          #len(fish)在有魚的情況下是true,所以當沒魚的時候,執行下面的while迴圈,當有魚或者烏龜有體力的時候,遊戲始終迴圈
  print ('no more fishes, game over')
  break
  
 if not turtle.power:                     #如果烏龜體力沒了,遊戲結束
  print ('turtle is dead')
  break
  
 pos = turtle.move()                   #將烏龜例項move函式返回的位置,賦值給pos
 for each_fish in fish[:]:              #歷遍每條魚,魚移動後的位置和烏龜的位置有重疊,就執行吃的動作,並移除一條魚
  if each_fish.move() == pos:
   turtle.eat()
   fish.remove(each_fish)
   print ('one fish was ated')



相關推薦

Python 甲魚教程 烏龜遊戲

整個程式按照答案來敲的,我覺得按照自己的水平完全沒思路寫得出來框架,就當熟悉程式碼風格來處理吧。 import random as r legal_x = [0,10]           #先定義範圍,這裡很巧妙,用一個列表2個數字來表示,而不是一個range lega

python - 烏龜遊戲

#pygame 可以設定圖形,這裡不做講解。 遊戲程式設計:按以下要求定義一個烏龜類和魚類並嘗試編寫遊戲 假設遊戲場景為範圍(x,y)為0<=x<=10,0<=y<=10 遊戲生成1只烏龜和10條魚 它們的移動方向均隨機 烏龜的最大移動能力為2(它可以隨機選擇1還是2

python】| 烏龜遊戲雛形

遊戲規則: 1. 遊戲背景為10*10; 2. 遊戲會自動生成1個烏龜和10條魚; 3. 它們移動方向隨機; 4. 烏龜最大移動能力為2; [-2,-1,1,2] 5. 魚最大移動能力為1; [-1,1]

Python 甲魚教程 課後練習30 番外篇_需要謹記!!!

這題的要求是搜尋當前目錄內,包含所輸入關鍵字的txt檔案,並標註出,是在檔案的第幾行,和第幾個位置 這道題目中,碰到了好幾個基礎知識缺失的地方,以及後期除錯中莫名其妙的報錯,經過一個上午的糾結,找到了報錯真實位置,並看到一些規律,這裡記錄下。 程式碼如下: impo

python甲魚教程 Easygui 篇

重要 顯示錯誤 小甲魚 博客 str BE 表示 files enter 博客轉自 https://blog.csdn.net/bestallen/article/details/51933427 終於有點實質性可以看到摸到的界面了,搜了一下雖然easygu

烏龜簡單遊戲-類的應用

pan self. mount += nbsp clas rtl image and class Base(object): def __init__(self,x,y,a): self.x=x self.y=y

入門學習-Python-甲魚學習資料-Day004-改進我們的遊戲

標題 改進我們的小遊戲 根據視訊自己練習 : 直接上原始碼了 import random secret = random.randint(1,10) print(’------------------我愛自由工作室------------------’) temp = input(“不妨

入門學習-Python-甲魚學習資料-Day002-用Python設計第一個遊戲

標題 用Python設計第一個遊戲 根據視訊自己練習 : 直接上原始碼了 print(’------------------我愛Python------------------’) tmp = input("test the input, you can input anythi

甲魚教程-文字遊戲-介面框-Easygui練習

第一題:   #-*- coding: UTF-8 -*- import easygui as g import random g.msgbox('嗨,歡迎進入第一個介面小遊戲') # 彈出第一個介面 secret = random.randint(1, 10) #

零基礎入門學習python[甲魚]--就這麽愉快地開始吧01

inf 基礎 tro str 利用 build ice size 輸入 1. 從IDIE啟動python IDLE是一個python shell,shell的意思就是“外殼”,從基本上說,就是一個通過輸入本與程序交互的途徑。像windows的cmd的窗口,像

Python 甲魚爬蟲代理學習

今天學習了小甲魚的IP地址代理,程式碼如下: import urllib.request import random url ='http://ip.chinaz.com/' iplist=['27.18.152.111:8998','101.71.13.214:80','117.1

python甲魚1】序列

#1list-把。。。變成列表[] a = list() print(a) b = 'I LOVE WANGDI'#序列 b = list(b) print(b) c = (1,1,2,3,5,8,13,21,34)#這是元組哦 c = list(c)#把元組變成列表了 pr

python甲魚6】集合

用{}括起來的,沒有對映關係的,就是集合。 集合的特點: 1.元素唯一。 num = {4,1,2,3,4,2,4,2} print(num) #執行結果為{1, 2, 3, 4} 2.無序。 eg:num[2]就會報錯。 建立集合: 1.直接把一堆數用{}

python甲魚7】檔案

def file_write(file_name): f = open(file_name,'w') print('請輸入內容【單獨輸入\':w\'儲存退出】:') while True: write_some = input(

入門學習-Python-甲魚學習資料-Day006-Pyhon之常用操作符

標題 Pyhon之常用操作符 根據視訊自己練習 : 視訊練習程式碼 : a=b=c=d=10 ; print(a-1) ; print(b+3) ; print(c*10) print(d/4) ; print(d//4) print(a%3) ; print(a%7)

入門學習-Python-甲魚學習資料-Day005-閒聊之Python的資料型別

標題 閒聊之Python的資料型別 根據視訊自己練習 : 主要是 熟練使用 int str float bool 資料型別就行了 , 更多的技巧在以後的程式設計過程中再提高吧 !!! 測試程式碼如下 : tmp= “1024” makeint01 = int(tmp) makefloat

入門學習-Python-甲魚學習資料-Day003-插曲之變數和字串

標題 小插曲之變數和字串 注意一下 : ‘’’ 中間 ‘’’ 的多字元 引用 \的轉義字元 暫時也用不上 , 以後注意吧 ! 注意賦值的基本要求。 標題 第003課 課後練習題 : 如果非要在原始字串結尾輸入反斜槓,可以如何靈活處理?

入門學習-Python-甲魚學習資料-Day001-我和Python的第一次親密接觸

標題 入門學習 – Python – 小甲魚學習資料 – Day001** 標題 我和Python的第一次親密接觸 本課程講了一些Python的最基本的操作 , 雖然不全面 , 但是舉例還算比較合適 , 也好理解 ,我自己使用的是 JetBrains PyCharm , 實在是好用啊

入門學習-Python-甲魚學習資料-Day000-愉快的開始

**入門學習 - Python - 小甲魚學習資料 - Day000 標題 學習內容 – 愉快的開始 本節課講了一些python的基本知識 , 算是科普類的簡介了 , 把python的優點介紹了一番 ,並表明了此講座是基於Python3的 ,並說明了P3和P2的區別 , 所以以後寫程

入門學習-Python-甲魚學習資料-Day014-字串:各種奇葩的內建方法

根據視訊自己練習 : capitalize() 把字串的第一個字元改為大寫 casefold() 把整個字串的所有字元改為小寫 center(width) 將字串居中,並使用空格填充至長度 width 的新字串 count(sub[, start[, end]]) 返回 sub 在字串裡