2017年10月2日 星期一

Python遊戲教學


https://www.gitbook.com/book/hackersir/python-game-tutorial/details

Python遊戲教學

104學年度下學期黑客社社課教材
用Pygame來開發Python遊戲

課程清單

  • Lesson 1:Pygame初體驗
    • 環境安裝、第一個 Pygame 遊戲(Hello, Pygame)
  • Lesson 2:基本繪圖與控制
    • 繪圖、鍵盤與滑鼠
  • Lesson 3:基礎物件導向與遊戲架構
    • OOP、Sprite、Many screen switch
  • Lesson 4:五子棋遊戲 Workshop
  • Lesson 5:Python 多執行序
  • Lesson 6:Python 基礎網路程式
  • Lesson 7:連線五子棋遊戲 Workshop
  • Lesson 8:Pygame + PyOpenGL
    • 旋轉立方體

Tkinter text與scrollbar的搭配使用

text與scrollbar的搭配使用

源自於 
https://dotblogs.com.tw/ctosib/2016/11/18/192921



import tkinter as tk

class Mainapplication(tk.Frame):
def __init__(self,master=None):
tk.Frame.__init__(self,master)
self.pack()
self.createwidget()
self.openfile()

def createwidget(self):
self.scrollbar = tk.Scrollbar(self)
self.scrollbar.pack(side=tk.RIGHT,fill=tk.Y)

self.text = tk.Text(self,yscrollcommand=self.scrollbar.set)
self.text.pack(side=tk.LEFT,fill=tk.BOTH)

self.scrollbar.config(command=self.text.yview)

def openfile(self):
with open('1111.txt','r') as f:
temp = f.read()

self.text.insert(tk.END,temp)


if __name__ =='__main__':
root = tk.Tk()
app = Mainapplication(master=root)
root.mainloop()

TKinter create a button which goes to a web page





from tkinter import *
import webbrowser

url = 'https://thenewboston.com'

def openUrl():
    webbrowser.open(url,2)

root = Tk()
myButton = Button(root, text='go to the new boston', command= openUrl)
myButton.pack()
root.mainloop()

TKinter 英制身高(英尺英吋)與公制身高(公分)互相轉換的視窗程式





#如何設計一個英制身高(英尺英吋)與公制身高(公分)互相轉換的視窗程式?
#提示:1 英尺=12 英吋;1 英吋=2.54 公分。

from tkinter import *
from tkinter.messagebox import *

def show_answer1():
   sum1= (float(num1.get())*30.48)+(float(num2.get())*2.54)
   sum1 = "{:.2f}".format(sum1) 
   blank1.delete('0', END)
   blank1.insert(0, sum1)

def show_answer2():
   sum2=int(num3.get()) 
   sum3=(int(int(num3.get()) / 30.48))
   sum4=sum2-(sum3*30.48)
   sum5=(sum4 / 2.54)
   
   sum3 = "{:.1f}".format(sum3)
   sum5 = "{:.1f}".format(sum5) 
   blank2.delete('0', END)
   blank2.insert(0, sum3)
   blank3.delete('0', END)
   blank3.insert(0, sum5)
  


main = Tk()
main.title("Tkinter 英制身高(英尺英吋)與公制身高(公分)互相轉換 ")

Label(main, text = "輸入 英制身高 英尺 :").grid(row=0)
Label(main, text = "輸入 英制身高 英吋:").grid(row=2)
Label(main, text = "公制身高(公分) =").grid(row=4)

Label(main, text = "輸入 公制身高(公分) :").grid(row=0, column=2)
Label(main, text = "英制身高 英尺 =").grid(row=2, column=2)
Label(main, text = "英制身高 英吋 =").grid(row=4, column=2)

num1 = Entry(main)
num2 = Entry(main)

blank1 = Entry(main)

num3 = Entry(main)
blank2 = Entry(main)
blank3 = Entry(main)

num1.grid(row=0, column=1)
num2.grid(row=2, column=1)
blank1.grid(row=4, column=1)

num3.grid(row=0, column=3)
blank2.grid(row=2, column=3)
blank3.grid(row=4, column=3)


Button(main, text='離開', command=main.destroy).grid(row=8, column=0, sticky=W, pady=4)
Button(main, text='英制轉公制計算', command=show_answer1).grid(row=8, column=1, sticky=W, pady=4)
Button(main, text='公制轉英制計算', command=show_answer2).grid(row=8, column=2, sticky=W, pady=4) 
mainloop()


Tkinter 連加法 運算



