我们可以将其分为两步(跳舞),使其变得易于管理
可管理的部分包括将目标文本字段减少为10行乘8列
这意味着每个骰子只需要80乘6行代码,总共需要6720行代码。不太好,但可以复制并粘贴您的心动
在我们的原始代码顶部,您会看到没有意义的悬停方法
像这样按住鼠标按钮并在目标上释放
我们在可以使用onMouseClicked
的目标区域中使用了onMouseReleased
@FXML
private void onHover(){
t4.setText(s4.getText());
}
String move;// needs to be global
@Override
public void initialize(URL url,ResourceBundle rb) {
s6.setOnMouseClicked((MouseEvent e)->{
move = s6.getText();
//s6.setVisible(false);
});
t1.setOnMouseReleased((MouseEvent event)->{
if(s6.isVisible()){
t1.setText(move);
s6.setVisible(false);
}
});
t2.setOnMouseReleased((MouseEvent e)->{
if(s6.isVisible()){
t2.setText(move);
s6.setVisible(false);
}
});
快乐的粘贴和粘贴哈哈
,
最初的问题涉及使用鼠标拖放来模拟Toss Word的手动播放。
这种拖放方法效果不佳,因此这是新方法
该游戏是Krack Games于1948年复制的作品,由Adie E. Giessow编写。
掷字有14个骰子,骰子上的字母如下。
d1 =“ GHDCEI”; d2 =“ IKLHIG”; d3 =“ TARSMV”; d4 =“ EYIUAO”; d5 =“ SABODY”;
d6 =“ BACEFD”; d7 =“ MNKLIT”; d8 =“ LMONIP”; d9 =“ IEOHRF”; d10 =“ MEORSN”;
d11 =“ EAXWYZ”; d12 =“ SEAUWT”; d13 =“取消”; d14 =“ PROSTQ”;
折腾字规则
玩家轮流滚动字母骰子,并从所得字母中形成单词。单词必须至少包含3个字母,并且没有专有名称。对于构成单词的每个字母得分一分。奖励:所有14个字母的使用计数为25,而不是14。奖励:“ GAME”一词计数为50分。
游戏设计
我们使用TextFields表示骰子和目标游戏板
我们使用最少的字符来命名这些源(s1)和目标(t1)
我们使用“鼠标单击”事件来模仿将骰子字母放置在目标游戏板上的情况
然后,我们使用On Mouse Pressed Event允许删除Dice字母,以便将其放置在新位置
游戏开始后,我们使用布尔PLAY = false来禁止掷骰子
为了模拟掷骰子,我们使用随机数生成器和一个线性lambda
要选择Dice,我们将一个lambda表达式放入initialize(URL url,ResourceBundle rb)
这似乎让Dice的选择过程充当了侦听器
BIG回归到目标游戏板设计,因为每个TextField需要117行代码
我们将目标玩板减少到10行乘8列,以便为玩板上的每个TextField制作大约9360行非常冗余的代码
如果有人对目标游戏板有更好的布局设计
随时发表评论!
一种非常整齐的CSS样式声明不是我的创作所用,而是在SO
上找到的
应用颜色样式时,它可以防止TextField周围的边界丢失
这是t2.setStyle(“-fx-control-inner-background:lightblue”)
我们将发布随机数生成器和Dice的选择的代码段
我们将为一个游戏板互动发布完整的代码
滚骰子
@FXML
private void onRandom() throws NoSuchFieldException{
//new Random().ints(7,1,7).forEach(System.out::println);
makeEnabled();
if(PLAY == true){
btnOK.requestFocus();
return;
}
makeVisible();
new Random().ints(1,7).forEach(ints -> {
int V = ints;
String d1 = "GHDCEI";
String S1 = String.valueOf(d1.charAt(V-1));
s1.setText(S1);
});<br>
选择骰子
@Override
public void initialize(URL url,ResourceBundle rb) {
s1.setOnMouseClicked((MouseEvent )->{
move = s1.getText();
s1.setVisible(false);
PLAY = true;
});
s2.setOnMouseClicked((MouseEvent )->{
move = s2.getText();
s2.setVisible(false);
PLAY = true;
});<br>
从游戏板上放置和删除字母
@FXML
private void onMC2(){
if(PLAY == false){
t2.setStyle("-fx-control-inner-background:red");
return;
}
t2.setText(move);
move = "";
btnOK.requestFocus();
if(t2.getText().isEmpty()){
t2.setStyle("-fx-control-inner-background:white");
}else{;
t2.setStyle("-fx-control-inner-background:lightblue");
}
// Code above error traps and places dice on Play Field
// Code below removes the dice to permit moving to alternate target location
t2.setOnMousePressed((MouseEvent event) -> {
if(t2.getText().equals(s1.getText())){
if(!s1.isVisible()){
s1.setVisible(true);
t2.setText("");
return;
}
}
if(t2.getText().equals(s2.getText())){
if(!s2.isVisible()){
s2.setVisible(true);
t2.setText("");
return;
}
}
if(t2.getText().equals(s3.getText())){
if(!s3.isVisible()){
s3.setVisible(true);
t2.setText("");
return;
}
}
if(t2.getText().equals(s4.getText())){
if(!s4.isVisible()){
s4.setVisible(true);
t2.setText("");
return;
}
}
if(t2.getText().equals(s5.getText())){
if(!s5.isVisible()){
s5.setVisible(true);
t2.setText("");
return;
}
}
if(t2.getText().equals(s6.getText())){
if(!s6.isVisible()){
s6.setVisible(true);
t2.setText("");
return;
}
}
if(t2.getText().equals(s7.getText())){
if(!s7.isVisible()){
s7.setVisible(true);
t2.setText("");
return;
}
}
if(t2.getText().equals(s8.getText())){
if(!s8.isVisible()){
s8.setVisible(true);
t2.setText("");
return;
}
}
if(t2.getText().equals(s9.getText())){
if(!s9.isVisible()){
s9.setVisible(true);
t2.setText("");
return;
}
}
if(t2.getText().equals(s10.getText())){
if(!s10.isVisible()){
s10.setVisible(true);
t2.setText("");
return;
}
}
if(t2.getText().equals(s11.getText())){
if(!s11.isVisible()){
s11.setVisible(true);
t2.setText("");
return;
}
}
if(t2.getText().equals(s12.getText())){
if(!s12.isVisible()){
s12.setVisible(true);
t2.setText("");
return;
}
}
if(t2.getText().equals(s13.getText())){
if(!s13.isVisible()){
s13.setVisible(true);
t2.setText("");
return;
}
}
if(t2.getText().equals(s14.getText())){
if(!s14.isVisible()){
s14.setVisible(true);
t2.setText("");
return;
}
}
});
}<br>
一次,我们正在考虑使用一种过程来从掷骰子的结果中生成可能的单词。这是从骰子滚动生成搜索组合的代码。
然后针对带有流的字典运行
我们没有将其纳入游戏中,似乎击败了游戏的想法
认为是
构建搜索词的代码
Private Void buildSearchWords(){
String W = "ILRYADIIEMASHT".toLowerCase();
int L = W.length();
ArrayList<String> rearange = new ArrayList<>();
for(int i = 1; i <= L; i++){
String firstLetter = W.substring(0,i);
String endLetter = W.substring(L - (L-i),L);
String endLetterNew = W.substring(L-i);
StringBuilder sb = new StringBuilder(W);
sb.replace(0,i,endLetterNew);
sb.replace(L-i,L,firstLetter);
rearange.add(sb.toString());
}
for(int X = 0; X < rearange.size();X++){
String A = rearange.get(X);
txaInput.appendText(A);
txaInput.appendText(" ");
}
要与字典进行比较的代码
List<String> dictionary = Arrays.asList(dictionaryArray);
ArrayList<String> list = new ArrayList<>();
int W = txtMonitor.getText().length();
String newFirstLetter = txtMonitor.getText().substring(0,1).toLowerCase();
String newEndLetter = txtMonitor.getText().substring(W - 2,W);
}
dictionary.stream().filter(s -> s.startsWith(searchString)
|| s.startsWith(nF,0)
&& s.length() > 1 && s.length() <= W+3
&& s.endsWith(nE))
.forEach(list :: add);
本文链接:https://www.f2er.com/3142258.html