導航:首頁 > 源碼編譯 > 安陽游戲小程序源碼

安陽游戲小程序源碼

發布時間:2022-11-07 18:10:37

python程序開發之簡單小程序實例(11)小游戲-跳動的小球

Python程序開發之簡單小程序實例

(11)小 游戲 -跳動的小球

一、項目功能

用戶控制擋板來阻擋跳動的小球。

二、項目分析

根據項目功能自定義兩個類,一個用於控制小球在窗體中的運動,一個用於接收用戶按下左右鍵時,擋板在窗體中的運動。在控制小球的類中,我們還需要考慮當小球下降時,碰到擋板時的位置判斷。

三、程序源代碼

源碼部分截圖:

源碼:

#!/usr/bin/python3.6

# -*- coding: GBK -*-

#導入相應模塊

from tkinter import *

import random

import time

#自定義小球的類 Ball

class Ball:

# 初始化

def __init__(self,canvas,paddle,color):

#傳遞畫布值

self.canvas=canvas

#傳遞擋板值

self.paddle=paddle

#畫圓並且保存其ID

self.id=canvas.create_oval(10,10,25,25,fill=color)

self.canvas.move(self.id,245,100)

#小球的水平位置起始列表

start=[-3,-2,-1,1,2,3]

#隨機化位置列表

random.shuffle(start)

self.x=start[0]

self.y=-2

self.canvas_heigh=self.canvas.winfo_height()#獲取窗口高度並保存

self.canvas_width=self.canvas.winfo_width()

#根據參數值繪制小球

def draw(self):

self.canvas.move(self.id,self.x,self.y)

pos=self.canvas.coords(self.id)#返回相應ID代表的圖形的當前坐標(左上角和右上角坐標)

#使得小球不會超出窗口

pad=self.canvas.coords(self.paddle.id)#獲取小球擋板的坐標

if pos[1]=self.canvas_heigh or(pos[3]>=pad[1] and pos[2]>=pad[0] and pos[2]

⑵ 求java小程序源代碼 在線等 急急急!!!

下面是俄羅斯方塊游戲源代碼
還沒完,這代碼太長了,我用我另一個號再粘上
import javax.swing.*;
import javax.swing.JOptionPane;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
import java.awt.*;
import java.awt.event.*;
/**
* 游戲主類,繼承自JFrame類,負責游戲的全局控制。
* 內含
* 1, 一個GameCanvas畫布類的實例引用,
* 2, 一個保存當前活動塊(ErsBlock)實例的引用,
* 3, 一個保存當前控制面板(ControlPanel)實例的引用;*/
public class ErsBlocksGame extends JFrame {
/**
* 每填滿一行計多少分*/
public final static int PER_LINE_SCORE = 100;
/**
* 積多少分以後能升級*/
public final static int PER_LEVEL_SCORE = PER_LINE_SCORE * 20;
/**
* 最大級數是10級*/
public final static int MAX_LEVEL = 10;
/**
* 默認級數是5*/
public final static int DEFAULT_LEVEL = 5;

private GameCanvas canvas;
private ErsBlock block;
private boolean playing = false;
private ControlPanel ctrlPanel;

private JMenuBar bar = new JMenuBar();
private JMenu
mGame = new JMenu("游戲設置"),
mControl = new JMenu("游戲控制"),
mWindowStyle = new JMenu("窗口風格");
private JMenuItem
miNewGame = new JMenuItem("新游戲"),
miSetBlockColor = new JMenuItem("設置顏色 ..."),
miSetBackColor = new JMenuItem("設置底色 ..."),
miTurnHarder = new JMenuItem("提升等級"),
miTurnEasier = new JMenuItem("調底等級"),
miExit = new JMenuItem("退出"),

miPlay = new JMenuItem("開始游戲"),
miPause = new JMenuItem("暫停"),
miResume = new JMenuItem("繼續");

private JCheckBoxMenuItem
miAsWindows = new JCheckBoxMenuItem("風格1"),
miAsMotif = new JCheckBoxMenuItem("風格2"),
miAsMetal = new JCheckBoxMenuItem("風格3", true);

/**
* 主游戲類的構造函數
* @param title String,窗口標題*/
public ErsBlocksGame(String title) {
super(title);
//this.setTitle("lskdf");
setSize(315, 392);
Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
//獲得屏幕的大小

setLocation((scrSize.width - getSize().width) / 2,
(scrSize.height - getSize().height) / 2);

createMenu();

Container container = getContentPane();
container.setLayout(new BorderLayout(6, 0));

canvas = new GameCanvas(20, 12);
ctrlPanel = new ControlPanel(this);

container.add(canvas, BorderLayout.CENTER);
container.add(ctrlPanel, BorderLayout.EAST);

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
JOptionPane about=new JOptionPane();
stopGame();
System.exit(0);
}
});
addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent ce) {
canvas.fanning();
}
});
show();
canvas.fanning();
}
// 游戲「復位」
public void reset() {
ctrlPanel.reset();
canvas.reset();
}
/**
* 判斷游戲是否還在進行
* @return boolean, true-還在運行,false-已經停止*/
public boolean isPlaying() {
return playing;
}
/**
* 得到當前活動的塊
* @return ErsBlock, 當前活動塊的引用*/
public ErsBlock getCurBlock() {
return block;
}
/**
* 得到當前畫布
* @return GameCanvas, 當前畫布的引用 */
public GameCanvas getCanvas() {
return canvas;
}

