请问快乐大本营谁是卧底底这个游戏设置完形象后按哪里

已解决问题
朋友一起聚会可以玩的小游戏有什么?类似于谁是卧底和天黑请闭眼之类的。
提问时间: 12:18:59
浏览次数:571
后来上大学的时候无意间怀念起小时玩的游戏,通过一点点印象线索才把这台机器查出来。&br/&&br/& 隐约记得是从机器肚子里塞光盘,每张光盘上都有数百个游戏,老爷爷用一个小本子记录下了每张光盘上的游戏名称与相应的四位代码。&br/&&br/& 说起两个人一起哈啤的游戏,就不得不提我最爱的两个&& 《热血硬派-国夫的挽歌》和《大盗伍佑卫门2》。很多,有一期跟各种大师对决,抓子啊,弹围棋啊,拍画片啊,抽乌龟啊之类的,但是其实自己玩不容易HIGH,还不如杀人游戏热络@_@三角形拔河。
答案创立者
以企业身份回答&
快速解决你的电商难题
店铺优化排查提升2倍流量
擅长&nbsp 店铺优化
您可能有同感的问题谁是卧底破解版|谁是卧底之杀人游戏百度版下载 1.0.18 官网安卓版-新云软件园
谁是卧底之杀人游戏百度版 1.0.18 官网安卓版
您现在的位置: -
- 谁是卧底之杀人游戏百度版下载
请输入预约的手机号码
947人已预约此游戏
好评:88.36%
坏评:11.64%
谁是卧底之杀人游戏是一款火爆的多人社交益智休闲游戏,游戏中玩家将体验一场场刺激惊奇的趣味解谜之旅,做大侦探,揪出杀人凶手!游戏超好玩,集合交友、逻辑推理、辩论于一体!玩家可以在游戏中可以找到志同道合的好友,扮演各式各类不同的角色,运用特殊能力,经过逻辑推理分析一起找出隐藏在暗中的卧底,取得最终的胜利。
1、超萌形象三头身,拥有千种服饰,亿万组合打造全网独一无二的你!
2、提供了众多模式,炫酷的特效,满足你不同的需求!
3、真正的多人参与,比拼智力与运气的游戏!
4、三大阵营,十余种职业!每种职业都有不同玩法与技能!
5、游戏独创最新模式&怒火街头&焚世之火与秩序之烟带你领略超爽的体验!
6、第一款真正的社交游戏!与众多伙伴永结羁绊!
相关版本下载
14.54 MB44 MB29.8 MB28.61 MB
下载谁是卧底之杀人游戏百度版 1.0.18 官网安卓版
其他下载地址:
软件排行榜
12345678910
热门关键字
关注新云安卓游戏网本周下载排行榜
您要反馈什么?
您的机型:
请选择品牌
选择手机型号
错误类型:
举报原因:  报名从速!
主帖获得的天涯分:0
楼主发言:6次 发图:0张 | 更多
  噢  
  一个人玩不了啊!还有人波?
  嗯?  
  怎么玩?  
  可以微信玩  
  加我一个  
  怎么玩啊……  
  报个名先  
  纳尼?
  怎么玩
  怎么玩呀~  
  公布暂行规则:  主持人将通过站短方式组织游戏,被淘汰者(包括被冤杀者和被揪出的卧底)将自动退出游戏,获胜者将获得豁免权(卧底3次非卧底1次),围观群众可参与竞猜,猜出卧底者自动获得游戏资格,卧底者可邀请助拳(仅限一个马甲)帮助干扰视线,卧底者获胜,则助拳自动获得游戏资格,每次游戏不超过7人,其余规则不变!  欢迎补充指正,谢谢
  第1轮游戏开始  作者:快来膜拜我 时间: 21:47:55  作者:石头小笑 时间: 22:01:36  作者:呼噜呼噜变 时间: 22:02:01  作者:115欣婆 时间: 22:02:28  作者:公马4849 时间: 22:03:41  作者:杰西卡卡卡卡卡卡 时间: 22:04:36  作者:银头发本命 时间: 22:16:35
  消息发送完毕,  游戏开始!
  ≥﹏≤手机党情何以堪。。楼主可以用微信玩嘛?  
  作者:杰西卡卡卡卡卡卡 时间: 22:39:16  ≥﹏≤手机党情何以堪。。楼主可以用微信玩嘛?  ——————————————————————  手机也可以查得到啊,回到主页面,点击右上角那个灰色头像,点击第四项站内短消息
  带我一个!