from tkinter import *
from tkinter.messagebox import *

def show_answer():
   sum1=0
   for I in range (int(num1.get()),int(num2.get())+1,int(num3.get())):
       sum1=sum1 + I   
                        
   sum1 = "{:.1f}".format(sum1) 
   blank1.delete('0', END)
   blank1.insert(0, sum1)


main = Tk()
main.title("Tkinter 迴圈作連加法 ")

Label(main, text = "輸入起始值 :").grid(row=0)
Label(main, text = "輸入結束值 :").grid(row=2)
Label(main, text = "輸入間距值 :").grid(row=4)
Label(main, text = "連加值 =   ").grid(row=6)


num1 = Entry(main)
num2 = Entry(main)
num3 = Entry(main)

blank1 = Entry(main)

num1.grid(row=0, column=1)
num2.grid(row=2, column=1)
num3.grid(row=4, column=1)
blank1.grid(row=6, column=1)

Button(main, text='離開', command=main.destroy).grid(row=8, column=0, sticky=W, pady=4)
Button(main, text='計算', command=show_answer).grid(row=8, column=1, sticky=W, pady=4)

mainloop()


Tkinter 攝氏溫度華氏溫度互換

攝氏溫度華氏溫度互換




from tkinter import *
from tkinter.messagebox import *



def show_answer1():
   # fahrenheit = (celsius * 1.8) + 32         
   Ans =  (float(num1.get()) * 1.8 + 32 )
   Ans = "{:.3f}".format(Ans) 
   blank1.delete('0', END)
   blank1.insert(0, Ans)
   Label(main, text = "華氏溫度").grid(row=2,column=2)
   
def show_answer2():
   # celsius = (fahrenheit-32) * 5/9         
   Ans =  ((float(num1.get())- 32 ) * 5/9 )
   Ans = "{:.3f}".format(Ans) 
   blank1.delete('0', END)
   blank1.insert(0, Ans)
   Label(main, text = "攝氏溫度").grid(row=2,column=2)

# 華氏= 攝氏*(9/5)+32
# 攝氏= (華氏-32)*5/9

main = Tk()
main.title("Tkinter 攝氏溫度華氏溫度互換  ")

Label(main, text = "輸入溫度    :").grid(row=0)
Label(main, text = "轉換的溫度 =").grid(row=2)


num1 = Entry(main)
blank1 = Entry(main)

num1.grid(row=0, column=1)
blank1.grid(row=2, column=1)

Button(main, text='離開', command=main.destroy).grid(row=4, column=0, sticky=W, pady=4)
Button(main, text='攝氏轉華氏', command=show_answer1).grid(row=4, column=1, sticky=W, pady=4)
Button(main, text='華氏轉攝氏', command=show_answer2).grid(row=4, column=2, sticky=W, pady=4)

mainloop()


Tkinter 攝氏溫度轉為華氏溫度



from tkinter import *
from tkinter.messagebox import *


def show_answer():
   # fahrenheit = (celsius * 1.8) + 32         
   Ans =  (float(num1.get()) * 1.8 + 32 )
   Ans = "{:.3f}".format(Ans) 
   blank1.delete('0', END)
   blank1.insert(0, Ans)


main = Tk()
main.title("Tkinter 攝氏溫度轉為華氏溫度  ")

Label(main, text = "輸入攝氏溫度 :").grid(row=0)
Label(main, text = " 華氏溫度 =").grid(row=2)


num1 = Entry(main)
blank1 = Entry(main)

num1.grid(row=0, column=1)
blank1.grid(row=2, column=1)

Button(main, text='離開', command=main.destroy).grid(row=4, column=0, sticky=W, pady=4)
Button(main, text='轉換', command=show_answer).grid(row=4, column=1, sticky=W, pady=4)

mainloop()

===============================================
文字方式
===============================================

# 使用者輸入攝氏溫度
# 接收使用者輸入
celsius = float(input('輸入攝氏溫度: '))
# 計算華氏溫度
fahrenheit = (celsius * 1.8) + 32
print('%0.1f 攝氏溫度轉為華氏溫度為 %0.1f ' %(celsius,fahrenheit))


輸入攝氏溫度: 45.6
45.6 攝氏溫度轉為華氏溫度為 114.1 
>>> 



  清除項目編譯快取 執行 flutter clean 重新取得套件依賴 執行 flutter pub get 完整重新編譯並執行 flutter run 1. 新增專案套件 (pubspec.yaml) 在 Flutter 專案根目錄下的 pubspec.yaml 中,新增 ...