/**
* 開始游戲*/
public void playGame() {
play();
ctrlPanel.setPlayButtonEnable(false);
miPlay.setEnabled(false);
ctrlPanel.requestFocus();
}
/**
* 游戲暫停*/
public void pauseGame() {
if (block != null) block.pauseMove();
ctrlPanel.setPauseButtonLabel(false);
miPause.setEnabled(false);
miResume.setEnabled(true);
}
/**
* 讓暫停中的游戲繼續*/
public void resumeGame() {
if (block != null) block.resumeMove();
ctrlPanel.setPauseButtonLabel(true);
miPause.setEnabled(true);
miResume.setEnabled(false);
ctrlPanel.requestFocus();
}
/**
* 用戶停止游戲 */
public void stopGame() {
playing = false;
if (block != null) block.stopMove();
miPlay.setEnabled(true);
miPause.setEnabled(true);
miResume.setEnabled(false);
ctrlPanel.setPlayButtonEnable(true);
ctrlPanel.setPauseButtonLabel(true);
}
/**
* 得到當前游戲者設置的游戲難度
* @return int, 游戲難度1-MAX_LEVEL*/
public int getLevel() {
return ctrlPanel.getLevel();
}
/**
* 讓用戶設置游戲難度
* @param level int, 游戲難度1-MAX_LEVEL*/
public void setLevel(int level) {
if (level < 11 && level > 0) ctrlPanel.setLevel(level);
}
/**
* 得到游戲積分
* @return int, 積分。*/
public int getScore() {
if (canvas != null) return canvas.getScore();
return 0;
}
/**
* 得到自上次升級以來的游戲積分,升級以後,此積分清零
* @return int, 積分。*/
public int getScoreForLevelUpdate() {
if (canvas != null) return canvas.getScoreForLevelUpdate();
return 0;
}
/**
* 當分數累計到一定的數量時,升一次級
* @return boolean, ture-update successufl, false-update fail
*/
public boolean levelUpdate() {
int curLevel = getLevel();
if (curLevel < MAX_LEVEL) {
setLevel(curLevel + 1);
canvas.resetScoreForLevelUpdate();
return true;
}
return false;
}
/**
* 游戲開始*/
private void play() {
reset();
playing = true;
Thread thread = new Thread(new Game());
thread.start();
}

/**
* 報告游戲結束了*/
private void reportGameOver() {
JOptionPane.showMessageDialog(this, "游戲結束!");
}
/**
* 建立並設置窗口菜單 */
private void createMenu() {
bar.add(mGame);
bar.add(mControl);
bar.add(mWindowStyle);

mGame.add(miNewGame);
mGame.addSeparator();
mGame.add(miSetBlockColor);
mGame.add(miSetBackColor);
mGame.addSeparator();
mGame.add(miTurnHarder);
mGame.add(miTurnEasier);
mGame.addSeparator();
mGame.add(miExit);

mControl.add(miPlay);
mControl.add(miPause);
mControl.add(miResume);

mWindowStyle.add(miAsWindows);
mWindowStyle.add(miAsMotif);
mWindowStyle.add(miAsMetal);

setJMenuBar(bar);

miPause.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_MASK));
miResume.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));