<span class="count" title="
<span class="count" title="万
请遵守言论规则,不得违反国家法律法规回复(Ctrl+Enter)我的谁是卧底游戏代码总结
谁是卧底游戏代码总结
和朋友在台北跨年,记得在她的iPhone上玩了一个带拍照功能版本的谁是卧底。回家在正月十五前写出来一个复刻版,在聚会上玩。
一群人被发放两个词语,其中有一个卧底,拿到两个词语中的一个,另外的人皆是平民,拿到另外一个词语;
按照顺序,每个人开始用一些话描述自己的词语,一轮描述结束,众人投票,指出可能是卧底的那个人,如果指出卧底,平民胜利,如果指出平民,相应的平民出局,游戏继续下一轮描述,直到卧底被指出,最后平民胜利;或者仅剩一个平民和卧底,那么卧底获胜。
游戏代码解析
代码已在github开源,地址为:
现在改动中的版本在这个useful分支中:
MainActivity.制定游戏方案
最初的版本是在MainActivity中只有一个点击开始的按钮,之后跳转到Game.Activity.
后来添加了自定义词语和玩家数量的功能。
总的来说是制定游戏方案,是几个人玩,有无自定义词语。
具体的实现方案是:在startActivity()中添加一个包含Bundle的Intent对象。
以下函数是“开始游戏”对应的onClick事件。它主要的目的是携带Intent开始GameActivity.
public void onClick(View view){
Intent i=new Intent(this,Game.class);
Bundle digitalBundle=new Bundle();
if (editText.getText()!=null){
user_count=Integer.parseInt(editText.getText().toString());
if (linearLayout.isLaidOut()){
st_man=man_word.getText().toString();
Log.d("MainA","&&&&&&&&&&&the st_man is :"+st_man);
st_spy=spy_word.getText().toString();
digitalBundle.putString("man_word",st_man);
digitalBundle.putString("spy_word",st_spy);
digitalBundle.putInt("user_count",user_count);
i.putExtras(digitalBundle);
startActivity(i);
View.VISIBLE、INVISIBLE、GONE的区别:
View.VISIBLE:可见
View.INVISIBLE:不可见,但这个View仍然会占用在xml文件中所分配的布局空间,不重新layout
View.GONE:不可见,但这个View在ViewGroup中不保留位置,会重新layout,不再占用空间,那后面的view就会取代他的位置
activity_main.xml
&?xml version="1.0" encoding="utf-8"?&
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:layout_gravity="center_horizontal"
tools:context="com.example.t26wodiv1.MainActivity"&
android:id="@+id/text_intro"
android:gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/introduce" /&
android:layout_below="@+id/text_intro"
android:id="@+id/edit_text_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="4"/&
android:orientation="vertical"
android:id="@+id/main_empty_layout"
android:layout_below="@+id/edit_text_main"
android:visibility="invisible"
android:layout_width="match_parent"
android:layout_height="200dp"&
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/custom_word_intro"/&
android:id="@+id/spy_word"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="卧底的词语"
android:text="笨蛋"/&
android:id="@+id/man_word"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="平民的词语"
android:text="蠢货"/&
android:id="@+id/start_game_button"
android:layout_below="@+id/main_empty_layout"
android:layout_centerHorizontal="true"
android:onClick="onClick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始游戏"/&
android:id="@+id/custom_game"
android:layout_below="@+id/main_empty_layout"
android:layout_toRightOf="@+id/start_game_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自定义游戏"/&
Game.java 游戏的主体
有必要解释的一些部分:
有许多import语句在下方的代码中是多余的,因为没有优化包导入。
之前的版本使用Dialog来告诉用户他的词语,后来直接采用Toast,所以有关于Dialog的一些无效导包。
关于RecyclerView的导入,请参考:郭霖的博客,RecyclerView的使用详解。Game.java里的很大部分依赖RecyclerView的一些特性来达成,例如点击,长按,瀑布流的瓷片效果。这里就不解释StaggeredHomeAdapter的代码,大神的解释更加准确。
有一个比较笨的逻辑是:在取得来自MainActivity的Intent后,判断spy_word是否为“笨蛋”;这实在是下下策,这样写的原因是,没办法确切知道用户是否自定义词语了,所以默认卧底词语输入框里的“笨蛋”二字当作一个flag传递给Game的私有静态变量SPY_WORD,如果SPY_WORD仍旧是“笨蛋”(这里注意使用了equals()语句,而非”==“,这是java基础的字符串的知识)说明用户没有自定义词语,然后queryDatabase,查询数据库的数据,选一个随机的词语;如果没有equals,则说明变量有被用户改动过,从而直接将其赋值给SPY_WORD。
queryDatabaseForAWord()是一个从数据库随机抽取一个词语的方法。
package com.example.t26wodiv1;
import android.app.A
import android.content.DialogI
import android.content.I
import android.database.C
import android.database.sqlite.SQLiteD
import android.graphics.B
import android.graphics.BitmapF
import android.net.U
import android.os.B
import android.os.E
import android.provider.MediaS
import android.support.annotation.DrawableR
import android.support.annotation.N
import android.support.v4.app.FragmentA
import android.support.v7.app.AlertD
import android.support.v7.widget.GridLayoutM
import android.support.v7.widget.RecyclerV
import android.util.L
import android.view.V
import android.widget.B
import android.widget.ImageV
import android.widget.T
import java.io.F
import java.io.IOE
import java.text.SimpleDateF
import java.util.ArrayL
import java.util.D
import java.util.L
import java.util.R
import static android.R.attr.
import static android.R.attr.defaultH
import static android.R.attr.switchMinW
import static com.example.t26wodiv1.DBHelper.TABLE_COLUMN_1;
import static com.example.t26wodiv1.DBHelper.TABLE_COLUMN_2;
import static com.example.t26wodiv1.DBHelper.TABLE_NAME;
* Created by paul on 2/5/17.
public class Game extends Activity {
private RecyclerView mRecyclerV
private List&String& mD
private StaggeredHomeAdapter mA
private int RANDOM_PAIR=(int)(0+Math.random()*12);
private static int RANDOM_USER=0;
private static
String MAN_WORD=null;
private static
String SPY_WORD=null;
DBHelper mydb=new DBHelper(this);
private SQLiteDatabase dbR
private int user_count=4;
private Button query_
private Button finish_
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
query_button= (Button) findViewById(R.id.game_btn_query);
query_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(Game.this,"玩家
"+(RANDOM_USER+1)+"
是卧底!!",Toast.LENGTH_SHORT).show();
finish_button= (Button) findViewById(R.id.game_btn_finish);
finish_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
extras=getIntent().getExtras();
user_count=extras.getInt("user_count");
MAN_WORD=extras.getString("man_word");
SPY_WORD=extras.getString("spy_word");
if ((SPY_WORD.equals("笨蛋"))||(SPY_WORD.equals(""))){
queryDatabaseForAWord();
shapeUsersInterface();
RANDOM_USER=(int)(Math.random()*user_count);
mRecyclerView= (RecyclerView) findViewById(R.id.id_recyclerview);
mRecyclerView.setLayoutManager(new GridLayoutManager(this,3));
mAdapter=new StaggeredHomeAdapter(this,mDatas);
mRecyclerView.setAdapter(mAdapter);
initEvent();
private void initEvent(){
mAdapter.setOnItemClickListener(new StaggeredHomeAdapter.OnItemClickListener() {
public void onItemClick(View view, int position) {
if (position==RANDOM_USER){
Toast.makeText(Game.this,"玩家 "+(position+1)+"的词语是:"+SPY_WORD,Toast.LENGTH_SHORT).show();
Toast.makeText(Game.this,"玩家 "+(position+1)+"的词语是:"+MAN_WORD,Toast.LENGTH_SHORT).show();
public void onItemLongClick(View view, int position) {
if (position==RANDOM_USER){
Toast.makeText(Game.this,"玩家"+(position+1)+"
是卧底,游戏结束",Toast.LENGTH_SHORT).show();
Toast.makeText(Game.this,"玩家"+(position+1)+"
不是卧底,游戏继续",Toast.LENGTH_SHORT).show();
private void queryDatabaseForAWord() {
dbReader=mydb.getReadableDatabase();
Cursor cursor=dbReader.query(TABLE_NAME,null,null,null,null,null,null);
cursor.moveToPosition(RANDOM_PAIR);
Log.d("GameA","&&&&&&& RANDOM_PAIR is:
"+RANDOM_PAIR);
MAN_WORD=cursor.getString(cursor.getColumnIndex(TABLE_COLUMN_1));
SPY_WORD=cursor.getString(cursor.getColumnIndex(TABLE_COLUMN_2));
cursor.close();
dbReader.close();
protected void shapeUsersInterface(){
mDatas=new ArrayList&&();
for (int i=1;i&=user_i++){
mDatas.add(""+i);
附带的game的xml布局文件如下:
&?xml version="1.0" encoding="utf-8"?&
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.t26wodiv1.Game"&
android:id="@+id/recycler_view_frame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.9"&
android:id="@+id/id_recyclerview"
android:divider="#ffff0000"
android:dividerHeight="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/recycler_view_frame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="0.1"&
android:id="@+id/game_btn_query"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="看看卧底"/&
android:id="@+id/game_btn_finish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="结束这盘"/&
DBHelper.java 游戏的后台,卧底和平民的词语来源
这一片的代码也是从某个地方抄来并改动的,来源是tutorialspoint的SQLite例程。
一些解释:SQLite入门的话,请看《第一行代码》写的吧,这里说一下简单地初始化SQLiteOpenHelper之后的思路:
一个表,名字是”wordlist“
两个柱,分别是word1,word2;对应平民或者卧底。
两组数据,分别是COLUMNS_ODD,COLUMN_EVEN,对应平名或者卧底的词语,实际上准确的对应谁,都无所谓。
然后在onCreate中循环填入11次。使用insertDefaultWords(i,db);
public class DBHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME="myDatabaseName.db";
public static final String TABLE_NAME="wordList";
public static final String TABLE_COLUMN_1="word1";
public static final String TABLE_COLUMN_2="word2";
public static final String[] COLUMN_ODD={"牛奶","纸巾","水盆","芥末","洗发露","锦寒","国征","梁山伯和祝应台","火锅","电动车","粉丝"};
public static final String[] COLUMN_EVEN={"豆浆","手帕","水桶","辣椒","护发素","瑞瑞","华新","罗密欧和朱丽叶","冒菜","摩托车","米线"};
public DBHelper(Context context) {
super(context,DATABASE_NAME, null, 1);
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table "+TABLE_NAME+"(id integer primary key, "+TABLE_COLUMN_1+" text,"+TABLE_COLUMN_2+" text)");
for (int i=0;i&=10;i++){
insertDefaultWords(i,db);
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
private boolean insertDefaultWords(int i,SQLiteDatabase db){
ContentValues contentValues=new ContentValues();
contentValues.put(TABLE_COLUMN_1,COLUMN_ODD[i]);
contentValues.put(TABLE_COLUMN_2,COLUMN_EVEN[i]);
db.insertOrThrow(TABLE_NAME,null,contentValues);
return true;
Game界面的适配器,非常好用的一个比listView更好的控件
代码如下,清希的解释请看hongyang的博客,不敢自己抄袭大神的解释,也不抄袭复制写劣质的文章了,虽然这篇就挺劣质的。
package com.example.t26wodiv1;
import android.content.C
import android.view.LayoutI
import android.view.V
import android.view.ViewG
import android.widget.TextV
import java.util.ArrayL
import java.util.L
import android.support.v7.widget.RecyclerV
public class StaggeredHomeAdapter extends RecyclerView.Adapter&StaggeredHomeAdapter.MyViewHolder& {
private List&String& mD
private LayoutInflater mI
private List&Integer& mH
public interface OnItemClickListener
void onItemClick(View view, int position);
void onItemLongClick(View view, int position);
private OnItemClickListener mOnItemClickL
public void setOnItemClickListener(OnItemClickListener mOnItemClickListener)
this.mOnItemClickListener = mOnItemClickL
public StaggeredHomeAdapter(Context context, List&String& datas)
mInflater = LayoutInflater.from(context);
mHeights = new ArrayList&Integer&();
for (int i = 0; i & mDatas.size(); i++)
mHeights.add( (int) (100 + Math.random() * 300));
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
MyViewHolder holder = new MyViewHolder(mInflater.inflate(
R.layout.item_staggered_home, parent, false));
public void onBindViewHolder(final MyViewHolder holder, final int position)
ViewGroup.LayoutParams lp = holder.tv.getLayoutParams();
lp.height = mHeights.get(position);
holder.tv.setLayoutParams(lp);
holder.tv.setText(mDatas.get(position));
if (mOnItemClickListener != null)
holder.itemView.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
int pos = holder.getLayoutPosition();
mOnItemClickListener.onItemClick(holder.itemView, pos);
holder.itemView.setOnLongClickListener(new View.OnLongClickListener()
public boolean onLongClick(View v)
int pos = holder.getLayoutPosition();
mOnItemClickListener.onItemLongClick(holder.itemView, pos);
removeData(pos);
return false;
public int getItemCount()
return mDatas.size();
public void addData(int position)
mDatas.add(position, "Insert One");
mHeights.add( (int) (100 + Math.random() * 300));
notifyItemInserted(position);
public void removeData(int position)
mDatas.remove(position);
notifyItemRemoved(position);
class MyViewHolder extends RecyclerView.ViewHolder
public MyViewHolder(View view)
super(view);
tv = (TextView) view.findViewById(R.id.id_num);
一些看似简单的过程中的薄弱环节
随机数的生成
(数据类型)(最小值+Math.random()*(最大值-最小值+1))
(int)(1+Math.random()*(10-1+1))
从1到10的int型随数
java强制类型转换:
x = (int)34.56 + (int)11.2;
// 丢失精度
//output:x=45;
//可以看出(int)只取整数部分;
onClickListener 的不同用法(来自另外一位的博客,忘记来源,如有侵权请告知):
1.使用接口,继承Button的监听方法:
。。。。。 implements Button.OnClickListener{
my_button.setOnClickListener(this);
2.使用接口,继承view类的监听方法:
... implements View.OnClickListener{
imageView1.setOnClickListener(this);
myButton.setOnClickListener(this);
3.不用接口,在类内部直接实现监听:
myButton.setOnClickListener(new OnClickListener(){
public void onClick(View v){
Toast.....show();
或者,不使用匿名实例,也可以定义一个具体的实例:
class btn_listener implements Button.OnClickListener
public void onClick(View v) {
// TODO Auto-generated method stub
btn_listener bl = new btn_listener();
btn_say_hello.setOnClickListener(bl); //bl是类btn_listener的实例,而btn_listener为监听方法的接口
} //因此设置监听的参数只需传本类的对象即可
大概第一篇完整的android某个项目的开发记录就这样了,其实过程中遇到的问题远不止描述的这么清晰,因为第一版本还有先拍照后看看自己单词的实现,但是写入文件流和为ImageView设置src的一套下来bug很多,而我对java IO ,File,stream部分都不太熟悉。 从网上也有抄ImageThumbnail.java的一些源码来实现第一版的功能,最后还是放弃拍照功能,但在工程中还保留了这一部分源码。
新书上路,能学多少,能总结多少是多少吧。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 谁是卧底游戏规则 的文章

 

随机推荐