編程火柴
⑴ 怎麼用編程做出火柴人戰爭遺產
1、首先打開編程軟體並規制好模板。
2、其次將火柴人戰爭遺產游戲的源代碼進行解析為具體的數據信息。
3、最後按照解析好的數據信息進行編程即可。
⑵ 如何用Flash CS4製作簡單的火柴人!!!
你好,你所說的火柴人,在十年前,相當火的。有高手做出來了一系列的火柴人動畫的。最早開始做火柴人的,應該是閃客帝國的小東瓜,他當時做的一個火柴武俠,橫版式地單人闖關,相當出色。他出過一本學習flash4的書,我就是買了他的書開始學flash的。
後來的人,都是模仿他做的,但也有各種創新。
這種火柴人,看似簡單,實則不然。
首先,做出火柴人。
這個火柴人,實際上頭、軀干、兩臂、兩腿,都是獨立的,一個火柴人,實際是這些元件的組合。每個部件畫起來並不復雜。
然後每個動作都是由這些元件進行動作動畫,甚至是逐幀動畫。仔細地調動畫的時間,各部位的方位,才能做得出來,很費時間的。有時還要加上復雜的編程的。
⑶ 我打算努力學習編程然後製作一個憤怒的火柴人小游戲上傳到4399然後以此為生你們覺得我靠譜嗎
真的很不靠譜。因為現在火柴人小游戲多的要死,你根本站不了一席之地。就算是什麼憤怒的火柴人,有什麼裝備的,你覺得會有人來玩嗎?或者說,你覺得你已經能把游戲做到令人愛不釋手,整天都想來玩了嗎?所以說,如果你想做一個游戲,主要就是要先練習,先做一個基礎的火柴人小游戲,再在這個基礎上逐漸增添一些裝備什麼的,然後發現問題並改正,才能造出一款好的小游戲。至於靠不靠譜嘛,我是覺得成功的概率是非常非常小的——很顯然,不靠譜。但這都是我個人的意見。但是一切皆有可能,不試試怎麼知道呢?或許,你就是那些成功者之中的一位呢?希望幾個月以後,我能在4399小游戲上看到你的游戲!
PS:4399上有好多叫憤怒的火柴人的游戲,所以,我個人還是建議你起一個與眾不同的名字。
⑷ 誰拿最後一根火柴 程序設計 大家幫幫忙!
這個道理和編程無關,每人最多取4根,
1+4=5
21=5*4+1
也就是說,只要保證每輪兩方之和是5,那麼4輪後取走20根,最後先取的人必定取最後一根。
第二題:需要用遞推的方式,計算所有必勝必輸的狀態,然後保證每次取火柴都讓對方到達必輸狀態。
所謂必輸就是只剩最後一根,或者無論怎麼取後的結果都是必勝。
所謂必勝,就是可以對方到達必輸狀態的情況。
程序如下:
import java.io.*;
public class Picker {
// 火柴堆的輸贏狀況
private final static int EMPTY=0; // 這種排列不可能出現,如108
private final static int UNKNOWN=1; // 尚未計算出
private final static int WIN=2; //必勝
private final static int LOSE=3; //必輸(如果對方夠聰明)
// 用數組,保存每種火柴堆排列的輸贏狀態,下標為排列,如357, 111, 001, 100等等
private int[] status;
public Picker() {
// 初始化狀態數組,排除所有不可能出現的情況
status = new int[358]; // 0 - 357
int i,j,k;
for (i=0; i<=3; i++) {
for (j=0; j<=5; j++) {
for (k=0; k<=7; k++) {
status[i*100+j*10+k] = UNKNOWN;
}
}
}
// 已知 100, 010, 001必輸
status[1]=LOSE;
status[10]=LOSE;
status[100]=LOSE;
// 所有能使對方到達上述三個狀態的排列都是必贏的
markWin(1);
markWin(10);
markWin(100);
// 遞推計算,直至357的情況被計算出來
while (status[357] == UNKNOWN) {
//找到第一個沒有計算的
int node=2;
for (node = 2; node<357; node++) {
if (status[node] == UNKNOWN) break;
}
// 它的所有下個狀態肯定都是必贏,不然以前就能算出。
status[node] = LOSE;
// 所有能使對方到達這個狀態的排列都是必贏的
markWin(node);
}
}
// 所有能使下個狀態變必輸的排列都是必贏的
private void markWin(int node) {
// 假設node為必輸
// 每堆的數量分別為i,j,k
int i = node / 100;
int j = node / 10 % 10;
int k = node % 10;
// 先是第一堆,可能為i+1, i+2, ..., 3
for (int i1 = i+1; i1 <= 3; i1++) {
status[i1*100+j*10+k] = WIN;
}
// 第二堆
for (int j1 = j+1; j1 <= 5; j1++) {
status[i*100+j1*10+k] = WIN;
}
// 第三堆
for (int k1 = k+1; k1 <= 7; k1++) {
status[i*100+j*10+k1] = WIN;
}
}
// 查找所有可能的一次取火柴後的排列,找出其中必輸的狀態,把這個作為自己的走法
public int getWinPick(int node) {
//每堆的數量分別為i,j,k
int i = node / 100;
int j = node / 10 % 10;
int k = node % 10;
// 先是第一堆,可能留下0, 1, ..., i-1
for (int i1 = 0; i1 < i; i1++) {
if (status[i1*100+j*10+k]==LOSE) return i1*100+j*10+k;
}
// 第二堆
for (int j1 = 0; j1 < j; j1++) {
if (status[i*100+j1*10+k]==LOSE) return i*100+j1*10+k;
}
// 第三堆
for (int k1 = 0; k1 < k; k1++) {
if (status[i*100+j*10+k1]==LOSE) return i*100+j*10+k1;
}
// 沒有找到,那麼先頑強抵抗一下,只取一根
if (i>0) return (i-1)*100+j*10+k;
else if (j>0) return (j-1)*10+k;
else return k-1;
}
public static void main(String[] args) throws Exception {
Picker picker = new Picker();
// 一開始的排列是357
int node = 357;
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
while (node > 0) {
// 計算機先
System.out.print("Now is "+node);
node = picker.getWinPick(node);
System.out.println(", I pick to "+node);
if (node == 0) {
System.out.println("I lose");
return;
}
// 對方再取
System.out.println("Now is your turn: ");
String input = stdin.readLine();
int node1 = 0;
try {
node1 = Integer.parseInt(input);
} catch (Exception e) {
System.out.println("Invalid input, you lose");
break;
}
// 這里沒有判斷取的是否合法,即node和node1之間是否僅差一位數字
if ( node1==0 ) {
System.out.println("You lose");
}
node = node1;
}
}
}
這個程序只是例子,是說明演算法,沒有判斷輸入的合法性,所以不能一直輸入2的,人嘛,自己也遵循一下游戲規則吧。
另外,稍做改動,如果不利,計算機不會馬上認輸了。
⑸ 設計C語言程序,游戲規則:21根火柴,一次只能拿走1或2或3或4根,不能不拿不能棄權,人與電腦比賽。
#include<stdio.h>
int f(int n){
switch(n){
case 0:return 4;
case 4:return 3;
case 3:return 2;
case 2:return 1;
}
return 0;
}
void main(){
int m=21,n;
do{
scanf("%d",&n);
m-=n;
n=f(m%5);
printf ("%d\n",n);
m-=n;
}while(m>1);
}
其實有更簡單的,如下:
#include<stdio.h>
void main(){
int n;
do{
scanf("%d",&n);
printf ("%d\n",5-n);
}while(1);
}
⑹ java 四人玩火柴棍游戲
/**
* 四人玩火柴棍游戲,每一次都是三個人贏,一個人輸。輸的人要按贏者手中的火柴 數進行賠償,即贏者手中有多少根火柴棍,輸者就賠償多少根。現知道玩過四次後,
* 每人恰好輸過一次, 而且每人手中都正好有16根火柴。問此四人做游戲前手中各有 多少根火柴? 編程解決此問題
* 我的理解
* 1.4個人最後的火柴數都為16 則4個人其實並沒有太多主體的概念。4個人可以是任何人 要辨別4個人可以假設。
* A 是第四輪輸的人 B是第三輪輸的人 C是第二輪輸的人 D是第一輪輸的人
* 2.依據以上判斷我們可以反過來理解為 4個的初始狀態分別為16 16 16 16 每一次都是三個人輸,一個人贏,輸的人把自己的一半給贏的一方
*
*/
public class Game {
public static void main(String[] a) {
int n1 = 16, n2 = 16, n3 = 16, n4 = 16;
// 第4輪
n1 += (n2 + n3 + n4) / 2;
n2 /= 2;
n3 /= 2;
n4 /= 2;
// 第3輪
n2 += (n1 + n3 + n4) / 2;
n1 /= 2;
n3 /= 2;
n4 /= 2;
// 第2輪
n3 += (n1 + n2 + n4) / 2;
n1 /= 2;
n2 /= 2;
n4 /= 2;
// 第1輪
n4 += (n1 + n2 + n3) / 2;
n1 /= 2;
n2 /= 2;
n3 /= 2;
System.out.println("四人做游戲前手中各有 a:" + n1 + " b:" + n2 + " c:" + n3 + " d:" + n4);
}
}
⑺ C語言編程問題常勝將軍就是取火柴的問題求代碼 本人C初學者。大神請用最簡單的編程回答 謝謝 在
大致說一下思路:
如果 想拿到最後一根火柴,最後 需要保證電腦拿的時候 至少 有5根
這樣不管電腦 拿幾根(只能1-4) 剩下的 人都可以一次拿完。
同理,要保證最後兩次 有 5 根 , 則 需要保證電腦 倒數第2次 拿的時候 至少10根
以此類推 15 根 20根
所以 人第一次拿 1 根 第二次 保證 余 15根 第三次 余 10根 第四次 余 5
第五次 拿完 也就是拿到最後一根了。
程序 還是你自己 來寫吧 不然 學不到什麼東西了
望採納~
⑻ vb編程語言編寫一個抽火柴程序
Option Explicit
Dim a%, he%
Private Sub Command1_Click()
a = Val(Text1.Text)
If a = 1 Then
MsgBox "電腦選數為:4 和為5" & "請繼續填寫", 0, "電腦提示"ElseIf a = 2 Then
MsgBox "電腦選數為:3 和為5" & "請繼續填寫", 0, "電腦提示"
ElseIf a = 3 Then
MsgBox "電腦選數為:2 和為5" & "請繼續填寫", 0, "電腦提示"ElseIf a = 4 Then
MsgBox "電腦選數為:1 和為5" & "請繼續填寫", 0, "電腦提示"
End If
If Text1.Text = "" Then
MsgBox " 請輸入1-4的整數", 0, "電腦提示"
End If
End SubPrivate Sub Command2_Click()
If a = 1 Then
MsgBox "電腦選數為:4 和為10" & "請繼續填寫", 0, "電腦提示"ElseIf a = 2 Then
MsgBox "電腦選數為:3 和為10" & "請繼續填寫", 0, "電腦提示"
ElseIf a = 3 Then
MsgBox "電腦選數為:2 和為10" & "請繼續填寫", 0, "電腦提示"ElseIf a = 4 Then
MsgBox "電腦選數為:1 和為10" & "請繼續填寫", 0, "電腦提示"
End If
If Text1.Text = "" Then
MsgBox " 請輸入1-4的整數", 0, "電腦提示"
End If
End SubPrivate Sub Command3_Click()
If a = 1 Then
MsgBox "電腦選數為:4 和為15" & "請繼續填寫", 0, "電腦提示"ElseIf a = 2 Then
MsgBox "電腦選數為:3 和為15" & "請繼續填寫", 0, "電腦提示"
ElseIf a = 3 Then
MsgBox "電腦選數為:2 和為15" & "請繼續填寫", 0, "電腦提示"ElseIf a = 4 Then
MsgBox "電腦選數為:1和為15" & "請繼續填寫", 0, "電腦提示"
End If
If Text1.Text = "" Then
MsgBox " 請輸入1-4的整數", 0, "電腦提示"
End If
End SubPrivate Sub Command4_Click()
If a = 1 Then
MsgBox "電腦選數為:4 和為20" & "你輸了哦", 0, "電腦提示"ElseIf a = 2 Then
MsgBox "電腦選數為:3 和為20" & "你輸了哦", 0, "電腦提示"
ElseIf a = 3 Then
MsgBox "電腦選數為:2 和為20" & "你輸了哦", 0, "電腦提示"ElseIf a = 4 Then
MsgBox "電腦選數為:1 和為20" & "你輸了哦", 0, "電腦提示"
End If
If Text1.Text = "" Then
MsgBox " 請輸入1-4的整數", 0, "電腦提示"
End If
End SubPrivate Sub Form_Load()
Command1.Caption = "第1輪"
Command2.Caption = "第2輪"
Command3.Caption = "第3輪"
Command4.Caption = "第4輪"
Label1.Caption = "請填入1-4的整數:"
Text1.Text = ""
End Sub
⑼ 7+4=17移動一根火柴,使等號兩邊相等。
1+7=74 把74中7的最上邊一橫改到1的上邊,編程7+7=14
7-4=17 變成7+4=11