miNewGame.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
stopGame();
reset();
setLevel(DEFAULT_LEVEL);
}
});
miSetBlockColor.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
Color newFrontColor =
JColorChooser.showDialog(ErsBlocksGame.this,
"設置積木顏色", canvas.getBlockColor());
if (newFrontColor != null)
canvas.setBlockColor(newFrontColor);
}
});
miSetBackColor.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
Color newBackColor =
JColorChooser.showDialog(ErsBlocksGame.this,
"設置底版顏色", canvas.getBackgroundColor());
if (newBackColor != null)
canvas.setBackgroundColor(newBackColor);
}
});
miTurnHarder.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
int curLevel = getLevel();
if (curLevel < MAX_LEVEL) setLevel(curLevel + 1);
}
});
miTurnEasier.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
int curLevel = getLevel();
if (curLevel > 1) setLevel(curLevel - 1);
}
});
miExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
System.exit(0);
}
});
miPlay.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
playGame();
}
});
miPause.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
pauseGame();
}
});
miResume.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
resumeGame();
}
});

miAsWindows.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
String plaf = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
setWindowStyle(plaf);
canvas.fanning();
ctrlPanel.fanning();
miAsWindows.setState(true);
miAsMetal.setState(false);
miAsMotif.setState(false);
}
});
miAsMotif.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
String plaf = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
setWindowStyle(plaf);
canvas.fanning();
ctrlPanel.fanning();
miAsWindows.setState(false);
miAsMetal.setState(false);
miAsMotif.setState(true);
}
});
miAsMetal.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
String plaf = "javax.swing.plaf.metal.MetalLookAndFeel";
setWindowStyle(plaf);
canvas.fanning();
ctrlPanel.fanning();
miAsWindows.setState(false);
miAsMetal.setState(true);
miAsMotif.setState(false);
}
});
}
/**
* 根據字串設置窗口外觀
* @param plaf String, 窗口外觀的描述
*/
private void setWindowStyle(String plaf) {
try {
UIManager.setLookAndFeel(plaf);
SwingUtilities.updateComponentTreeUI(this);
} catch (Exception e) {
}
}
/**
* 一輪游戲過程,實現了Runnable介面
* 一輪游戲是一個大循環,在這個循環中,每隔100毫秒,
* 檢查游戲中的當前塊是否已經到底了,如果沒有,
* 就繼續等待。如果到底了,就看有沒有全填滿的行,
* 如果有就刪除它,並為游戲者加分,同時隨機產生一個
* 新的當前塊,讓它自動下落。
* 當新產生一個塊時,先檢查畫布最頂上的一行是否已經
* 被佔了,如果是,可以判斷Game Over了。*/
private class Game implements Runnable {
public void run() {
//產生新方快
int col = (int) (Math.random() * (canvas.getCols() - 3)),
style = ErsBlock.STYLES[(int) (Math.random() * 7)][(int) (Math.random() * 4)];
while (playing) {
if (block != null) { //第一次循環時,block為空
if (block.isAlive()) {
try {
Thread.currentThread().sleep(100);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
continue;
}
}
checkFullLine(); //檢查是否有全填滿的行
if (isGameOver()) { //檢查游戲是否應該結束了
miPlay.setEnabled(true);
miPause.setEnabled(true);
miResume.setEnabled(false);
ctrlPanel.setPlayButtonEnable(true);
ctrlPanel.setPauseButtonLabel(true);

reportGameOver();
return;
}
block = new ErsBlock(style, -1, col, getLevel(), canvas);
block.start();

col = (int) (Math.random() * (canvas.getCols() - 3));
style = ErsBlock.STYLES[(int) (Math.random() * 7)][(int) (Math.random() * 4)];

ctrlPanel.setTipStyle(style);
}
}
/**
* 檢查畫布中是否有全填滿的行,如果有就刪除之*/
public void checkFullLine() {
for (int i = 0; i < canvas.getRows(); i++) {
int row = -1;
boolean fullLineColorBox = true;
for (int j = 0; j < canvas.getCols(); j++) {
if (!canvas.getBox(i, j).isColorBox()) {
fullLineColorBox = false;
break;
}
}
if (fullLineColorBox) {
row = i--;
canvas.removeLine(row);
}
}
}

/**
* 根據最頂行是否被占,判斷游戲是否已經結束了。
* @return boolean, true-游戲結束了,false-游戲未結束*/
private boolean isGameOver() {
for (int i = 0; i < canvas.getCols(); i++) {
ErsBox box = canvas.getBox(0, i);
if (box.isColorBox()) return true;
}
return false;
}
}

⑶ 安陽小程序開發公司哪家比較好

安陽小程序開發公司哪家比較好?建議使用《天客通》萬能可視化編輯,DIY圖形拖拽開發小程序;
六大優勢:
1、步驟簡單,注冊——編輯——發布,三步即可完成!
2、海量模板,匯集各行各業成熟的小程序模板,選擇性豐富!
3、功能強大,豐富的營銷插件,滿足所有營銷模式!
4、萬能DIY,模板可以隨意編輯、排版,功能根據需要隨意更改,你的小程序你做主!
5、獨立後台,強大的後台功能,方便地管理小程序,自由上傳商品、修改,以及強大的統計功能!
6、關於售後,專家客服一對一,跟蹤指導,只要會上網,就會開發小程序!

⑷ 微信小程序Demo源碼怎麼找在哪裡下載

微信小程序的Demo源碼有很多種。我平時找小程序的Demo源碼都是在即速應用bbs這個小程序開發論壇上找的,裡面的資源基本上可以滿足各類開發人群的需求。而且都是可以直接下載的。

⑸ 微信小程序 源碼

小程序是一種不需要下載安裝即可使用的應用,它實現了應用「觸手可及」的夢想,用戶掃一掃或者搜一下即可打開應用。也體現了「用完即走」的理念,用戶不用關心是否安裝太多應用的問題。應用將無處不在,隨時可用,但又無需安裝卸載。對於開發者而言,小程序開發門檻相對較低,難度不及APP,能夠滿足簡單的基礎應用,適合生活服務類線下商鋪以及非剛需低頻應用的轉換。小程序能夠實現消息通知、線下掃碼、公眾號關聯等七大功能。其中,通過公眾號關聯,用戶可以實現公眾號與小程序之間相互跳轉。由於小程序不存在入口。

⑹ 做小程序需要源碼嗎

小程序分為獨立版本小程序和平台版本,平台版本的比較出名的微擎、禾匠等,獨立版本需要獨立開發。平台版本相對來說簡單,容易上手,可以直接在第三方平台上操作,也可以自己搭建平台運營。如果要自己搭建平台運營,可以加我好友,我傳給你我優化過的破解版的程序。全開源版本的。 6559170

⑺ 源碼怎麼弄到小程序

1.登陸微信開發者工具,選擇小程序項目

如果你已經在開發別的項目,但又想導入小程序源碼的話,你可以在開發者工具點擊「項目 -- 新建項目」。

⑻ 什麼是小程序demo源碼

1.
小程序demo源碼就是小程序的源碼。
2.
可以修改小程序的源碼直接上傳。

⑼ 什麼是小程序demo源碼

  1. 小程序demo源碼就是小程序的源碼。

  2. 可以修改小程序的源碼直接上傳。

閱讀全文

與安陽游戲小程序源碼相關的資料

熱點內容
GM附魔命令 瀏覽:597
反編譯自己製作的軟體 瀏覽:33
ros用c還是python好 瀏覽:76
安卓九系統提醒怎麼關 瀏覽:654
我的世界伺服器有領地怎麼抄家 瀏覽:34
python實現多態 瀏覽:300
幼師pdf 瀏覽:941
你怎麼用python開發游戲 瀏覽:645
雷霆戰機伺服器異常是什麼問題 瀏覽:669
程序員客棧20 瀏覽:254
化妝pdf下載 瀏覽:923
takla伺服器ip地址 瀏覽:357
歐盟加密資產法律 瀏覽:573
威綸通反編譯密碼是多少 瀏覽:201
51單片機有40個外部引腳 瀏覽:956
山西撥號伺服器雲空間 瀏覽:714
python中階乘怎麼計算 瀏覽:530
linux查看塊大小 瀏覽:554
空調壓縮機壓力低 瀏覽:184
pdf怎麼復制粘貼文字 瀏覽:575